{"$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":"D6","name":"Cohesion (LCOM4)","shortDescription":{"text":"Cohesion (LCOM4)"},"helpUri":"https://codehealth.canine.dev/dimensions/D6"},{"id":"D8","name":"Code Coverage","shortDescription":{"text":"Code Coverage"},"helpUri":"https://codehealth.canine.dev/dimensions/D8"},{"id":"D9","name":"Test Distribution","shortDescription":{"text":"Test Distribution"},"helpUri":"https://codehealth.canine.dev/dimensions/D9"},{"id":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D17","name":"Explicit Debt","shortDescription":{"text":"Explicit Debt"},"helpUri":"https://codehealth.canine.dev/dimensions/D17"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D20","name":"ADR Quality","shortDescription":{"text":"ADR Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D20"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"id":"D37","name":"Vulnerability-disclosure Policy","shortDescription":{"text":"Vulnerability-disclosure Policy"},"helpUri":"https://codehealth.canine.dev/dimensions/D37","relationships":[{"target":{"id":"CWE-1059","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1059"]}},{"id":"AC2","name":"Forms \u0026 labels","shortDescription":{"text":"Forms \u0026 labels"},"helpUri":"https://codehealth.canine.dev/dimensions/AC2"},{"id":"AC3","name":"Page structure","shortDescription":{"text":"Page structure"},"helpUri":"https://codehealth.canine.dev/dimensions/AC3"},{"id":"AC5","name":"ARIA correctness","shortDescription":{"text":"ARIA correctness"},"helpUri":"https://codehealth.canine.dev/dimensions/AC5"},{"id":"AC6","name":"Visual \u0026 motion safety","shortDescription":{"text":"Visual \u0026 motion safety"},"helpUri":"https://codehealth.canine.dev/dimensions/AC6"},{"id":"AC7","name":"A11y enforcement","shortDescription":{"text":"A11y enforcement"},"helpUri":"https://codehealth.canine.dev/dimensions/AC7"},{"id":"AX10","name":"Code composition","shortDescription":{"text":"Code composition"},"helpUri":"https://codehealth.canine.dev/dimensions/AX10"},{"id":"AX9","name":"CQS / query purity","shortDescription":{"text":"CQS / query purity"},"helpUri":"https://codehealth.canine.dev/dimensions/AX9"},{"id":"DM2","name":"Strongly-typed ids","shortDescription":{"text":"Strongly-typed ids"},"helpUri":"https://codehealth.canine.dev/dimensions/DM2"},{"id":"DM5","name":"Encapsulated state","shortDescription":{"text":"Encapsulated state"},"helpUri":"https://codehealth.canine.dev/dimensions/DM5"},{"id":"DM6","name":"Domain \u2194 infrastructure boundary","shortDescription":{"text":"Domain \u2194 infrastructure boundary"},"helpUri":"https://codehealth.canine.dev/dimensions/DM6"},{"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":"P12","name":"CI test-gate honesty","shortDescription":{"text":"CI test-gate honesty"},"helpUri":"https://codehealth.canine.dev/dimensions/P12"},{"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":"R1","name":"Type Safety","shortDescription":{"text":"Type Safety"},"helpUri":"https://codehealth.canine.dev/dimensions/R1"},{"id":"R10","name":"Code Duplication","shortDescription":{"text":"Code Duplication"},"helpUri":"https://codehealth.canine.dev/dimensions/R10"},{"id":"R2","name":"Cyclomatic Complexity","shortDescription":{"text":"Cyclomatic Complexity"},"helpUri":"https://codehealth.canine.dev/dimensions/R2"},{"id":"R3","name":"Large Files","shortDescription":{"text":"Large Files"},"helpUri":"https://codehealth.canine.dev/dimensions/R3"},{"id":"R7","name":"Dead Code","shortDescription":{"text":"Dead Code"},"helpUri":"https://codehealth.canine.dev/dimensions/R7"},{"id":"R9","name":"Circular Imports","shortDescription":{"text":"Circular Imports"},"helpUri":"https://codehealth.canine.dev/dimensions/R9"},{"id":"S1","name":"Web-Security Posture","shortDescription":{"text":"Web-Security Posture"},"helpUri":"https://codehealth.canine.dev/dimensions/S1"},{"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":"Intrinsifier.generateStaticIntrinsic (cyclomatic 374): Intrinsifier.generateStaticIntrinsic has cyclomatic complexity 374 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":1362}}}],"partialFingerprints":{"codehealthFindingId/v1":"8811c39903efc30a9b5d57dafb3a38efeca70ec1efe2cf6f89e260736009dea7"}},{"ruleId":"D1","level":"warning","message":{"text":"Instruction.deserialize (cyclomatic 240): Instruction.deserialize has cyclomatic complexity 240 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/instruction.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"d342f9c3eced66dd10e12a828c4c31147c09700a245dc1d1bf0c4ada66874e23"}},{"ruleId":"D1","level":"warning","message":{"text":"Types.performSubtypeCheck (cyclomatic 195): Types.performSubtypeCheck has cyclomatic complexity 195 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/types.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"a78f81650215f142d9f601ed525db0582636670fde5fc21b7acae13e31a134b1"}},{"ruleId":"D1","level":"warning","message":{"text":"TokensWriter.astToBinaryTokenType (cyclomatic 143): TokensWriter.astToBinaryTokenType has cyclomatic complexity 143 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/tokens_writer.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0199d397ab4751f9071a8ee861675a4f9cab57217a6265f8918559ce6d820f4"}},{"ruleId":"D1","level":"warning","message":{"text":"_HttpParser._doParse (cyclomatic 127): _HttpParser._doParse has cyclomatic complexity 127 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a9e62a582afa6894e235aeb2d064fb4e74f15f2253ae0583929ac32e68e00ee"}},{"ruleId":"D1","level":"warning","message":{"text":"RequirementsManifest.isSatisfied (cyclomatic 109): RequirementsManifest.isSatisfied has cyclomatic complexity 109 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/requirements.dart"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"21d80d6f8bb3507a9bd7cd87244ee8ede72d25a6df4a1eb3764fb1691afb48c5"}},{"ruleId":"D1","level":"warning","message":{"text":"ImpactData.apply (cyclomatic 100): ImpactData.apply has cyclomatic complexity 100 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":1438}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c5f22d7d0c6c108636e9890bf34410256415967976a440c4fe56ea21dc89696"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitParenthesizedExpression (cyclomatic 94): _Visitor.visitParenthesizedExpression has cyclomatic complexity 94 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_parenthesis.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d6eb18d0ead1fc99d261fb5113004780d1302de40a06b4fa0b94b68beca095"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl.resolveAndBuildConstructorInvocation (cyclomatic 92): BodyBuilderImpl.resolveAndBuildConstructorInvocation has cyclomatic complexity 92 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9979}}}],"partialFingerprints":{"codehealthFindingId/v1":"f39c694a414bfbe36992b9a20dfbc82c34f946c40d293fdabaf96344a0d5fcb3"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseClassOrMixinOrExtensionOrEnumMemberImpl (cyclomatic 90): Parser.parseClassOrMixinOrExtensionOrEnumMemberImpl has cyclomatic complexity 90 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5273}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e4b1219ecda0cbc642748e7c1d79e5457857237e996a64d190a42b68b672874"}},{"ruleId":"D1","level":"warning","message":{"text":"SubtypeHelper._isSubtypeOf (cyclomatic 88): SubtypeHelper._isSubtypeOf has cyclomatic complexity 88 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/subtype.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ecedbd658a58ba0e83d5f3aea608be5309f1f425540f156e68dbe2e1967b9db"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseFormalParameter (cyclomatic 84): Parser.parseFormalParameter has cyclomatic complexity 84 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":2030}}}],"partialFingerprints":{"codehealthFindingId/v1":"76e160d68c465bed5368fa80011b56a6eaf5bd9f46e46d7dd702aed5fa614dc7"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl.processLookupResult (cyclomatic 83): BodyBuilderImpl.processLookupResult has cyclomatic complexity 83 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9208}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3d19d3c00c09771dc93abccffa8fc415bc16a365cb6fde80de8674e300b9cd7"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler.visitStaticInvocation (cyclomatic 82): LibraryCompiler.visitStaticInvocation has cyclomatic complexity 82 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7398}}}],"partialFingerprints":{"codehealthFindingId/v1":"74ec140daf2e2d8d87fb4d029756871c6eb9e66ad32de9114f2e9a40a5bd4ebe"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceClassBuilder.checkSupertypes (cyclomatic 82): SourceClassBuilder.checkSupertypes has cyclomatic complexity 82 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"a33514f65490a6580dba2542dbf1a2a29b3561a2a1d3ac96b7f887dd03e47c03"}},{"ruleId":"D1","level":"warning","message":{"text":"_FfiUseSiteTransformer._visitStaticInvocation (cyclomatic 81): _FfiUseSiteTransformer._visitStaticInvocation has cyclomatic complexity 81 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"a55a5b8d9f5b5a61fd0d3fab39664301dd523b6f805076e24fa845d87e0b6f74"}},{"ruleId":"D1","level":"warning","message":{"text":"DartTypes._subtypeHelper (cyclomatic 81): DartTypes._subtypeHelper has cyclomatic complexity 81 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1949}}}],"partialFingerprints":{"codehealthFindingId/v1":"4966e6a399649d23d1f2a470b25ee18f7e36cac9f472667afec1a9cd73347289"}},{"ruleId":"D1","level":"warning","message":{"text":"StandardBounds.getStandardUpperBoundInternal (cyclomatic 81): StandardBounds.getStandardUpperBoundInternal has cyclomatic complexity 81 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"d228c240150b19cdca85222cc3258c6671a29886bff34557aa6da0e5ae2539f4"}},{"ruleId":"D1","level":"warning","message":{"text":"StandardBounds.getStandardLowerBoundInternal (cyclomatic 80): StandardBounds.getStandardLowerBoundInternal has cyclomatic complexity 80 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"f002eded2dd7b16f97e8ad00eae9a460ef40fc103a4733c2b57985649e9d409f"}},{"ruleId":"D1","level":"warning","message":{"text":"V1Projection._toV1Expression (cyclomatic 78): V1Projection._toV1Expression has cyclomatic complexity 78 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":57854}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd000bc490eda4c8abf63caf34460f4dbfb52f29b1411471259484681cbd1dae"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator.visitBinaryExpression (cyclomatic 78): ConstantEvaluator.visitBinaryExpression has cyclomatic complexity 78 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf446cd849eed154c71050eb8ef30bee3fb2e8c2fcb24291bcc9f91cefcc27f"}},{"ruleId":"D1","level":"warning","message":{"text":"RuntimeTypesNeedBuilderImpl.computeRuntimeTypesNeed (cyclomatic 78): RuntimeTypesNeedBuilderImpl.computeRuntimeTypesNeed has cyclomatic complexity 78 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1a91b5d045e5da932133015cb53f19a69a53a8800247f6b043395cfd0560e2"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler.visitStaticInvocation (cyclomatic 78): ProgramCompiler.visitStaticInvocation has cyclomatic complexity 78 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6709}}}],"partialFingerprints":{"codehealthFindingId/v1":"45dc10804492f509a1f913d56c7f73581a403ee81fb737397a41827442d16ccf"}},{"ruleId":"D1","level":"warning","message":{"text":"Type.generate (cyclomatic 77): Type.generate has cyclomatic complexity 77 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"49c07c8f17b6071d85782d138ed430e0a9b488dcf6d3f25e67afa6e1da30220c"}},{"ruleId":"D1","level":"warning","message":{"text":"_BigIntImpl._binaryGcd (cyclomatic 77): _BigIntImpl._binaryGcd has cyclomatic complexity 77 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"3faaff7cfd7ddb0c4019ba281f8256065d01d9532a90189f5b3a80860d0dd237"}},{"ruleId":"D1","level":"warning","message":{"text":"_BigIntImpl._binaryGcd (cyclomatic 77): _BigIntImpl._binaryGcd has cyclomatic complexity 77 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/bigint_patch.dart"},"region":{"startLine":1523}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0cb644b32b2c66697cc182d296c35c55f6b378ef24a1b17ce1d1ff5e4ea6ed1"}},{"ruleId":"D1","level":"warning","message":{"text":"_BigIntImpl._binaryGcd (cyclomatic 76): _BigIntImpl._binaryGcd has cyclomatic complexity 76 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":2112}}}],"partialFingerprints":{"codehealthFindingId/v1":"7638d405c52cf7076d0cf10ff07b92cd7d39a94a2544026cbe62aa896b67dc39"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseMethod (cyclomatic 76): Parser.parseMethod has cyclomatic complexity 76 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5799}}}],"partialFingerprints":{"codehealthFindingId/v1":"a82c50b748372750bc730fa8bab7b8cd2f870bde4144f03f644f8cd75398cf9d"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeUseGenerator.buildSelectorAccess (cyclomatic 76): TypeUseGenerator.buildSelectorAccess has cyclomatic complexity 76 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":4698}}}],"partialFingerprints":{"codehealthFindingId/v1":"d44fe995a4fbc2528dedc57a087ce5161067bb85571fef61eb07ea882aae4066"}},{"ruleId":"D1","level":"warning","message":{"text":"_Processor.calculate (cyclomatic 74): _Processor.calculate has cyclomatic complexity 74 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d0e20656db760ff03f9e1beb5b4ca2c04111dcdf8f97ef78dc629ce96241c7c"}},{"ruleId":"D1","level":"warning","message":{"text":"VmServerConnection._delegateRequest (cyclomatic 74): VmServerConnection._delegateRequest has cyclomatic complexity 74 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service_interface/lib/src/vm_service_interface.dart"},"region":{"startLine":1403}}}],"partialFingerprints":{"codehealthFindingId/v1":"8412929245b40ccd40ff5c8dfac004784155604d1f3211d9a7ab5afbc1cc1487"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator._handleInvocation (cyclomatic 73): ConstantEvaluator._handleInvocation has cyclomatic complexity 73 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4297}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dcebb40e91bd1ac7ca9e64746ea8d3d12ab922b925cfa486a29a8f867b21e93"}},{"ruleId":"D1","level":"warning","message":{"text":"_MixinInferenceSolution._solveForEquality (cyclomatic 73): _MixinInferenceSolution._solveForEquality has cyclomatic complexity 73 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/mixin_inferrer.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"04da66f15e31809401c5686fe287ac8f9b85042a6ec0c7eedfd4a11bdf8f960a"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceLoader._checkSupertypeClassModifiers (cyclomatic 73): SourceLoader._checkSupertypeClassModifiers has cyclomatic complexity 73 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fbdaae7ac6f97909111ccbcdb035046494da22e985114646911addf14aba7ec"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolvedCorrectionProducer.inferUndefinedExpressionType (cyclomatic 70): ResolvedCorrectionProducer.inferUndefinedExpressionType has cyclomatic complexity 70 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"2860dc980f70b06a1e8efc13ea82e3628aaf3a00fa1bcb0034384caa09e83c8b"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator2.visitBinaryOperatorInvocation (cyclomatic 69): ConstantEvaluator2.visitBinaryOperatorInvocation has cyclomatic complexity 69 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"62674b787ce8f330b4b93008ebf0e2f2b8ca153f88dc010e41d0ff25b22ead7b"}},{"ruleId":"D1","level":"warning","message":{"text":"DartScopeBuilder2._filter (cyclomatic 69): DartScopeBuilder2._filter has cyclomatic complexity 69 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"18816e4527b2fe7f6cb79360be5543fa6405aa5b40299cfa446626476693cf62"}},{"ruleId":"D1","level":"warning","message":{"text":"Intrinsifier.generateInstanceIntrinsic (cyclomatic 67): Intrinsifier.generateInstanceIntrinsic has cyclomatic complexity 67 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5d62c5d81b4af30bf873c0fd6b462a66ed004c327a43080bd5bcce79d9a15e2"}},{"ruleId":"D1","level":"warning","message":{"text":"DartFileEditBuilderImpl._addLibraryImports (cyclomatic 67): DartFileEditBuilderImpl._addLibraryImports has cyclomatic complexity 67 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":2482}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae96fa47c2b8c84aead67953e9a26eaa4b417c5d58983055a9b8533363e1a614"}},{"ruleId":"D1","level":"warning","message":{"text":"_Tuple.sanitize (cyclomatic 67): _Tuple.sanitize has cyclomatic complexity 67 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1503}}}],"partialFingerprints":{"codehealthFindingId/v1":"d64d936241b161ee0dc37cb95248c2fa084c32de1db864ef39a73588324974a1"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantsTransformer.visitPatternSwitchStatement (cyclomatic 65): ConstantsTransformer.visitPatternSwitchStatement has cyclomatic complexity 65 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3cfd1b6e09f40e55babdfc6c05d5c4e373d400a825c006bd7e716d19b5cf9c8"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassMembersNodeBuilder.build (cyclomatic 65): ClassMembersNodeBuilder.build has cyclomatic complexity 65 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bbfb674a90513bd0c0cad9b43b5e6aa429c15c4a9e027ce6170431f9175bd50"}},{"ruleId":"D1","level":"warning","message":{"text":"_Collector.collect (cyclomatic 63): _Collector.collect has cyclomatic complexity 63 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"249930c4150d48da41082db50b70dbcb4c34dc3e2c7919525e3a889ec4cbbab7"}},{"ruleId":"D1","level":"warning","message":{"text":"_Tuple.sanitize (cyclomatic 63): _Tuple.sanitize has cyclomatic complexity 63 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d98e1c3ebe4f25c000b7492e3389894ac44f54753e56e6367d0ec000f3e6fe1"}},{"ruleId":"D1","level":"warning","message":{"text":"CodegenImpactTransformer.transformCodegenImpact (cyclomatic 60): CodegenImpactTransformer.transformCodegenImpact has cyclomatic complexity 60 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/impact_transformer.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89478485151d9cbbc6953ccf8d8a680492cde90b75dd3e9786319463acdb739"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseTopLevelMemberImpl (cyclomatic 59): Parser.parseTopLevelMemberImpl has cyclomatic complexity 59 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4181}}}],"partialFingerprints":{"codehealthFindingId/v1":"11bd5451df59fcc0d4258f72dc11a5f591c58d304e2f4d60ea5064f2ec80980a"}},{"ruleId":"D1","level":"warning","message":{"text":"LeastUpperBoundHelper._computeLeastUpperBound (cyclomatic 59): LeastUpperBoundHelper._computeLeastUpperBound has cyclomatic complexity 59 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8305c422c039fc00199ad2eeb964f41dbebbb767e660629a30f0f89206f0b3f"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationByElementLocator.visitNode (cyclomatic 57): DeclarationByElementLocator.visitNode has cyclomatic complexity 57 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/results.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"f03a5a3011a1393d48bdd5b2bdddb6a86f9b997a8749960fe2d6df37a9d5d9ed"}},{"ruleId":"D1","level":"warning","message":{"text":"UseResultVerifier._isUsed (cyclomatic 57): UseResultVerifier._isUsed has cyclomatic complexity 57 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/use_result_verifier.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"aff8a7e7e5c4dfc41c7023b8184ef754831b26d4f5a9151c5849e58fbe4080c2"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser._parsePrecedenceExpressionLoop (cyclomatic 56): Parser._parsePrecedenceExpressionLoop has cyclomatic complexity 56 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7203}}}],"partialFingerprints":{"codehealthFindingId/v1":"075c749a2c6a8c07109209b3e5d6cb253de7e6e19d74cee7e5658cf2f923bd67"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelTarget._finishConstruction (cyclomatic 56): KernelTarget._finishConstruction has cyclomatic complexity 56 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1542}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe29e5ae3b7d053d1295ac57b24ed31535620ac55ad727140b57eaab861dc217"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeSystemImpl.canBeSubtypeOf (cyclomatic 55): TypeSystemImpl.canBeSubtypeOf has cyclomatic complexity 55 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a3a61e43b658b06a794fba7cb6cc0c87904b3278498ea8ffb0a779417d74ff"}},{"ruleId":"D1","level":"warning","message":{"text":"_SanitizedMember.computeMembers (cyclomatic 55): _SanitizedMember.computeMembers has cyclomatic complexity 55 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1982}}}],"partialFingerprints":{"codehealthFindingId/v1":"99e5e0b93e2bf5ef05580e31b176556aab3987a480910c1df2e4f31b815a6548"}},{"ruleId":"D1","level":"warning","message":{"text":"OutlineBuilder.endFormalParameters (cyclomatic 55): OutlineBuilder.endFormalParameters has cyclomatic complexity 55 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":3249}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3ccefe37aa278d5526893392309fed63c9376a8ccf76410425e53d545c254e9"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder._doTryInlineMethod (cyclomatic 54): KernelSsaGraphBuilder._doTryInlineMethod has cyclomatic complexity 54 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7879}}}],"partialFingerprints":{"codehealthFindingId/v1":"20145cb25cd7318b08f9631dc6c5d5b745270657f91b5fe153dff950f1ed89b5"}},{"ruleId":"D1","level":"warning","message":{"text":"HttpDate._parseCookieDate (cyclomatic 53): HttpDate._parseCookieDate has cyclomatic complexity 53 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_date.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a956c04c070b3ce55849a84fc0c1b523ae2749e07a24f683b341f499055fc9"}},{"ruleId":"D1","level":"warning","message":{"text":"JFieldAnalysis.from (cyclomatic 53): JFieldAnalysis.from has cyclomatic complexity 53 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f937bb1a4a7ae6afa75706fe59a3819bb2c03d4b75b9d356ab554b3e04c16fe"}},{"ruleId":"D1","level":"warning","message":{"text":"SummaryCollector.createSummary (cyclomatic 53): SummaryCollector.createSummary has cyclomatic complexity 53 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ec59d7061b614df008bf0b4e8464de666afa89f2b1e3838f8c8a57ff79abc46"}},{"ruleId":"D1","level":"warning","message":{"text":"FrontendCompiler.compile (cyclomatic 52): FrontendCompiler.compile has cyclomatic complexity 52 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac95d1a8cba2effd85c54e8990d83e726d8c6c5e92336fc25cecb43597a3b1c0"}},{"ruleId":"D1","level":"warning","message":{"text":"GreatestLowerBoundHelper.getGreatestLowerBound (cyclomatic 52): GreatestLowerBoundHelper.getGreatestLowerBound has cyclomatic complexity 52 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeb9e544a359361f5f5ec43c81f0f424dd7bd60635d9e0972ed3474d699a105b"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorBase._inferInvocation (cyclomatic 52): InferenceVisitorBase._inferInvocation has cyclomatic complexity 52 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1734}}}],"partialFingerprints":{"codehealthFindingId/v1":"e287ab92899acefd0d0be60fbfbb2780b15f429bcba063f3cb11c0a75b15ef1f"}},{"ruleId":"D1","level":"warning","message":{"text":"SwitchInfo.SwitchInfo (cyclomatic 51): SwitchInfo.SwitchInfo has cyclomatic complexity 51 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":5298}}}],"partialFingerprints":{"codehealthFindingId/v1":"97e486301913b11ff2f29add0092e501d90612ca9f0503bfdeaaf890565dc832"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator._visitExpression (cyclomatic 51): Evaluator._visitExpression has cyclomatic complexity 51 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9d3c0e73da96e329917bf7a5b41efe491ff685b46c90bb5724ec932396c09c1"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 51): (anonymous) has cyclomatic complexity 51 (threshold 15). Most of this is not in the body itself: 7 of the 51 points are its own statements and the rest belongs to 26 function items inside it that branch (installMockDate::Date, nextEvent, bubbleDown, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/preambles/d8.js"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"5184d05c389abc380bf9d7d02fc3965f0b89df6651726229c0f8549d6d5038a9"}},{"ruleId":"D1","level":"warning","message":{"text":"Uri.parse (cyclomatic 50): Uri.parse has cyclomatic complexity 50 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":841}}}],"partialFingerprints":{"codehealthFindingId/v1":"30680b3968f5211db29bc3849d7202dd72d188c085bc6d096df498ff6b844ce1"}},{"ruleId":"D1","level":"warning","message":{"text":"ModifyParameters.apply (cyclomatic 50): ModifyParameters.apply has cyclomatic complexity 50 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/modify_parameters.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde50adcf00e3457926936dfc42fe55d99d29df39929e6fd425f931a5f43661b"}},{"ruleId":"D1","level":"warning","message":{"text":"Intrinsifier.generateMemberIntrinsic (cyclomatic 49): Intrinsifier.generateMemberIntrinsic has cyclomatic complexity 49 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":3594}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a08ef2f4b6af30fca816e60fd5f13b15bf04c6d1b575ff4fb77d27f31a3ed30"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseExpressionStatementOrDeclarationAfterModifiers (cyclomatic 49): Parser.parseExpressionStatementOrDeclarationAfterModifiers has cyclomatic complexity 49 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9864}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e8ed027c5be4024601a09730a84c440848e5aa17808dbfcdaa0088acf74293"}},{"ruleId":"D1","level":"warning","message":{"text":"DuplicateDefinitionVerifier.checkUnit (cyclomatic 49): DuplicateDefinitionVerifier.checkUnit has cyclomatic complexity 49 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"49988fe76f833c2fb78b5e59b3eceda3cc34d67e30082c4c52e3b7fe0ecafd78"}},{"ruleId":"D1","level":"warning","message":{"text":"InterceptorStubGenerator.generateGetInterceptorMethod (cyclomatic 49): InterceptorStubGenerator.generateGetInterceptorMethod has cyclomatic complexity 49 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"67e05f9c3b42876a2eda586ae63ea94b6d17f65980ae809da49df515406bc9a6"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 49): (anonymous) has cyclomatic complexity 49 (threshold 15). Most of this is not in the body itself: 4 of the 49 points are its own statements and the rest belongs to 27 function items inside it that branch (installMockDate::Date, nextEvent, bubbleDown, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/preambles/d8.js"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4a8466493f93d242a00401eb19d96375162e0f9e1c4dd43e671412e8244da63"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractScanner.bigSwitch (cyclomatic 48): AbstractScanner.bigSwitch has cyclomatic complexity 48 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1093}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a49c74616c82a1bdb3a2d48feae8b8bb372d5051c71625b02eb67ebaf526b7b"}},{"ruleId":"D1","level":"warning","message":{"text":"AddNullCheck.compute (cyclomatic 47): AddNullCheck.compute has cyclomatic complexity 47 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_null_check.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"99ce0543ccc0e45303ddaeeece1d1954902c0a514145afbd148fda54da657e91"}},{"ruleId":"D1","level":"warning","message":{"text":"HValidator.visitBasicBlock (cyclomatic 47): HValidator.visitBasicBlock has cyclomatic complexity 47 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/validate.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"1343a003c8869d049c4bce69e17f22a0867b290814b9cd6a0af68199dab1517f"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorBase.createPropertyGet (cyclomatic 47): InferenceVisitorBase.createPropertyGet has cyclomatic complexity 47 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":5357}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7b00d82d66564637c1dc6108a23cccec62d1599727fa5cecf7f9c60c8a9e8cb"}},{"ruleId":"D1","level":"warning","message":{"text":"MiniJsParser.getToken (cyclomatic 47): MiniJsParser.getToken has cyclomatic complexity 47 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"d04a4088253365755bc70d0cf74313ccc3859b52218b4f5abe6fbd6318bcd674"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 47): (anonymous) has cyclomatic complexity 47 (threshold 15). Most of this is not in the body itself: 2 of the 47 points are its own statements and the rest belongs to 27 function items inside it that branch (installMockDate::Date, nextEvent, bubbleDown, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/preambles/jsshell.js"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"949aed92ff39f89c32b6ac7833e7dbfab3fa464908b10bb7c5cd231dd52250df"}},{"ruleId":"D1","level":"warning","message":{"text":"Class.test (cyclomatic 46): Class.test has cyclomatic complexity 46 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/for_in.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e76d7c69f5680359b0116fdb83b93819c7ed3619d1bbdf049a0c4d7b98b9af0"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitVariableDeclaration (cyclomatic 46): InScopeCompletionPass.visitVariableDeclaration has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":3419}}}],"partialFingerprints":{"codehealthFindingId/v1":"651b67348d0e0bb5d05bbf82dabf54c279b5a349e0a4a2c9614d05fcce7e56b1"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToDeclaringParameter.compute (cyclomatic 46): ConvertToDeclaringParameter.compute has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_declaring_parameter.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"696f3b2501f0827ccf346a3d7cc6ea1178104fc794f6c10b7ad4d1e1ed211adc"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForAugmentationFormalParameters (cyclomatic 46): ErrorVerifier._checkForAugmentationFormalParameters has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":3274}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c50972591f261c62bf7a0dad810e9da33b25fa255f8b57fdf495c9e536d0c8"}},{"ruleId":"D1","level":"warning","message":{"text":"InvokeDynamicSpecializer.lookupSpecializer (cyclomatic 46): InvokeDynamicSpecializer.lookupSpecializer has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"3482bfc4ce848eed4508544920edbecc43759e2858690611c871228afc699aed"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementalCompiler._initializeExperimentalInvalidation (cyclomatic 46): IncrementalCompiler._initializeExperimentalInvalidation has cyclomatic complexity 46 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"572f1799b30e718fdcb04b7ad7fd2bc605933bc68341bfb68a7c39a51f011797"}},{"ruleId":"D1","level":"warning","message":{"text":"BytecodeGenerator.getFunctionDeclaration (cyclomatic 45): BytecodeGenerator.getFunctionDeclaration has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"28029872adfd08437bdd4c12fcdd6cea137c5ecc0463f6c3b239c01bc6c1e9b1"}},{"ruleId":"D1","level":"warning","message":{"text":"LinearScanRegisterAllocator.resolveDataFlow (cyclomatic 45): LinearScanRegisterAllocator.resolveDataFlow has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc13a7d8aab7925a7c96f5221d27d25a455d1bb63d206e05c44811504d7aa488"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantPragmaAnnotationParser.parsePragma (cyclomatic 45): ConstantPragmaAnnotationParser.parsePragma has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/pragma.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d3f4f8d1f9fe450a5d477ff3f6cac6855f3a59c2d6651d0dd7dc72ec37382f6"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parsePrimary (cyclomatic 45): Parser.parsePrimary has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8094}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea98876e2e33de3d23f1988423b92f8a937524a007f71043cc3093c2a931fae9"}},{"ruleId":"D1","level":"warning","message":{"text":"RelevanceComputer.computeRelevance (cyclomatic 45): RelevanceComputer.computeRelevance has cyclomatic complexity 45 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/relevance_computer.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"90365ce4ebde4ca908541df358cbc05216f77311a2adcf7a0f10b7a472e524c5"}},{"ruleId":"D1","level":"warning","message":{"text":"AddFieldFormalParameters._computeFromPieces (cyclomatic 45): AddFieldFormalParameters._computeFromPieces has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_field_formal_parameters.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"e08135980f2bfb16a95f941572a040476f777dcb39cc44aa58af2b38c8c38285"}},{"ruleId":"D1","level":"warning","message":{"text":"MiniJsParser.getToken (cyclomatic 45): MiniJsParser.getToken has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"00bf1ec9fcc26ea9ef8c096591191e7b9c2bc3b75396f22fb66ab6717d803527"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceExtensionTypeDeclarationBuilder._checkRepresentationDependency (cyclomatic 45): SourceExtensionTypeDeclarationBuilder._checkRepresentationDependency has cyclomatic complexity 45 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"88301302cdf918d0cbdf26bb55ab483da2a1168cb1f46052094e320778002c8a"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractScanner.bigSwitch (cyclomatic 44): AbstractScanner.bigSwitch has cyclomatic complexity 44 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"22175c023434fdbf0dc75d49d1a1b92696021a031f358a0752a22bd362e64b5f"}},{"ruleId":"D1","level":"warning","message":{"text":"DartLanguageServerBenchmark._listenToStdout (cyclomatic 44): DartLanguageServerBenchmark._listenToStdout has cyclomatic complexity 44 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/language_server_benchmark.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e8d65cd2ef51396064898eaf59e87f1d113e81b2db86b5f747a82990830969e"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceTypeAliasBuilder._checkCyclicTypedefDependency (cyclomatic 44): SourceTypeAliasBuilder._checkCyclicTypedefDependency has cyclomatic complexity 44 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a6821ae17729a917c2c47470bacaec061ad2964758dce23b8550af12d58e032"}},{"ruleId":"D1","level":"warning","message":{"text":"HtmlDartInterfaceGenerator.GenerateInterface (cyclomatic 44): HtmlDartInterfaceGenerator.GenerateInterface has cyclomatic complexity 44 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ececbd75de6a591e596723791d148d74ea63c90169a34faecc21b547ac6a50d"}},{"ruleId":"D1","level":"warning","message":{"text":"DartSnippetRequest._getContext (cyclomatic 43): DartSnippetRequest._getContext has cyclomatic complexity 43 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/snippets/dart_snippet_request.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e648c85b9d190c86e69877ce6ca5cdf1a5b27c23958f525a6ccf1e2685a1833"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantVerifier._reportError (cyclomatic 43): ConstantVerifier._reportError has cyclomatic complexity 43 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"c259cadd50d28564eedb00a9d47e8042504f440d5c7930bcb841e740e4951fe3"}},{"ruleId":"D1","level":"warning","message":{"text":"ForwardingNode.finalize (cyclomatic 43): ForwardingNode.finalize has cyclomatic complexity 43 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"bffa106b8ec75f299b201e0db50cf544a6e74fa4466606facda82025b8fecf6f"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitClassDeclaration (cyclomatic 43): _Visitor.visitClassDeclaration has cyclomatic complexity 43 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_element_model_tracking.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"282d2b68b4e7f4c783434af05705163b753f51c73d79a3bdfbb78c952c183691"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parseNumber (cyclomatic 42): _ChunkedJsonParser.parseNumber has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"d54fca63cd81af3a797e0720ea27455bbdfd4e65d0395e621a9eed07acd66023"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parseNumber (cyclomatic 42): _ChunkedJsonParser.parseNumber has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"d214ea8e75649376d68f3380ebb8f1d1ff0e820c7195bd7e65501268aeed4fee"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parseNumber (cyclomatic 42): _ChunkedJsonParser.parseNumber has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":1181}}}],"partialFingerprints":{"codehealthFindingId/v1":"546b7a755f9025b247c7033e112cad154a5f6a751f6a66f939933e1721d336a5"}},{"ruleId":"D1","level":"warning","message":{"text":"FlutterConvertToStatefulWidget.compute (cyclomatic 42): FlutterConvertToStatefulWidget.compute has cyclomatic complexity 42 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"4085423b45bb9bbbd749fea5443af9c2fc2d2dc3854bcc1500a3fa9b7473c339"}},{"ruleId":"D1","level":"warning","message":{"text":"CompletionHandler._getServerDartItems (cyclomatic 41): CompletionHandler._getServerDartItems has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea4c86a1d9feea686101b82a00630fa4b686bd2e4117c76904fb9d178112a2f"}},{"ruleId":"D1","level":"warning","message":{"text":"ReplaceWithVar.compute (cyclomatic 41): ReplaceWithVar.compute has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_var.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"f220f6bd7f455526c179856d0b0a79c398e083823915862d0ca30c26fd206f56"}},{"ruleId":"D1","level":"warning","message":{"text":"_ClassVerifier.verify (cyclomatic 41): _ClassVerifier.verify has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c9711e1d44214e1c9accae2875faa5f8ce56562317fae5ef3d9d41ed327a52"}},{"ruleId":"D1","level":"warning","message":{"text":"LanguageVersionOverrideVerifier._findLanguageVersionOverrideComment (cyclomatic 41): LanguageVersionOverrideVerifier._findLanguageVersionOverrideComment has cyclomatic complexity 41 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/language_version_override_verifier.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdd53d2e0c6338fd9874f4bdfd64d5d3afdb38ef0e345ee695242c19430ccb5f"}},{"ruleId":"D1","level":"warning","message":{"text":"InstanceMemberInferrer._inferAccessorOrField (cyclomatic 41): InstanceMemberInferrer._inferAccessorOrField has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7e1ad1ed25e00ac016984f5feb57b6698281ec71dd6968cb4f7dae8a5e9ebfb"}},{"ruleId":"D1","level":"warning","message":{"text":"_IRInterpreter.run (cyclomatic 41): _IRInterpreter.run has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/interpreter.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"d87c1ca2f14785665db495389c28c1ae6a2e56f10217da560a69f83ccc01089d"}},{"ruleId":"D1","level":"warning","message":{"text":"DynamicCallSiteTypeInformation.handleIntrinsifiedSelector (cyclomatic 41): DynamicCallSiteTypeInformation.handleIntrinsifiedSelector has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":1321}}}],"partialFingerprints":{"codehealthFindingId/v1":"79d2843cbf8dab07bb844375886a44d3c388d2d02d0afb2809715e98163d70bb"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramBuilder._buildClass (cyclomatic 41): ProgramBuilder._buildClass has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"726f3ea9fdc0f845d21ec71f8c8cc5fef57dd1d3ca202de6dd05e2fc2571b68b"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalyzeCommand.run (cyclomatic 41): AnalyzeCommand.run has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/analyze.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"c902f2e036ee18d05ab8e82f7ec56dbad58fb9c2eae84ddd1729911ef4ece52a"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitClassDeclaration (cyclomatic 41): _Visitor.visitClassDeclaration has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_enums.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a0bdf9cd7ae8070d588ef60cf6970cdc8e0c334a490f11889011e91bd83761"}},{"ruleId":"D1","level":"warning","message":{"text":"InstanceViewElement._createMembers (cyclomatic 41): InstanceViewElement._createMembers has cyclomatic complexity 41 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"0491e5968b1a17bd9eabd8eb12fc8eb0a9e92a938d53a0b76b278f3182ff8f9b"}},{"ruleId":"D1","level":"warning","message":{"text":"MixinFullResolution.transformClass (cyclomatic 40): MixinFullResolution.transformClass has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/mixin_full_resolution.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2c14f7266fc01df8415702a5ba36e80878f9d835c3b0b94c12e2f30e6c4dd3f"}},{"ruleId":"D1","level":"warning","message":{"text":"TopMergeHelper.topMerge (cyclomatic 40): TopMergeHelper.topMerge has cyclomatic complexity 40 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/top_merge.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9e32ca8be61fcefeb31039cab239e1f7a8919a270aa3acd1315222d4199d2f3"}},{"ruleId":"D1","level":"warning","message":{"text":"NamedTypeResolver.resolveConstructorTypeReference (cyclomatic 40): NamedTypeResolver.resolveConstructorTypeReference has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"deb7075f7fbf4b3c9dc43f545f3bf481e1cef8df7f936f4404fc1a41b12f7fe5"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolutionEnqueuerListener._processClass (cyclomatic 40): ResolutionEnqueuerListener._processClass has cyclomatic complexity 40 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14455fa0499409636dd556fc31a014f60d00f97ca3bff5395f248b5eb58303c"}},{"ruleId":"D1","level":"warning","message":{"text":"ClosureDataBuilder._updateScopeBasedOnRtiNeed (cyclomatic 40): ClosureDataBuilder._updateScopeBasedOnRtiNeed has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcfc55addd0732c38fd9c6107ce1b54aeff695f792379da6c807e5996ca89a2a"}},{"ruleId":"D1","level":"warning","message":{"text":"DillExtensionTypeDeclarationBuilder.DillExtensionTypeDeclarationBuilder (cyclomatic 40): DillExtensionTypeDeclarationBuilder.DillExtensionTypeDeclarationBuilder has cyclomatic complexity 40 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"352f1ada12b26446906b32340ff0de13f33c50fd95b9c43efacd09c86a1875fe"}},{"ruleId":"D1","level":"warning","message":{"text":"Instance.toJson (cyclomatic 40): Instance.toJson has cyclomatic complexity 40 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":5751}}}],"partialFingerprints":{"codehealthFindingId/v1":"772f793ff49ebb8a33edc3d1c6c96fcfc9dc1775e4411c29ee9d10bff2f5fdfc"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 40): (anonymous) has cyclomatic complexity 40 (threshold 15). Most of this is not in the body itself: 5 of the 40 points are its own statements and the rest belongs to 28 function items inside it that branch (addScriptsToQueue, processAfterLoadOrErrorEvent, getScriptUrl, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"679c3f010c6283f914a22642836c99d40b65d09e8d36c9082ca3b327f19b8e79"}},{"ruleId":"D1","level":"warning","message":{"text":"DispatchTable.build (cyclomatic 39): DispatchTable.build has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dispatch_table.dart"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f1626385c8d5e4500868ffe3206c3162166adf84fb78d8f0850fde740a0edb"}},{"ruleId":"D1","level":"warning","message":{"text":"Sort._dualPivotQuicksort (cyclomatic 39): Sort._dualPivotQuicksort has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/sort.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc385a9789f402f689f0421b2777a427e7368eec6e3ffb7b17e135366da8e2e8"}},{"ruleId":"D1","level":"warning","message":{"text":"ComplexTypeInfo.computeRecordType (cyclomatic 39): ComplexTypeInfo.computeRecordType has cyclomatic complexity 39 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d269783df64e45f67fd890a089ee14f4a3809e0fbbab868cd27c029086dbd51"}},{"ruleId":"D1","level":"warning","message":{"text":"RenameRefactoring.getElementToRename (cyclomatic 39): RenameRefactoring.getElementToRename has cyclomatic complexity 39 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"d261a01ffe4f583977a5e7132604f59723ac24103d66bd6873dcf9135371592b"}},{"ruleId":"D1","level":"warning","message":{"text":"AstWriter._computeProperties (cyclomatic 39): AstWriter._computeProperties has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/utilities/ast_writer.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"94145c74742144d368818835c41ecddea045eedf45f9bb983f0d067821d09e86"}},{"ruleId":"D1","level":"warning","message":{"text":"TypePropertyResolver.resolve (cyclomatic 39): TypePropertyResolver.resolve has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5aa4c8811b01c1be416293a00b41e24e7827886bda2411193f6966bf397120e"}},{"ruleId":"D1","level":"warning","message":{"text":"NativeEmitter.prepareNativeClasses (cyclomatic 39): NativeEmitter.prepareNativeClasses has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/native_emitter.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d6289aa90a31bc258cca666813854613be0a85d941b15f67dffb0b1f5f23e3"}},{"ruleId":"D1","level":"warning","message":{"text":"CompileWasmCommand.run (cyclomatic 39): CompileWasmCommand.run has cyclomatic complexity 39 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"36a776d87773f6543a9223a00a63bef2aa505160cab234690859ecec28d5711f"}},{"ruleId":"D1","level":"warning","message":{"text":"DillLibraryBuilder.ensureLoaded (cyclomatic 39): DillLibraryBuilder.ensureLoaded has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_library_builder.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"1278d8a103b1b0ac6baf4b855175854d8f7e155ecd8bfddfcddfc0183c93ab2d"}},{"ruleId":"D1","level":"warning","message":{"text":"ExtensionTypeMembersNodeBuilder.build (cyclomatic 39): ExtensionTypeMembersNodeBuilder.build has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"187a13e01c95684580bdeb2ce5ebd4e62f44a3c05b8f6e3d39a492d38eb9e204"}},{"ruleId":"D1","level":"warning","message":{"text":"AsyncStateVisitor.visitBinaryExpression (cyclomatic 39): AsyncStateVisitor.visitBinaryExpression has cyclomatic complexity 39 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f240c8e9d01b829193c621ada4e256a95dc3fca7008a51993d5dc9b9ec01f3"}},{"ruleId":"D1","level":"warning","message":{"text":"_WebSocketProtocolTransformer.add (cyclomatic 38): _WebSocketProtocolTransformer.add has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c5b190dbd2ce22525d1a3310a5ba0d96542f529af8e95359f3250f7b943d8ef"}},{"ruleId":"D1","level":"warning","message":{"text":"Simplification.visitBinaryIntOp (cyclomatic 38): Simplification.visitBinaryIntOp has cyclomatic complexity 38 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/simplification.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1d1231ef8310ef65ff94a5475d50c0285b168b4c3b316dd600c4ad586c652e"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseStatementX (cyclomatic 38): Parser.parseStatementX has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6720}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cb4299c0062bf904235a3b6be57e290d4bdf34e5235b3cf6afc79aadbb443d1"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToSwitchExpression._getSupportedSwitchType (cyclomatic 38): ConvertToSwitchExpression._getSupportedSwitchType has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"da95a7c88a42b264494033a1fe6ee32437fce81ec4aa3ffda2eae0a14296e337"}},{"ruleId":"D1","level":"warning","message":{"text":"NullSafetyDeadCodeVerifier.flowEnd (cyclomatic 38): NullSafetyDeadCodeVerifier.flowEnd has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/dead_code_verifier.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f3f23f8d55eb6b65f855a2ec65684c7f72564623cf827beafec8ae98d282f88"}},{"ruleId":"D1","level":"warning","message":{"text":"ElementUsageDetector.checkUsage (cyclomatic 38): ElementUsageDetector.checkUsage has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"416281d602291b54efce53b5dafba7a837924d23b08e6aefbe537c8c27d5025c"}},{"ruleId":"D1","level":"warning","message":{"text":"AstBinaryFlags.encode (cyclomatic 38): AstBinaryFlags.encode has cyclomatic complexity 38 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_flags.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"b200e112893e48b255ddef329875d26e2243ae066d5d3c38907ae69eea0f6c31"}},{"ruleId":"D1","level":"warning","message":{"text":"FuzzyMatcher.computeScore (cyclomatic 38): FuzzyMatcher.computeScore has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/utilities/fuzzy_matcher.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"1988a1a47459de68030d1e87a96a4b38c596f3c812bc19ac2e18572edb9ccae0"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaCodeGenerator.visitLoopInfo (cyclomatic 38): SsaCodeGenerator.visitLoopInfo has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1046}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd71ce1ac65f8c9697bb8b5d226c59b5edc5bff63186c2a2f65eede5068cbb4f"}},{"ruleId":"D1","level":"warning","message":{"text":"RunCommand._runLocal (cyclomatic 38): RunCommand._runLocal has cyclomatic complexity 38 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/run.dart"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"36cc6085936bbbc1088a3eeb349658b4336cfc7725430af96c2137b1c23ef10a"}},{"ruleId":"D1","level":"warning","message":{"text":"PatternConverter.dispatchPattern (cyclomatic 38): PatternConverter.dispatchPattern has cyclomatic complexity 38 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"88bb69e53a5ca5b37793f4323443bebcde5750150a92f082e81f6daf9ac558ad"}},{"ruleId":"D1","level":"warning","message":{"text":"JsInteropChecks.visitProcedure (cyclomatic 37): JsInteropChecks.visitProcedure has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4c0877b11f1d68efcce7ce3126fde9812fd3f8845179ad434531bf4188ee9cf"}},{"ruleId":"D1","level":"warning","message":{"text":"SessionLogAnalyzer.processFile (cyclomatic 37): SessionLogAnalyzer.processFile has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/.agents/skills/improve-performance-with-session-log/scripts/analyze_session_log.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7195b90c6d12d3f69ed71144140114b66d76bd89550d65dc86ab3c5d585e7db"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeEnvironment.computeTypeShapeCheckSufficiency (cyclomatic 37): TypeEnvironment.computeTypeShapeCheckSufficiency has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"5321708995731946a4c59944423c4b94b970a37febee2a8f08b4660354cb16d2"}},{"ruleId":"D1","level":"warning","message":{"text":"Configuration.parse (cyclomatic 37): Configuration.parse has cyclomatic complexity 37 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cf72b7c83f9bb98b971632242d69f89b3fb258e56ccdf75b5a61a0f4065c3ac"}},{"ruleId":"D1","level":"warning","message":{"text":"DartUnitHoverComputer.compute (cyclomatic 37): DartUnitHoverComputer.compute has cyclomatic complexity 37 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_hover.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a29b912c5faaf908c72e9883a3b4e12897c0412972a15e573002de5ce3c9ff73"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitArgumentList (cyclomatic 37): InScopeCompletionPass.visitArgumentList has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"f763805e3fa5aee304760e4c336449015510584ab0cbaebe178b346865ddb6d2"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportLibrary._importLibraryForElement (cyclomatic 37): ImportLibrary._importLibraryForElement has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/import_library.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb86b996a98e725419852f50c5633650e36f14589b3051b1d0bdce6c57ecf527"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder._pushDynamicInvocation (cyclomatic 37): KernelSsaGraphBuilder._pushDynamicInvocation has cyclomatic complexity 37 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6830}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fd6d232cbede43aab60b87897254632ad8438c5abb66ce10c096b54c02f9178"}},{"ruleId":"D1","level":"warning","message":{"text":"DartDebugAdapter.variablesRequest (cyclomatic 37): DartDebugAdapter.variablesRequest has cyclomatic complexity 37 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":2264}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a9b6362937178cf4ce33ce97f44cde4c150bcf7f6f683455bc82e452b98cd3"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorBase._computeAssignabilityKind (cyclomatic 37): InferenceVisitorBase._computeAssignabilityKind has cyclomatic complexity 37 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":859}}}],"partialFingerprints":{"codehealthFindingId/v1":"593d91be0e3fdd6ffe7bdb155e35e7f6f39abc4e295a5b1d6f5126a168641c62"}},{"ruleId":"D1","level":"warning","message":{"text":"DartDocTest.compileAndRun (cyclomatic 36): DartDocTest.compileAndRun has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/dart_doctest_impl.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7804c054c16efc76d35060fa8cdeb6cd549c87e01d62ce9920e5f4ed5f0768c"}},{"ruleId":"D1","level":"warning","message":{"text":"SharedInteropTransformer._createIsACheck (cyclomatic 36): SharedInteropTransformer._createIsACheck has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e88fe578e8dd8043112748a6bd30fab111e66bed315a5835962bef0e8d708ba"}},{"ruleId":"D1","level":"warning","message":{"text":"KeywordHelper.addExpressionKeywords (cyclomatic 36): KeywordHelper.addExpressionKeywords has cyclomatic complexity 36 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"6800967028426cf25b68c19db3cdc80dfa6d75b12507a61eb006fea13f7e40f1"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToSuperParameters.compute (cyclomatic 36): ConvertToSuperParameters.compute has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1cc41f8a969fb10321831074423a39842ee71f4fc070c8d5f0c92f1908c3c22"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodInvocationResolver.resolveUnqualified (cyclomatic 36): MethodInvocationResolver.resolveUnqualified has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"490ffe5d86bb02d44880cbf774f02e2de93685ab6d1d85943f7ab5acbf58a716"}},{"ruleId":"D1","level":"warning","message":{"text":"PatternConverter.dispatchPattern (cyclomatic 36): PatternConverter.dispatchPattern has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/exhaustiveness.dart"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"32ae18d8d3ede8dfb32e1786f47688304037336f9c56d81fb52adb1136e2644c"}},{"ruleId":"D1","level":"warning","message":{"text":"CompilerOptions.equivalent (cyclomatic 36): CompilerOptions.equivalent has cyclomatic complexity 36 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/compiler_options.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1fea8ae3de98673d677e3659c9be4560f786842e25ce5a906589d95c3d18865"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementalCompiler._computeReusedLibraries (cyclomatic 36): IncrementalCompiler._computeReusedLibraries has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2660}}}],"partialFingerprints":{"codehealthFindingId/v1":"d659036027405dda48fa9e35946c486e183396122b6265f4ee801318ddaff0f6"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl.visitInstantiation (cyclomatic 36): InferenceVisitorImpl.visitInstantiation has cyclomatic complexity 36 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"05106227c82efdf6698c822d1dbd99f21c4d7bb45b6ba0dd960ecffe243632af"}},{"ruleId":"D1","level":"warning","message":{"text":"SummaryCollector._visitCondition (cyclomatic 36): SummaryCollector._visitCondition has cyclomatic complexity 36 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":1619}}}],"partialFingerprints":{"codehealthFindingId/v1":"36075d0ba842b58f3376ce0a2d23873cfb587a503fab971f685b01023580f0e9"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parse (cyclomatic 35): _ChunkedJsonParser.parse has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"046bff5ff0c563e21e026de58159326a4a55fc40d8e65a040ce11786cf859128"}},{"ruleId":"D1","level":"warning","message":{"text":"_Uri.resolveUri (cyclomatic 35): _Uri.resolveUri has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":3220}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8699d57deea757d631304d1cb87121c22d4017c27953d3f542b60c4126cac50"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiTransformer.convertNativeTypeToDartType (cyclomatic 35): FfiTransformer.convertNativeTypeToDartType has cyclomatic complexity 35 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/common.dart"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"f12e6c73d5731e0a0108e3e84328bc0b6162d45eb1ec51a0360640635a4a465d"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseTopLevelDeclarationImpl (cyclomatic 35): Parser.parseTopLevelDeclarationImpl has cyclomatic complexity 35 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8e977674172eb03af333ac25ea256594cee43901ba813b0e2694c2634b3edc"}},{"ruleId":"D1","level":"warning","message":{"text":"LibrariesSpecification.parse (cyclomatic 35): LibrariesSpecification.parse has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/libraries_specification.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"a26bccde14621dba410495747457328757ff028f7f4cd03d019d23c262ab6c07"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementCompletionProcessor.compute (cyclomatic 35): StatementCompletionProcessor.compute has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d4ba6742c5423b41e58c2b9a94488ea712c03afb397cf83d9fe05330e9210d4"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveUnusedField.compute (cyclomatic 35): RemoveUnusedField.compute has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"85def1263467ae8eaa18b72617907c8a11ec26dbeb67f89e4f1f6e4dda4b1419"}},{"ruleId":"D1","level":"warning","message":{"text":"_SignatureUpdater.updateDeclaration (cyclomatic 35): _SignatureUpdater.updateDeclaration has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"897adcdea87491fbb6a456e86a0585df345bdf6ac8ac1f976c42ba371b97ce23"}},{"ruleId":"D1","level":"warning","message":{"text":"_ClassVerifier._verifyMustBeOverridden (cyclomatic 35): _ClassVerifier._verifyMustBeOverridden has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"712fcf69a63cbc6c71720346c09782724dc48507b2a6d3179d10472241cca6cb"}},{"ruleId":"D1","level":"warning","message":{"text":"InterceptorStubGenerator._fastPathForOneShotInterceptor (cyclomatic 35): InterceptorStubGenerator._fastPathForOneShotInterceptor has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"899e17f15bae38e7cc048abf076c7aa486febe013f0ffd01cb480c926463cf4b"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._defineClass (cyclomatic 35): ProgramCompiler._defineClass has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1462}}}],"partialFingerprints":{"codehealthFindingId/v1":"b352f90dffea616f37854d7a41d8c9c0a25f798654f3522af64cbfc4a6c355ef"}},{"ruleId":"D1","level":"warning","message":{"text":"NodeCreator.generateComponent (cyclomatic 35): NodeCreator.generateComponent has cyclomatic complexity 35 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: NodeCreator._createExpressionFromKind (cyclomatic 70) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2d06fa32c581ba7b7707c31e8e69af4fac267ce2d7ad9bff34a4dbd25ee8e36"}},{"ruleId":"D1","level":"warning","message":{"text":"StandardBounds._getFunctionStandardUpperBound (cyclomatic 35): StandardBounds._getFunctionStandardUpperBound has cyclomatic complexity 35 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: StandardBounds.morebottom (cyclomatic 41) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":1332}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4c629a6f6b3b39a8db079dae50086660ae51696ed976b00b1e743e68074b542"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous) (cyclomatic 35): (anonymous) has cyclomatic complexity 35 (threshold 15). Most of this is not in the body itself: 2 of the 35 points are its own statements and the rest belongs to 53 function items inside it that branch (defineLibrary, _runMain::runMainAndHandleErrors, hotReloadEnd, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":1344}}}],"partialFingerprints":{"codehealthFindingId/v1":"6abd75dd31e01407fdbb1c3d614fcb6f8174e288edd64575a84860e296f8ec9e"}},{"ruleId":"D1","level":"warning","message":{"text":"Application._printOutput (cyclomatic 34): Application._printOutput has cyclomatic complexity 34 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/parser_direct_ast/console_helper.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbd69586b838ea2e7e756fc178ec7d70b085c07f6ea9fff0b4ff44d9becc2dbc"}},{"ruleId":"D1","level":"warning","message":{"text":"_Cookie._parseSetCookieValue (cyclomatic 34): _Cookie._parseSetCookieValue has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":1092}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26fa4176b2fb8ae36d33a890da962b4a7cb82360aca5c75f04944fe09013976"}},{"ruleId":"D1","level":"warning","message":{"text":"_Future._propagateToListeners (cyclomatic 34): _Future._propagateToListeners has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/future_impl.dart"},"region":{"startLine":848}}}],"partialFingerprints":{"codehealthFindingId/v1":"881d0de1aad7e253b7209a5b9512b4fc8f54e596f8a0260d40f8f490137e260d"}},{"ruleId":"D1","level":"warning","message":{"text":"Arm64CodeGenerator.visitBinaryIntOp (cyclomatic 34): Arm64CodeGenerator.visitBinaryIntOp has cyclomatic complexity 34 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2536}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1d79587ac8046cec6ad47301dbd8257f6e9cccadd2d11d91632a2f5d424e9f1"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseTopLevelKeywordDeclaration (cyclomatic 34): Parser.parseTopLevelKeywordDeclaration has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"82df5fcb2a6d4457c82fa443a9274ab9dab121bd6ce34fc48fd2d589a9eb6ebb"}},{"ruleId":"D1","level":"warning","message":{"text":"ColorComputer._getDartUiColor (cyclomatic 34): ColorComputer._getDartUiColor has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_color.dart"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fa2f026f95ca69b7041f6aaa6291d17cdfaac675c70dd3c9635f5061194eb93"}},{"ruleId":"D1","level":"warning","message":{"text":"ExtractLocalRefactoringImpl._checkSelection (cyclomatic 34): ExtractLocalRefactoringImpl._checkSelection has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"a704734239d365caabba94bfc8ed716352aaeb60311dcf883cd30bce9936b27d"}},{"ruleId":"D1","level":"warning","message":{"text":"InheritanceManager3._getInterfaceExtensionType (cyclomatic 34): InheritanceManager3._getInterfaceExtensionType has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"30406b15afdd6f1fe5344a506db2c34d07b07cdeadb5e5ef17fff5f7a01c02ac"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodInvocationResolver._resolveInstanceInvocation (cyclomatic 34): MethodInvocationResolver._resolveInstanceInvocation has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"d173f80d4a5daffc002e00b3340d512f2a0524c1eeffd219d410a79560157e07"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramBuilder._addJsInteropStubs (cyclomatic 34): ProgramBuilder._addJsInteropStubs has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"002dd69acceb32a5c1d341881c7585d31d4b1cb5882b0d4789678f58c0c41d0c"}},{"ruleId":"D1","level":"warning","message":{"text":"FragmentEmitter.emitInstallTearOffs (cyclomatic 34): FragmentEmitter.emitInstallTearOffs has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1422}}}],"partialFingerprints":{"codehealthFindingId/v1":"040082d857a142230be9fbf813b5d4d184acd201fabf2709b95ca0f3b75921cd"}},{"ruleId":"D1","level":"warning","message":{"text":"ProtocolConverter.convertVmInstanceToVariablesList (cyclomatic 34): ProtocolConverter.convertVmInstanceToVariablesList has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1824c1b743b9348eafd271122e899c5e362efeef90e1b01edd8204890da2dd9"}},{"ruleId":"D1","level":"warning","message":{"text":"DartScopeBuilder2._looksLikeLateLoweredField (cyclomatic 34): DartScopeBuilder2._looksLikeLateLoweredField has cyclomatic complexity 34 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"7756dd27e712d694eb5252db97ec4a5fb3823f179a4051d0c91edd558cd4e024"}},{"ruleId":"D1","level":"warning","message":{"text":"OutlineBuilder.endPrimaryConstructor (cyclomatic 34): OutlineBuilder.endPrimaryConstructor has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"39f6ade335ca7fcab6db77f06611f4acd6b2b1eb12f49a349daeadcf565fe1ef"}},{"ruleId":"D1","level":"warning","message":{"text":"AsyncStateVisitor._visitIfLike (cyclomatic 34): AsyncStateVisitor._visitIfLike has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":812}}}],"partialFingerprints":{"codehealthFindingId/v1":"2966cbb41cbb071cd31a5d103976d8fb1e55c6367cb87aba55f394da175ac876"}},{"ruleId":"D1","level":"warning","message":{"text":"InstanceRefElement._createValue (cyclomatic 34): InstanceRefElement._createValue has cyclomatic complexity 34 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: InstanceRefElement._createLink (cyclomatic 43) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_ref.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"541707bd19e4ba6a561a2c2b028987e8907e2cfe3aa7e19d050c87da45889550"}},{"ruleId":"D1","level":"warning","message":{"text":"bin_to_assembly.Main (cyclomatic 34): bin_to_assembly.Main has cyclomatic complexity 34 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/bin_to_assembly.py"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"99ad7189d76206094db27efacbd40cd1e664eded6d670d0954cd5a1d697b7f29"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parse (cyclomatic 33): _ChunkedJsonParser.parse has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"802d6b5fe9d693829d80367224b08cd5ce151091d2a0463794f3a32a7911a5f6"}},{"ruleId":"D1","level":"warning","message":{"text":"_Utf8Decoder._convertChunkInternal (cyclomatic 33): _Utf8Decoder._convertChunkInternal has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2398}}}],"partialFingerprints":{"codehealthFindingId/v1":"8344b477086971e62d61ce88de021dd62ed0a924f815a2960415adb7d452fba3"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToInitializingFormal._computeChange (cyclomatic 33): ConvertToInitializingFormal._computeChange has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"190d2f3a7277994da66de55a988b12639267c3b5326e3611cac2770cb1f62f46"}},{"ruleId":"D1","level":"warning","message":{"text":"FlutterConvertToStatelessWidget.compute (cyclomatic 33): FlutterConvertToStatelessWidget.compute has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3e7f4a9f5ebf5dece5d76a579bd1e18e847e550d2d92adaa4adfc519d596171"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelInfoCollector.visitFunction (cyclomatic 33): KernelInfoCollector.visitFunction has cyclomatic complexity 33 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"242dad658c6098de74d9ff24a7fe47d02947f72fc5206b3e40f10fb8c784c114"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolutionWorldBuilder.registerStaticUse (cyclomatic 33): ResolutionWorldBuilder.registerStaticUse has cyclomatic complexity 33 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"851f0e02b4cfa8b9089499e09f3c9b5d937102f43d5bb79ad8ce8846a52b8dab"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator.handleConstructorInvocation (cyclomatic 33): ConstantEvaluator.handleConstructorInvocation has cyclomatic complexity 33 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3732}}}],"partialFingerprints":{"codehealthFindingId/v1":"4992a62bbb9ba9e88b3046bd1abf3daafeb3e4269c8b347c37b855b217d0601b"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorBase.inferMethodInvocation (cyclomatic 33): InferenceVisitorBase.inferMethodInvocation has cyclomatic complexity 33 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3621}}}],"partialFingerprints":{"codehealthFindingId/v1":"64a225f02e79e31e26b9984e0da945e4f6a8b9bc6ad07a55655f49454c38739e"}},{"ruleId":"D1","level":"warning","message":{"text":"_TextFormatter.add (cyclomatic 32): _TextFormatter.add has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/lib/text_formatter.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"e76523776b4d8ba4cc02bbd056ab467b8403995ac98f83ce177942c0f79fb460"}},{"ruleId":"D1","level":"warning","message":{"text":"Translator.translateStorageType (cyclomatic 32): Translator.translateStorageType has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"26acd78fa3e3ab9b785e73aefe6c7e60555027e5b59a58d1cdc69c9894d25907"}},{"ruleId":"D1","level":"warning","message":{"text":"DartdevRunner.runCommand (cyclomatic 32): DartdevRunner.runCommand has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/dartdev.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6cafc91d33abaad11c91e8c5b81882d185dc6e263d09a74b0c7527731c9e6a7"}},{"ruleId":"D1","level":"warning","message":{"text":"NoSuchMethodError.toString (cyclomatic 32): NoSuchMethodError.toString has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/errors_patch.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"d251fe39b5bcd4e0d506e0532cd2e8b19b3a43f241d743e95742d29c3f991462"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parse (cyclomatic 32): _ChunkedJsonParser.parse has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f298b64b05272d4c436a132bbee226522dd26ef98cbfb88caca5011055280e3"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseFields (cyclomatic 32): Parser.parseFields has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4438}}}],"partialFingerprints":{"codehealthFindingId/v1":"a54c89cfda0f7fa1686c4bcd02b4ce1e97de9b8c892104b5d598b1931edc44c9"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._addStaticMembers (cyclomatic 32): DeclarationHelper._addStaticMembers has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1633}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd9d442be837d451f83815e0bdf1fd34ecd353b43ed8a9d763197af0f04e2171"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportOrganizer._organizeDirectives (cyclomatic 32): ImportOrganizer._organizeDirectives has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/organize_imports.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c82b14de42143c42425dfea37b91bed50a1d8fa38c0f81d26ba1cb45e0afa5c"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpressionImpl.constantContext (cyclomatic 32): ExpressionImpl.constantContext has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This shape REPEATS in the file: one other method here (ExpressionImpl.constantContext2) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18135}}}],"partialFingerprints":{"codehealthFindingId/v1":"44730554fa0588f5fd4bc7b857718b36afcf192b9e6d0f98eb69344b8c4a4093"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpressionImpl.constantContext2 (cyclomatic 32): ExpressionImpl.constantContext2 has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This shape REPEATS in the file: one other method here (ExpressionImpl.constantContext) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18203}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d8fab55985a63e3bcd94cf3c7088d724321043d01b2b405c16e92f7ff669125"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluationEngine.computeDependencies (cyclomatic 32): ConstantEvaluationEngine.computeDependencies has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"812ebc91a1cdb578193df815803e8d8edb9a5e701f8bd6ed17c7d6113db3a2c9"}},{"ruleId":"D1","level":"warning","message":{"text":"_TodoFinder._check (cyclomatic 32): _TodoFinder._check has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/todo_finder.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cf01cf4de839475e72cf16edc2fd3027533835c9b60a60e953b72791656b7d3"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier._checkFfiNativeFunction (cyclomatic 32): FfiVerifier._checkFfiNativeFunction has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":839}}}],"partialFingerprints":{"codehealthFindingId/v1":"db4b6f048139a7a1f334ed172c3dc4366448884a2e027865f4f1d461dc4a50b0"}},{"ruleId":"D1","level":"warning","message":{"text":"Driver._analyzeAll (cyclomatic 32): Driver._analyzeAll has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/driver.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"37cdf7cea8c6d07a47a00ee036fa055ffcc6ac1e07bebed776766e804415ba1b"}},{"ruleId":"D1","level":"warning","message":{"text":"InferrerEngine._runOverAllElements (cyclomatic 32): InferrerEngine._runOverAllElements has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"32e28925f60dce06d449560ef7282aabdece4644591b3bc5d16926f5e769e7ed"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaSimplifyInterceptors.visitInterceptor (cyclomatic 32): SsaSimplifyInterceptors.visitInterceptor has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_simplifier.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9191d4241875c39262a0ff87a37bfdddf02508d09b44dcf9f2625fbe7d481d"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl.visitObjectPattern (cyclomatic 32): InferenceVisitorImpl.visitObjectPattern has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12652}}}],"partialFingerprints":{"codehealthFindingId/v1":"b42a5359c447ed4220c6d47afb1102626d5c3577d281e62943e26ec930ee87eb"}},{"ruleId":"D1","level":"warning","message":{"text":"BestEffortParserAstVisitor.accept (cyclomatic 32): BestEffortParserAstVisitor.accept has cyclomatic complexity 32 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe00909a9e4fd0a1c964a3e30b69df1e28f2822b40725882cd8415168d6834f5"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._check (cyclomatic 32): _Visitor._check has cyclomatic complexity 32 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_is_empty.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a558981fb82d8fa3874286d1f010e23bb601f4b0a43a4fdc4c4b44ad56a0dd4"}},{"ruleId":"D1","level":"warning","message":{"text":"Instance._update (cyclomatic 32): Instance._update has cyclomatic complexity 32 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: ServiceObject._fromMap (cyclomatic 50) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":3023}}}],"partialFingerprints":{"codehealthFindingId/v1":"25b2ba98cc143c87c3b8c43df83bcc6e5c0e11c434ac8457321e2b10543043fb"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassIdNumbering._number (cyclomatic 31): ClassIdNumbering._number has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/class_info.dart"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"de212a0c794c9783ec8306cb7f8b857024b04abde3ef7b4699c665256873b534"}},{"ruleId":"D1","level":"warning","message":{"text":"ParserCreatorListener.endMethod (cyclomatic 31): ParserCreatorListener.endMethod has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/parser_ast_helper_creator.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"13d21e396c3000188dc9babcc823bf3a682b3b32f58b12c0d939706e9e66eb66"}},{"ruleId":"D1","level":"warning","message":{"text":"Scrape._processPath (cyclomatic 31): Scrape._processPath has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/lib/scrape.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"5984ebe97d774acd00c664978211582ae51905a4704c93c7969abd2f2297ef2c"}},{"ruleId":"D1","level":"warning","message":{"text":"_BigIntImpl.modPow (cyclomatic 31): _BigIntImpl.modPow has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":1939}}}],"partialFingerprints":{"codehealthFindingId/v1":"1606785440a2d404cdfc39971962ac46c165bcf816488593e01d17c726143bed"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator._visitElements (cyclomatic 31): Evaluator._visitElements has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Evaluator._isNull (cyclomatic 34) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fd9dc9e37393e35935720665cb10c02c7a63780bec84f3d5643862ce61b5a9d"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeConstraintGenerator.performSubtypeConstraintGenerationInternal (cyclomatic 31): TypeConstraintGenerator.performSubtypeConstraintGenerationInternal has cyclomatic complexity 31 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":2173}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbb2fa73aa9fedd64ad548658ba716a1d84c1da0b0f38d5e7d0183148db8a282"}},{"ruleId":"D1","level":"warning","message":{"text":"ColorComputer.getExpressionColorObject (cyclomatic 31): ColorComputer.getExpressionColorObject has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_color.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d925185ef941c33d5bc493e71d7c971c2f19f8849d7a5caf802f28584d90741"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._addLocalDeclarations (cyclomatic 31): DeclarationHelper._addLocalDeclarations has cyclomatic complexity 31 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1309}}}],"partialFingerprints":{"codehealthFindingId/v1":"194ca13ba64e7d27455ab56e2705571d5318a6e9581fc6d48ff15bc552fa56a9"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitExpressionStatement (cyclomatic 31): InScopeCompletionPass.visitExpressionStatement has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"960866389699cf45c1d1803cb90af7f39079b9a9908bdb626b9935c063d72bea"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToFunctionDeclaration.compute (cyclomatic 31): ConvertToFunctionDeclaration.compute has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_function_declaration.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcf305b4913c8d21fbb54c430effc7f260fe5e7ea1fe61d7574eaa7696461b9d"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyElementResolver.resolveCascadeIndex (cyclomatic 31): PropertyElementResolver.resolveCascadeIndex has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"649d0ea2f9cc5ac1d40798dddc5560daf974db3848ee973f8836eca0682bd6d4"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkUseOfDefaultValuesInParameters (cyclomatic 31): ErrorVerifier._checkUseOfDefaultValuesInParameters has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8632}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee3f2bc83b00a831f3ade1176655862a2cb637606275ebe851268e5a06c791d5"}},{"ruleId":"D1","level":"warning","message":{"text":"NativeBehavior.processSpecString (cyclomatic 31): NativeBehavior.processSpecString has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c6694189bbcd2092028ba4a5ffef4515e6d4d17cbf73fa6c8b364828daebb9e"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder.build (cyclomatic 31): KernelSsaGraphBuilder.build has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5ad2f7eb7c20e5ef82372b8174567bc23a7b30c508fd97ddaa940f744ac090c"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaAssignmentChaining.tryChainAssignment (cyclomatic 31): SsaAssignmentChaining.tryChainAssignment has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3c58e6f02f2b3de144d6ab1302e74bc152515b1e0ba45884bd2d38db855ffb"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassHierarchyImpl.commonSubclasses (cyclomatic 31): ClassHierarchyImpl.commonSubclasses has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"3483135dbb0475262ec6f145fd602c25fd6e92f53f09a54c071a110dbf14c894"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticUse.shortText (cyclomatic 31): StaticUse.shortText has cyclomatic complexity 31 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/use.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d0d520cbf1c775931de28dc58421fc8baa82cf934b70b4c60f09a7a8fb6233"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._emitClassSignature (cyclomatic 31): ProgramCompiler._emitClassSignature has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1816}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bfa33ac56412d7359cbfe96f0159779dc67ceff289610d389484749c2a452b6"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._emitClassSignature (cyclomatic 31): LibraryCompiler._emitClassSignature has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2113}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef008cefaa44609c07ef1891b96b36c77f2c64723fba500ddcadfc4e9d08ed8f"}},{"ruleId":"D1","level":"warning","message":{"text":"Modifiers.from (cyclomatic 31): Modifiers.from has cyclomatic complexity 31 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/modifiers.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cdb0ebc39f3f6ff18cacec9a50029ffb63496fdf3ab8db0135a291dbbff5a39"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstructorDeclarationMixin._finalizeSuperInitializingFormals (cyclomatic 31): _ConstructorDeclarationMixin._finalizeSuperInitializingFormals has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"94794d3c3ff5922c9f588947594131f0157fab2c61f738202de2e6d6b77c96cb"}},{"ruleId":"D1","level":"warning","message":{"text":"CfeTypeOperations.getFieldTypes (cyclomatic 31): CfeTypeOperations.getFieldTypes has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"918389333a1e5416e33828b91a11416079c3358f796155a14a14cbec45c73502"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceClassBuilder.checkOverride (cyclomatic 31): SourceClassBuilder.checkOverride has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7e1257a5186a9951f9f1137077f42413123e34618b0d78a872321c2c102804"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorBase.inferLocalFunction (cyclomatic 31): InferenceVisitorBase.inferLocalFunction has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2225}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d2b22c2234bc0a20f179571d3ffe73fec3f4b5ec909996e5a8e2541f4b4653"}},{"ruleId":"D1","level":"warning","message":{"text":"Event.toJson (cyclomatic 31): Event.toJson has cyclomatic complexity 31 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":4168}}}],"partialFingerprints":{"codehealthFindingId/v1":"7271e50f01cf56ebde3daa0ba3dab803e0dece50d37ea2aa27e1268ddad8c255"}},{"ruleId":"D1","level":"warning","message":{"text":"Instructions.printTo (cyclomatic 31): Instructions.printTo has cyclomatic complexity 31 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/instructions.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ad8c52859ef550e4a4f40d32063bbd0358b7f1a92829654fedb3a4fb81e4a96"}},{"ruleId":"D1","level":"warning","message":{"text":"_HttpClientConnection.send (cyclomatic 30): _HttpClientConnection.send has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: _HttpResponse._findReasonPhrase (cyclomatic 42) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":2274}}}],"partialFingerprints":{"codehealthFindingId/v1":"12a833ffdf34becbf64855c401fed5b472e730726b92b8b01ae3cc63487952aa"}},{"ruleId":"D1","level":"warning","message":{"text":"DeeplyImmutableValidator._validateDeeplyImmutable (cyclomatic 30): DeeplyImmutableValidator._validateDeeplyImmutable has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/deeply_immutable.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eaf3ba88094fdb734942a96f8e190c0f07e523806ae73e1df6c8de277957478"}},{"ruleId":"D1","level":"warning","message":{"text":"Evaluator._visitElement (cyclomatic 30): Evaluator._visitElement has cyclomatic complexity 30 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: Evaluator._isNull (cyclomatic 34) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5704b99d90d87588b5d6a72b2c8422f4bbb7997a412a5bdc89d91a0cc058db"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractScanner._spacesAtStartOfLogicalLineOf (cyclomatic 30): AbstractScanner._spacesAtStartOfLogicalLineOf has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"971f668f164e55127711ff3c0721ed3ae2cce614a0677027575bd918e2d464c7"}},{"ruleId":"D1","level":"warning","message":{"text":"_EnumDescription._validateFields (cyclomatic 30): _EnumDescription._validateFields has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":653}}}],"partialFingerprints":{"codehealthFindingId/v1":"a38edb03215b46de274568d8c6a637fef8b134ef2cf3f02b7fd0abfb5242684c"}},{"ruleId":"D1","level":"warning","message":{"text":"ExtractMethodRefactoringImpl.buildChange (cyclomatic 30): ExtractMethodRefactoringImpl.buildChange has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"89152b7d69b517962c7b9b380f78529017852123cd588bb42427ee4eb27b0870"}},{"ruleId":"D1","level":"warning","message":{"text":"AstRewriter.parsedExpression (cyclomatic 30): AstRewriter.parsedExpression has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"f78164f9a99d46c962ac77f3bfbdae0387a7ad39daf21e2fb808581f82b2c440"}},{"ruleId":"D1","level":"warning","message":{"text":"MemberDuplicateDefinitionVerifier._checkClassMembers (cyclomatic 30): MemberDuplicateDefinitionVerifier._checkClassMembers has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a8d913e17558fc3e55aeaf091145b642e66680d0be1e6b787c6cd41e90b2e79"}},{"ruleId":"D1","level":"warning","message":{"text":"RuntimeTypesSubstitutionsMixin._computeChecks (cyclomatic 30): RuntimeTypesSubstitutionsMixin._computeChecks has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db08ad4cea324119fea95abd1591a40d3015f0486afd8af4fe7df2067e77ddc"}},{"ruleId":"D1","level":"warning","message":{"text":"RuntimeTypesImpl.computeRequiredChecks (cyclomatic 30): RuntimeTypesImpl.computeRequiredChecks has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"54b53404eb1698945d101defa8b0c6e716eac1c6b98bbb4705975d032d06b22f"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaConditionMerger.visitBasicBlock (cyclomatic 30): SsaConditionMerger.visitBasicBlock has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0dbb0c334c174014774d6e6184d3a4fc767bfe047d010abac344e8a718c0b4e"}},{"ruleId":"D1","level":"warning","message":{"text":"BuildCliSubcommand.doBuild (cyclomatic 30): BuildCliSubcommand.doBuild has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/build.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac10dc3bdbcaeec0328c15fec4824b88ff8f318257c5ddd7fada55237fe6cd0a"}},{"ruleId":"D1","level":"warning","message":{"text":"NamedTypeBuilderImpl.findRawTypesWithInboundReferences (cyclomatic 30): NamedTypeBuilderImpl.findRawTypesWithInboundReferences has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: NamedTypeBuilderImpl._checkDeferred (cyclomatic 32) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":1169}}}],"partialFingerprints":{"codehealthFindingId/v1":"fba9182eb712c873954131c5e2fde63d2449c5720c31d55829a38969bc0a5797"}},{"ruleId":"D1","level":"warning","message":{"text":"DelayedDefaultValueCloner.cloneDefaultValues (cyclomatic 30): DelayedDefaultValueCloner.cloneDefaultValues has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_helper.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"93662843ff61979d80ceb40385750560396d7320aff7350e864dd2727ad92407"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl.visitSpreadElement (cyclomatic 30): InferenceVisitorImpl.visitSpreadElement has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4554}}}],"partialFingerprints":{"codehealthFindingId/v1":"16920dbb029812906213be83227faec034e9564eb7923ae70df848276016b6ac"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl._computeIndexGet (cyclomatic 30): InferenceVisitorImpl._computeIndexGet has cyclomatic complexity 30 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8041}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c3fa4755cc89c6bd3268a476a6da959ed545df3cab9904437fc64f2b0ab479"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorBase.inferPropertySet (cyclomatic 30): InferenceVisitorBase.inferPropertySet has cyclomatic complexity 30 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":4595}}}],"partialFingerprints":{"codehealthFindingId/v1":"a15086272eafe7d5434e295682882c3032a8c857984b68ffe74ef00b90e3c5a6"}},{"ruleId":"D1","level":"warning","message":{"text":"ParserASTListener.seen (cyclomatic 30): ParserASTListener.seen has cyclomatic complexity 30 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":1755}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b95aac5d9b2163112350839f396e958e1ca3873da992c1513b6c9d6adbf96d6"}},{"ruleId":"D1","level":"warning","message":{"text":"_Transform.transformCall (cyclomatic 30): _Transform.transformCall has cyclomatic complexity 30 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/signature_shaking.dart"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"f469ae645443cd0f1940a6a5640ad1df8a084b48a8ed4c54fd1a3bfcce98234f"}},{"ruleId":"D1","level":"warning","message":{"text":"FunctionDeclaration.toString (cyclomatic 29): FunctionDeclaration.toString has cyclomatic complexity 29 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"f23c81d176fa34a8e8a22b6270d6bafd11d206d3e8e82182fd356a1e3908ebe5"}},{"ruleId":"D1","level":"warning","message":{"text":"_KeyboardEventHandler._firesKeyPressEvent (cyclomatic 29): _KeyboardEventHandler._firesKeyPressEvent has cyclomatic complexity 29 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators. This is NOT this file\u0027s highest cyclomatic complexity: _KeyboardEventHandler._findCharCodeKeyDown (cyclomatic 30) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/KeyboardEventStream.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e38640d0c8ee99b706eee787bd6a1a330d584ac19f6cdedc4708e9f9ea476d2"}},{"ruleId":"D1","level":"warning","message":{"text":"IrToText._printInputs (cyclomatic 29): IrToText._printInputs has cyclomatic complexity 29 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/ir_to_text.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"3027a9666ecb8fe51e4221773df6f8892900429673118fd492c9062c83c1d249"}},{"ruleId":"D1","level":"warning","message":{"text":"ModifierContext.parseFormalParameterModifiers (cyclomatic 29): ModifierContext.parseFormalParameterModifiers has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"8be53a5e87759bd52d2f8309f80eda676e9621534cef64db1bc36bf1bbdc4291"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parsePrimaryConstructorOpt (cyclomatic 29): Parser.parsePrimaryConstructorOpt has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":3782}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3c0a09882b9b6de07b3d803ab3d9cdd2db1c224d784ea4630be18d36889616d"}},{"ruleId":"D1","level":"warning","message":{"text":"FeaturesDataInterpreter.isAsExpected (cyclomatic 29): FeaturesDataInterpreter.isAsExpected has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/features.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"386fccc2d97f869175103fc461497545dd96fa18adf1f2006d0b5fe08a1088d1"}},{"ruleId":"D1","level":"warning","message":{"text":"AddMissingRequiredArgument.compute (cyclomatic 29): AddMissingRequiredArgument.compute has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd07916d6280a9a55b58e6c93077b7684b1b3d61a356f8d77b3df43ef1dc469"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveAsync.compute (cyclomatic 29): RemoveAsync.compute has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_async.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"8af09d598bf89bfee61b145b2cf0fb3fbe848a41aa6f4c6bfbee397f20b43cd7"}},{"ruleId":"D1","level":"warning","message":{"text":"_ParsedLinterData._parseLocalRules (cyclomatic 29): _ParsedLinterData._parseLocalRules has cyclomatic complexity 29 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1219}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae7b37d2a5570c92ebd240eb8f44dd5a49153fd169f5b3183142596e5a54921f"}},{"ruleId":"D1","level":"warning","message":{"text":"BaseOrFinalTypeVerifier._reportRestrictionError (cyclomatic 29): BaseOrFinalTypeVerifier._reportRestrictionError has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/base_or_final_type_verifier.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"02ecb748e74b721123ab46e04041a96236b1fa7bfa4eb703857bb6fc4854af91"}},{"ruleId":"D1","level":"warning","message":{"text":"ReturnTypeVerifier._checkReturnExpression (cyclomatic 29): ReturnTypeVerifier._checkReturnExpression has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/return_type_verifier.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"60c2ce0bcc79b2d43b7eb351938317e5ff0e0e39ecdf10d2cbe327fd943c7499"}},{"ruleId":"D1","level":"warning","message":{"text":"_TodoFinder.moveNext (cyclomatic 29): _TodoFinder.moveNext has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/todo_finder.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bc3b88962957b608c42ff9da16dee878ce89a2c0897bb16ba3706e90c3cf6d2"}},{"ruleId":"D1","level":"warning","message":{"text":"OnlineJavaScriptTracer._handleNotifySteps (cyclomatic 29): OnlineJavaScriptTracer._handleNotifySteps has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":1644}}}],"partialFingerprints":{"codehealthFindingId/v1":"166c9844723af1e4b94e8b169ce4f2953210747cb2af2fa4865ae4478c03453b"}},{"ruleId":"D1","level":"warning","message":{"text":"FormattingDiagnosticHandler.report (cyclomatic 29): FormattingDiagnosticHandler.report has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/source_file_provider.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"62da2e96d53960eedecd86894166c1b543b56c799940d5941a94f2675ee5ee1d"}},{"ruleId":"D1","level":"warning","message":{"text":"DartDebugAdapter.evaluateRequest (cyclomatic 29): DartDebugAdapter.evaluateRequest has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a34071a07d38bdf676a5775964d65fa31c9fa0fc2aee402d06d946b9385d5d0"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementalCompiler._computeExpressionCompilationScopeData (cyclomatic 29): IncrementalCompiler._computeExpressionCompilationScopeData has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2476}}}],"partialFingerprints":{"codehealthFindingId/v1":"35a46e7733c5ef7021f5b2a2d09e567b5f185e1e85f6513ff61be44177d69d5b"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator.visitStaticInvocation (cyclomatic 29): ConstantEvaluator.visitStaticInvocation has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5181}}}],"partialFingerprints":{"codehealthFindingId/v1":"9777eac531da9621c60da97d45009b6113f8ea59ed1a7a0cbae398c820abd78f"}},{"ruleId":"D1","level":"warning","message":{"text":"BuilderFactory._createDeclarationFromFragment (cyclomatic 29): BuilderFactory._createDeclarationFromFragment has cyclomatic complexity 29 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eab12829c51954cce5792596cf195811a925200bbe848aab863f191afe70de1"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl._computeBinaryExpression (cyclomatic 29): InferenceVisitorImpl._computeBinaryExpression has cyclomatic complexity 29 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7651}}}],"partialFingerprints":{"codehealthFindingId/v1":"718d5e21c445a7680805f2eeaa30b0f9418af0b5b327d69909e853a4fc90e13c"}},{"ruleId":"D1","level":"warning","message":{"text":"ResidentFrontendServer._generateCompilerOptions (cyclomatic 29): ResidentFrontendServer._generateCompilerOptions has cyclomatic complexity 29 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/resident_frontend_server.dart"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"699e3a390bf0215fcd127b1986bdf46f0399007543348fa09538d3e2a98c3669"}},{"ruleId":"D1","level":"warning","message":{"text":"ServiceEvent._update (cyclomatic 29): ServiceEvent._update has cyclomatic complexity 29 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: ServiceObject._fromMap (cyclomatic 50) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":2342}}}],"partialFingerprints":{"codehealthFindingId/v1":"d09bc7c80af017f74c345e180a5d45cbfe78416c5737c98508bb3b31b84ce402"}},{"ruleId":"D1","level":"warning","message":{"text":"minimize.minimize (cyclomatic 29): minimize.minimize has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/minimize.py"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"a21c109ca69dbff0e23666012e359f982428624de9b8e7c72e0c0c42913fb82b"}},{"ruleId":"D1","level":"warning","message":{"text":"Dart2JSBackend.EmitAttribute (cyclomatic 29): Dart2JSBackend.EmitAttribute has cyclomatic complexity 29 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1509}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8c71a869791575663d774cc2c95b238cbca19d18bdc1a11c9a238f60553a9a"}},{"ruleId":"D1","level":"warning","message":{"text":"LogPlayer.play (cyclomatic 28): LogPlayer.play has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/log_player.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e053ae9366a9733548a10222d5f56a00a783b6ec6f87dd1932c1ab38b25ac79"}},{"ruleId":"D1","level":"warning","message":{"text":"_TypeUniverse.isSubtype (cyclomatic 28): _TypeUniverse.isSubtype has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc55c14117a7e9847822f84f6f035951329fced32f85d5b1e32af6b042f74c99"}},{"ruleId":"D1","level":"warning","message":{"text":"StackChecker.checkStackStateForAssert (cyclomatic 28): StackChecker.checkStackStateForAssert has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/stack_checker.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"5de1f24e45a9944c84dfe0a2dcb27461648eb8ba62ca9cb2611989c226e8cfe5"}},{"ruleId":"D1","level":"warning","message":{"text":"RenameHandler.handle (cyclomatic 28): RenameHandler.handle has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9f24a1893a5f2b13f0b0a215c0e3ca79ebdb1ec9c8b8b0e1ccc8a237f2dfead"}},{"ruleId":"D1","level":"warning","message":{"text":"AddDiagnosticPropertyReference.compute (cyclomatic 28): AddDiagnosticPropertyReference.compute has cyclomatic complexity 28 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c8e18375ddd009403e75daf04482b61d22e9152f97fd375589536b8c0d731ef"}},{"ruleId":"D1","level":"warning","message":{"text":"_AddDigitSeparators.compute (cyclomatic 28): _AddDigitSeparators.compute has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_digit_separators.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ec81c2c4417e4338a032d1d1b69df90b05ed8bea599dac579781379a46634f6"}},{"ruleId":"D1","level":"warning","message":{"text":"PubspecFixGenerator._addMissingDependency (cyclomatic 28): PubspecFixGenerator._addMissingDependency has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"019dfab2b711c727e723a41eb43b0a94e3e0da28ba77db647a565952e8090b2b"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantVerifier._validateSwitchExhaustiveness (cyclomatic 28): ConstantVerifier._validateSwitchExhaustiveness has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"1927806edd022e3007b8c26012073b022fecc35a2f740291b68f08e6c2108e71"}},{"ruleId":"D1","level":"warning","message":{"text":"BestPracticesVerifier._getSubExpressionsMarkedDoNotStore (cyclomatic 28): BestPracticesVerifier._getSubExpressionsMarkedDoNotStore has cyclomatic complexity 28 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":1651}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fad66b43db34f68fccb1b641c83c305ceef8af92bf1c23ee0753d101265134e"}},{"ruleId":"D1","level":"warning","message":{"text":"_InvalidAccessVerifier._checkForOtherInvalidAccess (cyclomatic 28): _InvalidAccessVerifier._checkForOtherInvalidAccess has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":2065}}}],"partialFingerprints":{"codehealthFindingId/v1":"e077dcb39749439472df705adb2294a7ac8faaa882e1152d1e0405b3c803a715"}},{"ruleId":"D1","level":"warning","message":{"text":"_Validator.run (cyclomatic 28): _Validator.run has cyclomatic complexity 28 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/validator.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"667cabde2b7c2523b8499dc4467d07939a048fc1d8cb020881e10998a5d6a9d1"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._defineClass (cyclomatic 28): LibraryCompiler._defineClass has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1792}}}],"partialFingerprints":{"codehealthFindingId/v1":"25f74fb33a22f6512425f70500faa0320d2662b38ec8156ad38214a00e546302"}},{"ruleId":"D1","level":"warning","message":{"text":"DillLibraryBuilder.finalizeExports (cyclomatic 28): DillLibraryBuilder.finalizeExports has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_library_builder.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"76474b2629e432876571f780bc3f6565f0ab49fb7f780f7178c8b467e9381628"}},{"ruleId":"D1","level":"warning","message":{"text":"_PropertyPreBuilder.absorbFragment (cyclomatic 28): _PropertyPreBuilder.absorbFragment has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2179}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b382254b39fb634f7a845e8ea92cd86c2062bddd6a27b4e02fa03120df52dca"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceTypeAliasBuilder.buildTypedefTearOffs (cyclomatic 28): SourceTypeAliasBuilder.buildTypedefTearOffs has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"510b4aecbeab869f4696556c54a67c8bbd7b7c75d6d21bef059f4f0b83dc4382"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl._computeUnaryExpression (cyclomatic 28): InferenceVisitorImpl._computeUnaryExpression has cyclomatic complexity 28 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7864}}}],"partialFingerprints":{"codehealthFindingId/v1":"662bcb33e50763df7a3bd64728e68c88cd8efb2abf62fae6f0432ef20a090c6d"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl.visitRecordLiteral (cyclomatic 28): InferenceVisitorImpl.visitRecordLiteral has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":11054}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b66323d8d008219bc231016675cc1a9f58bf0fe7adca7844a526205baf2011"}},{"ruleId":"D1","level":"warning","message":{"text":"_ObjectAccessDescriptor._findNonExtensionTargetInternal (cyclomatic 28): _ObjectAccessDescriptor._findNonExtensionTargetInternal has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":6343}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf32541fe783cc6e9d11273923eb851f62d73f9206d7257a8ba4e2be13f31c2"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.getInvalidJsInteropTypeTest (cyclomatic 28): _Visitor.getInvalidJsInteropTypeTest has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b124e765dab8324c860002f5741aa9452e3b84913db7ef7e244f673f220bd0"}},{"ruleId":"D1","level":"warning","message":{"text":"ObservatoryDebugger.onEvent (cyclomatic 28): ObservatoryDebugger.onEvent has cyclomatic complexity 28 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1740}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e2f4bd93bd218499119a95429cf8f80b303584a5ccd7bddfe9951d91231251"}},{"ruleId":"D1","level":"warning","message":{"text":"_KernelFromParsedType.visitNamedType (cyclomatic 28): _KernelFromParsedType.visitNamedType has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/testing/type_parser_environment.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b0c358871730bceeb55657258b22aebcae7e47ab84c4a58a9351ad7fa712e4"}},{"ruleId":"D1","level":"warning","message":{"text":"gn.ToGnArgs (cyclomatic 28): gn.ToGnArgs has cyclomatic complexity 28 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/gn.py"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"980fa828460383f1557fbe195e9ff948466b82c9eb6997fb45b05990ae06c290"}},{"ruleId":"D1","level":"warning","message":{"text":"gn.ProcessOptions (cyclomatic 28): gn.ProcessOptions has cyclomatic complexity 28 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/gn.py"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"051407b377aafcf86a5b5d17d046e384b82564ba3b67fd5bc2be64edee063489"}},{"ruleId":"D1","level":"warning","message":{"text":"SessionLogAnalyzer.printReport (cyclomatic 27): SessionLogAnalyzer.printReport has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/.agents/skills/improve-performance-with-session-log/scripts/analyze_session_log.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8f63b48dc6eab884f6538c597c346c7e52628a8bb72d6c85e4e9ea1b9936ae"}},{"ruleId":"D1","level":"warning","message":{"text":"DevToolsServer._serveDevToolsWithArgs (cyclomatic 27): DevToolsServer._serveDevToolsWithArgs has cyclomatic complexity 27 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac20857f3612d361a79f0a86477a27ecf77d26d33e86cbd8dc77fda22b96f17f"}},{"ruleId":"D1","level":"warning","message":{"text":"Configuration.optionsEqual (cyclomatic 27): Configuration.optionsEqual has cyclomatic complexity 27 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"7067624b36ff22f5aeb5844411eccb21644a167d9a1e51ddbb348fc382a21b59"}},{"ruleId":"D1","level":"warning","message":{"text":"StatusFile._parse (cyclomatic 27): StatusFile._parse has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/status_file/lib/canonical_status_file.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb96194c266af401973fefbfe72dae6358181745be3d05b382ebd5b12dabba44"}},{"ruleId":"D1","level":"warning","message":{"text":"KeyCode.isCharacterKey (cyclomatic 27): KeyCode.isCharacterKey has cyclomatic complexity 27 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators. This is NOT this file\u0027s highest cyclomatic complexity: KeyCode._convertKeyCodeToKeyName (cyclomatic 40) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/KeyCode.dart"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f3566fd921aea36b7fb6ef49edeb1e0f3922c8cd466b6a7ee8b34b5cc9fe11"}},{"ruleId":"D1","level":"warning","message":{"text":"_Utf8Decoder.convertChunked (cyclomatic 27): _Utf8Decoder.convertChunked has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1869}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4f0f647f0a0384bf4ca7ed700d551aa1b87cd78d63ede2439cfa0dd53adae72"}},{"ruleId":"D1","level":"warning","message":{"text":"Arm64CodeGenerator.visitCompareAndBranch (cyclomatic 27): Arm64CodeGenerator.visitCompareAndBranch has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"25f8c6a774e9bfb1bbfb35429f7b0999bc5874b4c3117b705c576db4c52c916b"}},{"ruleId":"D1","level":"warning","message":{"text":"LinearScanRegisterAllocator.buildLiveRanges (cyclomatic 27): LinearScanRegisterAllocator.buildLiveRanges has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"057265374014debda54081f093fe2ec13d562e7d4c70b34fc82923d10bfd31ef"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parsePrimaryPattern (cyclomatic 27): Parser.parsePrimaryPattern has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11653}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ff6f3f5f2ee8bd8bd5254e0b420240d36c52512f707f1ea3620d268671d24ac"}},{"ruleId":"D1","level":"warning","message":{"text":"ComplexTypeParamOrArgInfo.parseUnexpectedEnd (cyclomatic 27): ComplexTypeParamOrArgInfo.parseUnexpectedEnd has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1607}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfdb1297eb94425db17a5bf05f80cdba0c76a8d10820d49a0326ebe3ebeded08"}},{"ruleId":"D1","level":"warning","message":{"text":"MessageScheduler.add (cyclomatic 27): MessageScheduler.add has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/message_scheduler.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"814ef55534d84e1305d7377d5830da3b4a952517c99cff477aee13976f5216a4"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitClassDeclaration (cyclomatic 27): InScopeCompletionPass.visitClassDeclaration has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"f62a15439df1a5718758147c1134aa320fa74b844b9d22bd4612aecedc28678b"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToFlutterStyleTodo.compute (cyclomatic 27): ConvertToFlutterStyleTodo.compute has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_flutter_style_todo.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da9909f294d27a8c31d35ddf2fc5cfa0f900cf6edb14bc2f628955dc672863d"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToInitializingFormal.compute (cyclomatic 27): ConvertToInitializingFormal.compute has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ea49c5ba87330f3ca70f4f0b11e3c3147b060252c73b9721cead7f449f905d"}},{"ruleId":"D1","level":"warning","message":{"text":"MoveTopLevelToFile._membersToMove (cyclomatic 27): MoveTopLevelToFile._membersToMove has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/move_top_level_to_file.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"dddbeb4b1886e3e9f4641b0fc84fa537303e940ce653095b861662e43a7fc7c0"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstLiteralVerifier.verify (cyclomatic 27): _ConstLiteralVerifier.verify has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1243}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dde3f6f31aac28ce3694dc6196ff2bc19bd3f32ef8cb30020cf6585fe110376"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantVisitor._getConstantValue (cyclomatic 27): ConstantVisitor._getConstantValue has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2011}}}],"partialFingerprints":{"codehealthFindingId/v1":"208f245db72262a484b681dd83028e13457cf8270af2899e98c1e1b5bf48e4c4"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstructorInvocationEvaluator._checkInitializers (cyclomatic 27): _ConstructorInvocationEvaluator._checkInitializers has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3256}}}],"partialFingerprints":{"codehealthFindingId/v1":"024c5abb4958c92385b431fdafd4ae512cbdb9e6d50030f6f5cd5371cfba9a61"}},{"ruleId":"D1","level":"warning","message":{"text":"InheritanceManager3._getInterfaceClass (cyclomatic 27): InheritanceManager3._getInterfaceClass has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f51f2b3c98bbe03e2648ed09d2c7504248f71b5b548863d10acf45eff923b2"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForFinalSupertypeOutsideOfLibrary (cyclomatic 27): ErrorVerifier._checkForFinalSupertypeOutsideOfLibrary has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5758}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c497e0598093a7a714a92cc8dd2bdb93373bbbadf6e83be9480870c88097553"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForUnnecessaryNullAware (cyclomatic 27): ErrorVerifier._checkForUnnecessaryNullAware has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":7919}}}],"partialFingerprints":{"codehealthFindingId/v1":"aef76f3edfb05498569069c0a41bf616f1bbc4caefc1c3565c64294005d71eb5"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolverVisitor.resolveArgumentsToParameters (cyclomatic 27): ResolverVisitor.resolveArgumentsToParameters has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":6183}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbaeddb849f9528714bfdbfdad53aa7f2137ffb9f14014ace7eb2bec4d1b3ca5"}},{"ruleId":"D1","level":"warning","message":{"text":"CompletionTarget.computeReplacementRange (cyclomatic 27): CompletionTarget.computeReplacementRange has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"09fe5f12623756156e1dde3c614505557e7285b292933d2c10a2a77471865932"}},{"ruleId":"D1","level":"warning","message":{"text":"CodegenEnqueuerListener._processClass (cyclomatic 27): CodegenEnqueuerListener._processClass has cyclomatic complexity 27 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/codegen_listener.dart"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5fc85da00f2ad55184d1352a51a801037616512549690c12cdc08a9b46e7476"}},{"ruleId":"D1","level":"warning","message":{"text":"CodegenWorldBuilder.generateParameterStubs (cyclomatic 27): CodegenWorldBuilder.generateParameterStubs has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"b04e595f24d01e166a15a99b4597dedce0415bf5925c7c076d16ec54bb4e648b"}},{"ruleId":"D1","level":"warning","message":{"text":"ProtocolConverter.convertVmToDapStackFrame (cyclomatic 27): ProtocolConverter.convertVmToDapStackFrame has cyclomatic complexity 27 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b6636842c23470094c7a96f96de85d84e5446519d782a8c45b76d463781b869"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpressionCompiler.compileExpressionToJs (cyclomatic 27): ExpressionCompiler.compileExpressionToJs has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"f998252f31531d2553a7030bff31c075f94cc128180ff11f82466b0479e0f6dc"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl.beginSwitchCase (cyclomatic 27): BodyBuilderImpl.beginSwitchCase has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"89b13d329172df7acc42f46f4284a04b790283758b4330731e173620c68c0f8c"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl.endFormalParameter (cyclomatic 27): BodyBuilderImpl.endFormalParameter has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3745}}}],"partialFingerprints":{"codehealthFindingId/v1":"fabba5d6124aca12f54864e3586ad780de12e8ee4a71f934e210ee782afb7a5c"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl.endSwitchCase (cyclomatic 27): BodyBuilderImpl.endSwitchCase has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":5435}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d5335764f8f7eb20fd4078ecc8b225450ea7537d6e4893ecf34065ea449bb5"}},{"ruleId":"D1","level":"warning","message":{"text":"_InitializerBuilder._createImplicitSuperInitializer (cyclomatic 27): _InitializerBuilder._createImplicitSuperInitializer has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver_helpers.dart"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1838bc3a7a856510a1b6040b3f1312b2b13add4f77536f41c87ccab3f15814"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl._checkElement (cyclomatic 27): InferenceVisitorImpl._checkElement has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4153}}}],"partialFingerprints":{"codehealthFindingId/v1":"753f68939d6bc3cf8fbe6627ac4e94159da6b243feea9f5f35624ece7c489dcb"}},{"ruleId":"D1","level":"warning","message":{"text":"NodeCreator._generateBodies (cyclomatic 27): NodeCreator._generateBodies has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: NodeCreator._createExpressionFromKind (cyclomatic 70) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"59c8a2ad09729a43d0f6a7e8916b7b02dc9fcfe6bd14658727ef23b75f09abb7"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitNamedType (cyclomatic 27): _Visitor.visitNamedType has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_void_to_null.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"f02445ceb626fba247289603047e21e3ee2834f762c5ac06e6edd8a8ec838df3"}},{"ruleId":"D1","level":"warning","message":{"text":"HeapSnapshotElement._createReport (cyclomatic 27): HeapSnapshotElement._createReport has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b0d2a8d27ead37bc92ad66fa8c12104fbcc730861df8f36540809226fa9faf5"}},{"ruleId":"D1","level":"warning","message":{"text":"PragmaEntryPointsVisitor.visitProcedure (cyclomatic 27): PragmaEntryPointsVisitor.visitProcedure has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/native_code.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"657a62673f50b0727967a3d047d67da41e2f7d91db89cffdae39f2a97284a8a7"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeRegistry._TypeInfo (cyclomatic 27): TypeRegistry._TypeInfo has cyclomatic complexity 27 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":2088}}}],"partialFingerprints":{"codehealthFindingId/v1":"4540e0e2ca5a5a9e1a8e5f18c8fb0e33300b7b15155a1ee1791b2ad03e1dea09"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._tryFixingMethodInvocation (cyclomatic 26): _Visitor._tryFixingMethodInvocation has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/tool/messages/use_literate_api_in_analyzer.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a76a1d9870bc2e136ee6a80d6ec856bc5d955b06bb0ebfe847db694408ab1af"}},{"ruleId":"D1","level":"warning","message":{"text":"BytecodeGenerator._genPrologue (cyclomatic 26): BytecodeGenerator._genPrologue has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: BytecodeGenerator._genMethodInvocationUsingSpecializedBytecode (cyclomatic 29) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":2152}}}],"partialFingerprints":{"codehealthFindingId/v1":"86619fe0e1bcb6149e4be4fc74adb4093bee6a92a905441721f6bdab16b5bab6"}},{"ruleId":"D1","level":"warning","message":{"text":"DevToolsServer._serveDevToolsWithArgs (cyclomatic 26): DevToolsServer._serveDevToolsWithArgs has cyclomatic complexity 26 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"f82680b5e2e30d53f9eed896534e8f8121f9dd38e9cb6d6699eb0861ecfa2404"}},{"ruleId":"D1","level":"warning","message":{"text":"ClosedWorldClassHierarchy.applyTreeChanges (cyclomatic 26): ClosedWorldClassHierarchy.applyTreeChanges has cyclomatic complexity 26 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1264}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7fd5aa6a8a1429ef42b398134ca15c6d868cf143359c22d04c33fff951b68d9"}},{"ruleId":"D1","level":"warning","message":{"text":"int._parseRadix (cyclomatic 26): int._parseRadix has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/integers_patch.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"038f00631ba1aa24368334f194277db64bf3df91c461764a9a2cc76db848acdc"}},{"ruleId":"D1","level":"warning","message":{"text":"_SimpleUri._simpleMerge (cyclomatic 26): _SimpleUri._simpleMerge has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":4869}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d106c1a1932ad6e2a8022d1207d92a42f9aa2a26a190b20de0935454d252fea"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpressionIdentifierContext.ensureIdentifier (cyclomatic 26): ExpressionIdentifierContext.ensureIdentifier has cyclomatic complexity 26 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"67bed26673835b93a3cffb59c656f9dbe166ab213c8434be1506bacee1686f1d"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseTypedef (cyclomatic 26): Parser.parseTypedef has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1449}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc5f9cc551367d01b690daf3dc16d5f101557517683f2b3808aa6e386e99cf4"}},{"ruleId":"D1","level":"warning","message":{"text":"DartCompletionRequest.targetPrefix (cyclomatic 26): DartCompletionRequest.targetPrefix has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6fc122ee899a32209c10e4836e1f049d9e764a24c18b3b057eb7b3c1e316b1a"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._addMembersOfEnclosingInstance (cyclomatic 26): DeclarationHelper._addMembersOfEnclosingInstance has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffb119a74fd2327fc28760322327bb5ae82504fa8989bb10178604f6fff10204"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitForStatement (cyclomatic 26): InScopeCompletionPass.visitForStatement has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1602}}}],"partialFingerprints":{"codehealthFindingId/v1":"30a36010043cfab532651c915ba966b572465260377a0537b5336df157245e31"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitSwitchPatternCase (cyclomatic 26): InScopeCompletionPass.visitSwitchPatternCase has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":3155}}}],"partialFingerprints":{"codehealthFindingId/v1":"74788fb5e339f43943e59b497155951217fcfc60ebedc44c8a899f0ee4fef7fb"}},{"ruleId":"D1","level":"warning","message":{"text":"AddExplicitCast._computeTargetAndTypes (cyclomatic 26): AddExplicitCast._computeTargetAndTypes has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec40d744698dd95604636064a37da290ca70bb484e2811d994d8fc79d5c31160"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateExtensionMethod.compute (cyclomatic 26): CreateExtensionMethod.compute has cyclomatic complexity 26 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"152c93c03cd54f93a7f01002775fb74fd76b7758b992e2b69fa5c25e14f5d3ec"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateOperator.compute (cyclomatic 26): CreateOperator.compute has cyclomatic complexity 26 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_operator.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf2e6993de749330daa7d905a737fb89412d058a9a3c8527347c5263d3193082"}},{"ruleId":"D1","level":"warning","message":{"text":"InlineTypedef.compute (cyclomatic 26): InlineTypedef.compute has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/inline_typedef.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"6892e604188a1815b9629cdfe9af4ea931cc5f56617bbcfe16b6185df0148578"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveUnusedParameter.compute (cyclomatic 26): RemoveUnusedParameter.compute has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused_parameter.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"7de185c278367e727e306b7d5969108bc5afb6d5205aab4902cc44b18fc1f764"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantVisitor._buildListConstant (cyclomatic 26): ConstantVisitor._buildListConstant has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This shape REPEATS in the file: one other method here (ConstantVisitor._buildSetConstant) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1499}}}],"partialFingerprints":{"codehealthFindingId/v1":"942175665bb8fab7bf8dec76b22da89ebb31bddddb8d155db1abef13beda2f9d"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantVisitor._buildSetConstant (cyclomatic 26): ConstantVisitor._buildSetConstant has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This shape REPEATS in the file: one other method here (ConstantVisitor._buildListConstant) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1741}}}],"partialFingerprints":{"codehealthFindingId/v1":"b906a67e4fecfd558905447eb0864d26892a4635d829aa4c56c7b85ac2a56c8b"}},{"ruleId":"D1","level":"warning","message":{"text":"GenericInferrer._reportInferenceFailure (cyclomatic 26): GenericInferrer._reportInferenceFailure has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/generic_inferrer.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dfb023d1a572bfe1de09c6bab052b37f77fafc7d0c8cf2e32fb1db8cab53dc1"}},{"ruleId":"D1","level":"warning","message":{"text":"DartEditBuilderImpl._writeType (cyclomatic 26): DartEditBuilderImpl._writeType has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c017377e92e937c1d92c661479afce33aaaeedfa06215d6d2cf39e4961102fc"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder._handleInvokeStaticForeign (cyclomatic 26): KernelSsaGraphBuilder._handleInvokeStaticForeign has cyclomatic complexity 26 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5464}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca887729018e2195ef94003077d251015c4647b4d6347227c1c4ec6674bbdeb"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSelection.visitFieldSet (cyclomatic 26): SsaInstructionSelection.visitFieldSet has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"514041104536d9164a32c0f46994197456be8ce7b79ef54184cb270ee1d00a75"}},{"ruleId":"D1","level":"warning","message":{"text":"ConditionTargets._step (cyclomatic 26): ConditionTargets._step has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4268}}}],"partialFingerprints":{"codehealthFindingId/v1":"31fdac5c44be7944d9aed8905433af395e30d75c5cfd9d8c0fe7ca07548b127d"}},{"ruleId":"D1","level":"warning","message":{"text":"MiniJsParser.parseStatement (cyclomatic 26): MiniJsParser.parseStatement has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1421}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c13b5df9cb67303b80ab6cb30988ee4e0531717541ef1682a25240c65239993"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._emitBinaryOperator (cyclomatic 26): ProgramCompiler._emitBinaryOperator has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6341}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1d0fa7b754239c95a98836fb4ca3fbde2c883c29f54deb31915915319388411"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._emitBinaryOperator (cyclomatic 26): LibraryCompiler._emitBinaryOperator has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7030}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cc047451f3809f0a2413b2fd6728da1cce8229a4dfbce9ab24309941e573b9c"}},{"ruleId":"D1","level":"warning","message":{"text":"FutureOrNormalizer.visitFutureOrType (cyclomatic 26): FutureOrNormalizer.visitFutureOrType has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/future_or_normalizer.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"f41668dcf5a58685b134068fa091c42be596eb66f931ca7504d96f5ee636accf"}},{"ruleId":"D1","level":"warning","message":{"text":"JSTypeRep.typeFor (cyclomatic 26): JSTypeRep.typeFor has cyclomatic complexity 26 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/js_typerep.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"78455f425bd2ae61c2fb7ee965773f4421932fa2d9f0f36a6919e2b9470a5721"}},{"ruleId":"D1","level":"warning","message":{"text":"_LibraryVirtualFieldModel.build (cyclomatic 26): _LibraryVirtualFieldModel.build has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/property_model.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"34473d92e9fa64310c61783a55c8c44a62fef51fa7df634b8747c8e29bd92b35"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl._validateTypeParameterUseInternal (cyclomatic 26): BodyBuilderImpl._validateTypeParameterUseInternal has cyclomatic complexity 26 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":11415}}}],"partialFingerprints":{"codehealthFindingId/v1":"27fb7a69d45c40a330a65003f6fcdedc253b15b652afccb69749d5afef109b6d"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator.visitInstanceGet (cyclomatic 26): ConstantEvaluator.visitInstanceGet has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4727}}}],"partialFingerprints":{"codehealthFindingId/v1":"17da4f275d1c1d627fdf0989142869597934a2677e7ca60d8f191c38cab15bd4"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassMembersNodeBuilder.inferMethodType (cyclomatic 26): ClassMembersNodeBuilder.inferMethodType has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"90f5b52240fe8bad9644996b9cf3d4eabbf70afdd438269fd8f773361d9ede34"}},{"ruleId":"D1","level":"warning","message":{"text":"OutlineBuilder.endMethod (cyclomatic 26): OutlineBuilder.endMethod has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2373}}}],"partialFingerprints":{"codehealthFindingId/v1":"af3d965ffb875dba969028b90afff2ee661f13c4bfe7c1416f23f07571aa285c"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstMapLiteralBuilder.translate (cyclomatic 26): _ConstMapLiteralBuilder.translate has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51ec2792c73711825e174529eb66d0cb5a092ecef72f7cb01b1d31dd5c82f97"}},{"ruleId":"D1","level":"warning","message":{"text":"StandardBounds._getFunctionStandardLowerBound (cyclomatic 26): StandardBounds._getFunctionStandardLowerBound has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: StandardBounds.morebottom (cyclomatic 41) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":1098}}}],"partialFingerprints":{"codehealthFindingId/v1":"14888e9313c2f5002d929c377b8476de5eac86b3d46f675c4a5bf720c6cb4e6a"}},{"ruleId":"D1","level":"warning","message":{"text":"ChainContext.run (cyclomatic 26): ChainContext.run has cyclomatic complexity 26 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/testing/lib/src/chain.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e1c86fc2518f809639bad4c72a67bc7ad4898f0e301385d201daae4f15e90b7"}},{"ruleId":"D1","level":"warning","message":{"text":"InstrumentationLog._parseLogContent (cyclomatic 25): InstrumentationLog._parseLogContent has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/log/log.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ab69360faf16b0880637eb6e593fa85a15252699c73f4be60aae6af7534e260"}},{"ruleId":"D1","level":"warning","message":{"text":"AstNodeImplGenerator._generateConstructor (cyclomatic 25): AstNodeImplGenerator._generateConstructor has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd272df466c8ff6420bc9e20abb901d1e9517d8bfbc71b017027d6399afa9b8e"}},{"ruleId":"D1","level":"warning","message":{"text":"BytecodeGenerator.getFieldDeclaration (cyclomatic 25): BytecodeGenerator.getFieldDeclaration has cyclomatic complexity 25 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: BytecodeGenerator._genMethodInvocationUsingSpecializedBytecode (cyclomatic 29) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"815ac60ec472f8653a262cf01bcddd3bba8e3da7b45222e820745c5bf6b88dde"}},{"ruleId":"D1","level":"warning","message":{"text":"AstCodeGenerator.visitSwitchStatement (cyclomatic 25): AstCodeGenerator.visitSwitchStatement has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":1443}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdefd971633b348365e9052a60230bba180fb7ca21ed61c40e51c3b2c420c2c8"}},{"ruleId":"D1","level":"warning","message":{"text":"DynamicDispatchTable._lookupTarget (cyclomatic 25): DynamicDispatchTable._lookupTarget has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dynamic_dispatch_table.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"4436a612e54c5643047f8543745f27a03ade3f95699f95e9777b948b2ddae4b2"}},{"ruleId":"D1","level":"warning","message":{"text":"DevToolsServer.serveDevTools (cyclomatic 25): DevToolsServer.serveDevTools has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"3166db3070924095e245b8b80e61f514df73eb7c21b3d947fd76e037ebf056e4"}},{"ruleId":"D1","level":"warning","message":{"text":"JSNumber._binaryGcd (cyclomatic 25): JSNumber._binaryGcd has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"bff2ccfdd2f683ff74dde77aec6650a8d30c6493a4ddaec1a0f8d997c9f941b5"}},{"ruleId":"D1","level":"warning","message":{"text":"Primitives._generalApplyFunction (cyclomatic 25): Primitives._generalApplyFunction has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"1719f21b5f2f45e4a0f45c715b38e7ad552f0c640e41473c2340bd893ba4342d"}},{"ruleId":"D1","level":"warning","message":{"text":"JSInt._binaryGcd (cyclomatic 25): JSInt._binaryGcd has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_number.dart"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cbdf163f86374399c7d423f554da32e45dc9f99bc974b24be1e68ea05906df7"}},{"ruleId":"D1","level":"warning","message":{"text":"_Parser.parse (cyclomatic 25): _Parser.parse has cyclomatic complexity 25 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":3041}}}],"partialFingerprints":{"codehealthFindingId/v1":"af83299e56a3c56ee92ecc559cdb199eb87983a5f2a400a317c40c12adea0ebd"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parsePartialNumber (cyclomatic 25): _ChunkedJsonParser.parsePartialNumber has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"5123bc4bfb5efdeb31299b351c21c6321807443f8e3ec5bf0e40c25fdc3d2763"}},{"ruleId":"D1","level":"warning","message":{"text":"_IntegerImplementation._binaryGcd (cyclomatic 25): _IntegerImplementation._binaryGcd has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"d741ff31bb58130d8443c383b898dca9979797016176691644f6704204b55a21"}},{"ruleId":"D1","level":"warning","message":{"text":"BoxedInt._binaryGcd (cyclomatic 25): BoxedInt._binaryGcd has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/boxed_int.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ca254639b0346b5b7c500877f119cb78f8b690d6de8b8dfedf4fcb215245845"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parsePartialNumber (cyclomatic 25): _ChunkedJsonParser.parsePartialNumber has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"342ab059fbe72f4ad96dbdc14968f37e0cd52217a291e94ebf2d5ee9bc24df7e"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parsePartialNumber (cyclomatic 25): _ChunkedJsonParser.parsePartialNumber has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"cac520d3bddfc06a0cbb006eca071afef86b0e028ac11135eff0872111cadb24"}},{"ruleId":"D1","level":"warning","message":{"text":"_FfiUseSiteTransformer._replaceNativeCallParameterAndArgument (cyclomatic 25): _FfiUseSiteTransformer._replaceNativeCallParameterAndArgument has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":2195}}}],"partialFingerprints":{"codehealthFindingId/v1":"8735f00cc7fb5dac833ac46314450147d77cca0642a9546cf283aab6a9181a56"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeConstraintGenerator._handleNonGenericFunctionTypes (cyclomatic 25): TypeConstraintGenerator._handleNonGenericFunctionTypes has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":2574}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd5a1d004b59ab932a5b3a99abd5c468d23ec84ea0c8d25d3aef2eaf8234ebd6"}},{"ruleId":"D1","level":"warning","message":{"text":"DartUnitHighlightsComputer._isCallMethod (cyclomatic 25): DartUnitHighlightsComputer._isCallMethod has cyclomatic complexity 25 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1951c0c28ad41aef38349f90980ee05c5a6684d89266b8c7b0698ebb6d95330"}},{"ruleId":"D1","level":"warning","message":{"text":"FlutterOutlineComputer._createOutline (cyclomatic 25): FlutterOutlineComputer._createOutline has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba82f16f97818841056cd687a372c7aa0321fa5cf2f5a835b223d1c91539f303"}},{"ruleId":"D1","level":"warning","message":{"text":"_MinimalEditComputer.computeMinimalEdits (cyclomatic 25): _MinimalEditComputer.computeMinimalEdits has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/source_edits.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"d24278b164c5f1cb163ebbe4000de675d8f010017417593f3fd5e67b45419400"}},{"ruleId":"D1","level":"warning","message":{"text":"AddLate.compute (cyclomatic 25): AddLate.compute has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_late.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ddd78a6e31655aea12c1c284057bcf8ffc49e431b137522f02c387299921b61"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToCascade.compute (cyclomatic 25): ConvertToCascade.compute has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_cascade.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"153e595f9efd99b2473a9a6f37dd140eadd0a8cb597bf72f65ee7679e2c352cf"}},{"ruleId":"D1","level":"warning","message":{"text":"TemplateContext._getInvocation (cyclomatic 25): TemplateContext._getInvocation has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/code_template.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"65df033d2304d3e3f47bfd7d536133567ad87f8059eae95e3e82370d92c09c84"}},{"ruleId":"D1","level":"warning","message":{"text":"_ParsedExpressionBuilder.build (cyclomatic 25): _ParsedExpressionBuilder.build has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":60164}}}],"partialFingerprints":{"codehealthFindingId/v1":"22fbd5b0f32684740e0507211c504c99a2513e56227615dcdd113004eececcba"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantVisitor._buildMapConstant (cyclomatic 25): ConstantVisitor._buildMapConstant has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1621}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a15fbfc0ba25a53d69382dbd760409b8c4a8cbc5ca01680f8f72c1e22e95be6"}},{"ruleId":"D1","level":"warning","message":{"text":"FunctionReferenceResolver.resolveInstantiation (cyclomatic 25): FunctionReferenceResolver.resolveInstantiation has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c44c16195e6144707975abf09ccbf3a9068e67cc8f2203ce45c4c134bc3e12"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryManifestBuilder._buildManifests (cyclomatic 25): LibraryManifestBuilder._buildManifests has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":888}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca49b5e8484a1c7b5c48c385cc71ecac9c4e959a0203c57293dd5974083115a"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForWrongNumberOfParametersForOperator (cyclomatic 25): ErrorVerifier._checkForWrongNumberOfParametersForOperator has cyclomatic complexity 25 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8149}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f7865cccc510cb4ee0657e3c378ac19569b94a9d5fbc03e8c2a37697d7100e3"}},{"ruleId":"D1","level":"warning","message":{"text":"_OpTypeAstVisitor.visitArgumentList (cyclomatic 25): _OpTypeAstVisitor.visitArgumentList has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"23d882fe11a6711129eaec1a1bb47d9693a89f48c8283e0c6e54665db4a0b250"}},{"ruleId":"D1","level":"warning","message":{"text":"_OpTypeAstVisitor.visitRegularFormalParameter (cyclomatic 25): _OpTypeAstVisitor.visitRegularFormalParameter has cyclomatic complexity 25 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":1514}}}],"partialFingerprints":{"codehealthFindingId/v1":"ace229183bd5fe03dea12406414191587681f60cb95b2ad0196cb9115ab09fbd"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaPhiConditioning.handlePhi (cyclomatic 25): SsaPhiConditioning.handlePhi has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1485}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a42983ad9f48e98cf47f98930398e2c624d597921d014314a18ee73c3000f9a"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSimplifier.handleInterceptedCall (cyclomatic 25): SsaInstructionSimplifier.handleInterceptedCall has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"cafb8df144ede7a55a43b319e7db3a754bca6a76df13fb4aa0f62a904f26018d"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSimplifier.visitInvokeStatic (cyclomatic 25): SsaInstructionSimplifier.visitInvokeStatic has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2242}}}],"partialFingerprints":{"codehealthFindingId/v1":"4220df552116e839a6a71114e67dcc082a9a11ecfa155ffc3118ca24b83e2784"}},{"ruleId":"D1","level":"warning","message":{"text":"FixCommand.run (cyclomatic 25): FixCommand.run has cyclomatic complexity 25 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/fix.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"6398b70aab1d5e86f13751c2f0e7f80a04107cf44dc5d4e95336af894587dfae"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._emitClassMethods (cyclomatic 25): ProgramCompiler._emitClassMethods has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2483}}}],"partialFingerprints":{"codehealthFindingId/v1":"8668700c826fae23c029f85dc9f39790aeabad4145042d6bc27f820988f75269"}},{"ruleId":"D1","level":"warning","message":{"text":"DillClassBuilder.DillClassBuilder (cyclomatic 25): DillClassBuilder.DillClassBuilder has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"beaee6b9e87d6a6512f5d94ca372de626f04db88f9f6a9f8c6d25a8bf5077a93"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantsTransformer.visitSwitchExpression (cyclomatic 25): ConstantsTransformer.visitSwitchExpression has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2001}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ed9e7bfa6dc1ab6de21307d66f270c23ce40e39fc6f392b2dc7e9b1f9bc980d"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceLoader.checkClassSupertypes (cyclomatic 25): SourceLoader.checkClassSupertypes has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2061}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ff06dd8c813ecc16076b033c794ab7e725268ca4a7db36a349c54507f7e9f8a"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitClassDeclaration (cyclomatic 25): _Visitor.visitClassDeclaration has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/diagnostic_describe_all_properties.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"608a5752876370701e6c9a1f50df7ba4dcb45d7db89152e3e417e46bc531d097"}},{"ruleId":"D1","level":"warning","message":{"text":"_DeclarationGatherer._addMembers (cyclomatic 25): _DeclarationGatherer._addMembers has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unreachable_from_main.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"642372e91d442ee7ad9e8ac2a53bcc3797038909e656968ac015a1abb9c3c196"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotateKernel._convertType (cyclomatic 25): AnnotateKernel._convertType has cyclomatic complexity 25 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"291760a0d6765cd8fd0636805bb5541d8e16c4d31177b383e5416dac9b7dca47"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotateKernel._annotateCallSite (cyclomatic 25): AnnotateKernel._annotateCallSite has cyclomatic complexity 25 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"d39d91cd315e521b5833f440c43d25cfbbde6e2772237b1771867baad9facea3"}},{"ruleId":"D1","level":"warning","message":{"text":"JsInteropChecks.visitClass (cyclomatic 24): JsInteropChecks.visitClass has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"d613bbc5101ae2160a8adeda97705fa35e5269d727b94a4e0f433e363fe88534"}},{"ruleId":"D1","level":"warning","message":{"text":"CompletionResult.group (cyclomatic 24): CompletionResult.group has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":1696}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd7b33ca5e967bb92929e3bb662ef051acdfb44939c1634999e4045f8bb949a"}},{"ruleId":"D1","level":"warning","message":{"text":"_BuilderGenerator._generateFinish (cyclomatic 24): _BuilderGenerator._generateFinish has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb6ad0c95aa05ed32819c1adea5a32c56136c45e525befb5ba3940b0b9dfc4e0"}},{"ruleId":"D1","level":"warning","message":{"text":"DebugInfoWriter._flushPending (cyclomatic 24): DebugInfoWriter._flushPending has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/debug_info.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3842af81a914914ab1cf1be7239943ecb2344c505f8134b06ef452f754182b1"}},{"ruleId":"D1","level":"warning","message":{"text":"_LibraryManager.findMatches (cyclomatic 24): _LibraryManager.findMatches has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1105531c49231e4b06b633944172e2d5ef4036a0319584a363ed20c44a2105d"}},{"ruleId":"D1","level":"warning","message":{"text":"double._tryParseDouble (cyclomatic 24): double._tryParseDouble has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double_patch.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cc3574c33f9e90ee0691bb77da82d9f447cfc596fae3f2f882d455f58f0924b"}},{"ruleId":"D1","level":"warning","message":{"text":"Arm64CodeGenerator.visitTypeCast (cyclomatic 24): Arm64CodeGenerator.visitTypeCast has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1629}}}],"partialFingerprints":{"codehealthFindingId/v1":"c66f8dd495ae9f9d40cde490498e6b0a5a567d6531101a2590f0107646635d83"}},{"ruleId":"D1","level":"warning","message":{"text":"BinaryPrinter.writeConstantTableEntry (cyclomatic 24): BinaryPrinter.writeConstantTableEntry has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"fef41febc2c70feca0ae508aaa08f2d9f9c525d78ea84f9d9929f9376ddd45b6"}},{"ruleId":"D1","level":"warning","message":{"text":"_RawSecureSocket._tryFilter (cyclomatic 24): _RawSecureSocket._tryFilter has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/secure_socket.dart"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"598a9ad8542d365b8f510250e7ea5116ea70c8020886f11562e1fa2f93da977a"}},{"ruleId":"D1","level":"warning","message":{"text":"_FfiDefinitionTransformer._findFields (cyclomatic 24): _FfiDefinitionTransformer._findFields has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ff6fc7e714b8da822a81d93d0acef2b0e19f93b0afd35189a86ef906f9fe6f"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractScanner.tokenizeFractionPart (cyclomatic 24): AbstractScanner.tokenizeFractionPart has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1695}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad1379b560e7dee059650ff3b78e675f3e22aba0465912734c77b65d2a7a5439"}},{"ruleId":"D1","level":"warning","message":{"text":"Utf8BytesScanner.skipSpaces (cyclomatic 24): Utf8BytesScanner.skipSpaces has cyclomatic complexity 24 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ef94bdc7a5071f812715155e29eadde36dd147fd793ab56287d20a5c2bab03"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportElementsComputer.createEdits (cyclomatic 24): ImportElementsComputer.createEdits has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/import_elements_computer.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d6a5a96df8d389cfdc7b7db0aaa36653667f4b17e1af940daecee1edfbca35"}},{"ruleId":"D1","level":"warning","message":{"text":"ResultMerger.mergeRefactoringFeedbacks (cyclomatic 24): ResultMerger.mergeRefactoringFeedbacks has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"e985e9698c690129fdcf235d6d31251e89445ed2d76b712851e38477c915de33"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitMethodInvocation (cyclomatic 24): InScopeCompletionPass.visitMethodInvocation has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2121}}}],"partialFingerprints":{"codehealthFindingId/v1":"27594f48c9fb16317d98d000d038f8bb6f235e710e29eb3be12c9aa353268388"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitPrimaryConstructorDeclaration (cyclomatic 24): InScopeCompletionPass.visitPrimaryConstructorDeclaration has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2577}}}],"partialFingerprints":{"codehealthFindingId/v1":"299c306b7424dfb497573b04957cbcc560e56b8b9cf504c938262cbee30f500e"}},{"ruleId":"D1","level":"warning","message":{"text":"AddExplicitCast.compute (cyclomatic 24): AddExplicitCast.compute has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6268c201637ba37445b6ef200c342d1a9328cda376ba7f2a0ec7ddfe418794"}},{"ruleId":"D1","level":"warning","message":{"text":"_EnumDescription.applyChanges (cyclomatic 24): _EnumDescription.applyChanges has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"d23cd30e654b0b59f959a3b8bf3f340d08776c0eeafabf00a88f0ef2864fc13b"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateExtensionOperator.compute (cyclomatic 24): CreateExtensionOperator.compute has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b2ae9f88f6dd1a0ffbd2046d31c933379d4c2c3959778b263b881ff1d45e824"}},{"ruleId":"D1","level":"warning","message":{"text":"MakeFinal.compute (cyclomatic 24): MakeFinal.compute has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/make_final.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bb55be94a068723a7bcce3cac0e518bade99074cc60da987a4c4a6468aa9902"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveLeadingUnderscore.compute (cyclomatic 24): RemoveLeadingUnderscore.compute has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"36a22efd592124f7af1d9628a7cf142069e21c8f75e359436c5be576c7531b40"}},{"ruleId":"D1","level":"warning","message":{"text":"ReplacedBy._rangeWithTarget (cyclomatic 24): ReplacedBy._rangeWithTarget has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"56e47295c533ed722f5e04b48548b93e928b913d8fbd2f5061454e26653712fc"}},{"ruleId":"D1","level":"warning","message":{"text":"ElementWriter._computeProperties (cyclomatic 24): ElementWriter._computeProperties has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/utilities/element_writer.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"2871deb04d1fb7b0bd98125bad14ac06f82f8bd6b7ba3e4314c470f6017c9b4f"}},{"ruleId":"D1","level":"warning","message":{"text":"_Collector._identifier (cyclomatic 24): _Collector._identifier has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b0fb34f51df483e687e6b0b45bd737a2c66e04a1ab3aca696037c4ce922b45"}},{"ruleId":"D1","level":"warning","message":{"text":"SubtypeHelper._isFunctionSubtypeOf (cyclomatic 24): SubtypeHelper._isFunctionSubtypeOf has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/subtype.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3911be96665fed95cfe16b2453518b01f9c2a4b8bb99be9084f8dd6463d1d1"}},{"ruleId":"D1","level":"warning","message":{"text":"AstRewriter.methodInvocation (cyclomatic 24): AstRewriter.methodInvocation has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"06f63ed2e07c6bdfe9b700489112026279a861e830d88c8fd650e258a8b78c76"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyElementResolver.resolveReceiverPropertyExtraction (cyclomatic 24): PropertyElementResolver.resolveReceiverPropertyExtraction has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4014dbd8fa1d5c9ebe86edaf8ce6695b8835af0ab44e8144010791cc2ea41e3"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyElementResolver.resolveReceiverPropertyReadWriteAssignmentTarget (cyclomatic 24): PropertyElementResolver.resolveReceiverPropertyReadWriteAssignmentTarget has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19c94fcad286905a3cd024ee6b31033e92977d5b5dbb18ff0724e4b031fe9c7"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyElementResolver._resolve (cyclomatic 24): PropertyElementResolver._resolve has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":1857}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d90251ab02658a570a73ab33df31feaecd01cdeaf336896e1cf38e7b316f2f"}},{"ruleId":"D1","level":"warning","message":{"text":"VariableDeclarationResolver.resolve (cyclomatic 24): VariableDeclarationResolver.resolve has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb5463d7cc82948dc6ae456974e800b0db2b57a4dcf97b080f8fbf88f471c94d"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorHandlerVerifier._verifyInvocation (cyclomatic 24): ErrorHandlerVerifier._verifyInvocation has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/error_handler_verifier.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"3568164f8a97f5b5918cc7b60c57b6a95a708b8cf9eff356793a485b45945bfd"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeArgumentsVerifier._checkForTypeArgumentNotMatchingBounds (cyclomatic 24): TypeArgumentsVerifier._checkForTypeArgumentNotMatchingBounds has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/type_arguments_verifier.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"14ea1b777a60ce2fa69c207cf1100b200a2612e61cc3be3de6facfaa57d10321"}},{"ruleId":"D1","level":"warning","message":{"text":"_LibraryMatch.compareStructures (cyclomatic 24): _LibraryMatch.compareStructures has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1760}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa1c930405c1b2fbfc1d5965c18db16b87d7bc0c3fb73acb7bc34a8fc6c9a40d"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolverVisitor._reportNotEnoughPositionalArguments (cyclomatic 24): ResolverVisitor._reportNotEnoughPositionalArguments has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":6339}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f856d315b9bb96c6fdad5c80c23cd9716378dd2e7f9125a1cdc61256454b81e"}},{"ruleId":"D1","level":"warning","message":{"text":"SizeEstimator.visitAssignment (cyclomatic 24): SizeEstimator.visitAssignment has cyclomatic complexity 24 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators. This is NOT this file\u0027s highest cyclomatic complexity: SizeEstimator.visitBinary (cyclomatic 28) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"80694a8535609ee50c667b1cf958bf23f58190a1b92d881c66c4b1f9dc3b57d3"}},{"ruleId":"D1","level":"warning","message":{"text":"SpecializedChecks.findIsTestSpecialization (cyclomatic 24): SpecializedChecks.findIsTestSpecialization has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/specialized_checks.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"96e4ca8da488d1f9b94962fa385d8020fb071168cafb49855e18928a25b17c95"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSimplifier.simplifyExpressionPhi (cyclomatic 24): SsaInstructionSimplifier.simplifyExpressionPhi has cyclomatic complexity 24 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a97fa105d006fdcbddcd704195307728d524579e3fdd07ef175c62114d7820c"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolutionWorldBuilder._getMemberUsage (cyclomatic 24): ResolutionWorldBuilder._getMemberUsage has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8fcfdc323bcd6a00ceeffd37942821f4e277c8ee961834ba4c787d0d3cd771c"}},{"ruleId":"D1","level":"warning","message":{"text":"ExecutableCompiler._compileToSnapshot (cyclomatic 24): ExecutableCompiler._compileToSnapshot has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/executable_compiler.dart"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"72858f0913bc9a18f121e68b6bc17ab62dfac242006c65cfdb6f04aed16ae8b7"}},{"ruleId":"D1","level":"warning","message":{"text":"JsBuilder.escapedString (cyclomatic 24): JsBuilder.escapedString has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a879945cd4664fb686ef7c01a22f0268e3a8144537da497735b5b7cf728df02"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpressionEvaluationHelperImpl.overwriteFindInterfaceMember (cyclomatic 24): ExpressionEvaluationHelperImpl.overwriteFindInterfaceMember has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2980}}}],"partialFingerprints":{"codehealthFindingId/v1":"d116636ff1cadf6730cc0d65e431e2afa9983dd68fe6497c1e34567a0bd70942"}},{"ruleId":"D1","level":"warning","message":{"text":"_InitializationFromExperimentalCache.loadLibrariesFromCache (cyclomatic 24): _InitializationFromExperimentalCache.loadLibrariesFromCache has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3663}}}],"partialFingerprints":{"codehealthFindingId/v1":"27b2e80c7056a464e007abe8ba97bb16dff350b4df0591c26b6c73d880e842c7"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl.visitDotShorthandInvocation (cyclomatic 24): InferenceVisitorImpl.visitDotShorthandInvocation has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13806}}}],"partialFingerprints":{"codehealthFindingId/v1":"29528ed4c52c031cc790c915b0e6ea3ea39c3b8242b32155276289f538ebc614"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorBase._findExtensionMember (cyclomatic 24): InferenceVisitorBase._findExtensionMember has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee27f2406b888a9cd354a865d0e755e8104fba18afaffedf8f7db481b0b62d1"}},{"ruleId":"D1","level":"warning","message":{"text":"MiniJsParser.parseStatement (cyclomatic 24): MiniJsParser.parseStatement has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":1236}}}],"partialFingerprints":{"codehealthFindingId/v1":"b078561e7ded35059915e275b5df3fc57306ac459760186556fab8a12b6d20c8"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer.visitAssignment (cyclomatic 24): Printer.visitAssignment has cyclomatic complexity 24 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators. This is NOT this file\u0027s highest cyclomatic complexity: Printer.visitBinary (cyclomatic 29) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bf9e38c1ee427c584835e7178f20db2752222ad933be9aa69cf7237024bda8e"}},{"ruleId":"D1","level":"warning","message":{"text":"IntersectionType.nullability (cyclomatic 24): IntersectionType.nullability has cyclomatic complexity 24 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2171}}}],"partialFingerprints":{"codehealthFindingId/v1":"96ee0796d6be82c9bb3925bbe48099d086f12a041e508a86787774d734252236"}},{"ruleId":"D1","level":"warning","message":{"text":"VarianceChecker.check (cyclomatic 24): VarianceChecker.check has cyclomatic complexity 24 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/util/variance_checker.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ade81c925c431781a0ca9f4e1036880b8e8c5e354dbd39143cfae0913bdecc"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer.visitProcedure (cyclomatic 24): Printer.visitProcedure has cyclomatic complexity 24 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":1341}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f45094412266c25de0e6de1c1150ac01c6e70a48b172cd28295886f4fe9202"}},{"ruleId":"D1","level":"warning","message":{"text":"UnboxingInfoManager.analyzeComponent (cyclomatic 24): UnboxingInfoManager.analyzeComponent has cyclomatic complexity 24 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/unboxing_info.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"6841b129a316aa54ab1e2e47ac72a159ab120a098d7bd8224dede63b7cefe366"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractScanner.tokenizeFractionPart (cyclomatic 23): AbstractScanner.tokenizeFractionPart has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"778a61636d8b917b36c2319ab30ef94e6281d8bdf2a20ecf8281218e6c605237"}},{"ruleId":"D1","level":"warning","message":{"text":"LogPage._writeEntry (cyclomatic 23): LogPage._writeEntry has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/page/log_page.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c107198a73031d9d81353321b4d2e56b81489ff0e0107918befd5d8fa1ea18"}},{"ruleId":"D1","level":"warning","message":{"text":"WasmCompilerOptions._validatePhases (cyclomatic 23): WasmCompilerOptions._validatePhases has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/compiler_options.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"963e081f3a5347cdbd1251fcfadda0b24757dd50d3eada8b892f0255adf95d9c"}},{"ruleId":"D1","level":"warning","message":{"text":"DevToolsServer.serveDevTools (cyclomatic 23): DevToolsServer.serveDevTools has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5493423985d422bd19e7f45c4ffe94d6c8f41816335098aad07479c06fad0c"}},{"ruleId":"D1","level":"warning","message":{"text":"_VerifyingVisitor.visitProcedure (cyclomatic 23): _VerifyingVisitor.visitProcedure has cyclomatic complexity 23 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e64e41360987eac53a368b24788a3d5bbe0ab9596e5fa0cb8f981a8e2940f5"}},{"ruleId":"D1","level":"warning","message":{"text":"HttpDate._parse (cyclomatic 23): HttpDate._parse has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_date.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b8099adbe653f83cbf0e076d894c1cfd48aa2602a9494b1629feca674792f7"}},{"ruleId":"D1","level":"warning","message":{"text":"NativeRuntime.streamTimelineTo (cyclomatic 23): NativeRuntime.streamTimelineTo has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/developer.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c86b4131c14bb1f3b399941f5df9fc96535c500f8e777f796a393dfca40a05e"}},{"ruleId":"D1","level":"warning","message":{"text":"_JsonStringifier.writeStringContent (cyclomatic 23): _JsonStringifier.writeStringContent has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/json.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1823743428c97729c56769ece49b370e2f47dfd972d2642862a59d23db63f29"}},{"ruleId":"D1","level":"warning","message":{"text":"_Uri._makeWindowsFileUrl (cyclomatic 23): _Uri._makeWindowsFileUrl has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2208}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc07bc3e2f5e09aac37b93f3a745fa658070d9a24a813f7a788bce46e9f6b367"}},{"ruleId":"D1","level":"warning","message":{"text":"_SimpleUri.replace (cyclomatic 23): _SimpleUri.replace has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":4753}}}],"partialFingerprints":{"codehealthFindingId/v1":"800062238818993e1193be3cc78f9cbd9a7c064913692d41feead6239185165f"}},{"ruleId":"D1","level":"warning","message":{"text":"_Algorithm._filterUserConstraints (cyclomatic 23): _Algorithm._filterUserConstraints has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/deferred_load/partition.dart"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"94159abbc109612e6eb439fe1f65d0de5cb368b50b696823accb520a4db99503"}},{"ruleId":"D1","level":"warning","message":{"text":"FunctionRegistry.getFunction (cyclomatic 23): FunctionRegistry.getFunction has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/functions.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f0eef8b1235b882ec79262ec8bddb679abe4e7b9722322023f1a0c3886a5414"}},{"ruleId":"D1","level":"warning","message":{"text":"Simplification.visitComparison (cyclomatic 23): Simplification.visitComparison has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/simplification.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0dba23c04a34bbbca9a6d8725265e166c100a37a3f07e29f1f0d09958d1477c"}},{"ruleId":"D1","level":"warning","message":{"text":"SharedInteropTransformer.visitStaticInvocation (cyclomatic 23): SharedInteropTransformer.visitStaticInvocation has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d08620922489f1cc4e927830f5264f3058d86561fc178a3d97f36e5cc0ec29"}},{"ruleId":"D1","level":"warning","message":{"text":"DartUnitHighlightsComputer._addIdentifierRegion_field (cyclomatic 23): DartUnitHighlightsComputer._addIdentifierRegion_field has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"852a2a88c03997931bc0743ebdd4b57ddf1f8e3418ba84169393e452e9fab713"}},{"ruleId":"D1","level":"warning","message":{"text":"DartUnitHoverComputer._typeDisplayString (cyclomatic 23): DartUnitHoverComputer._typeDisplayString has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: DartUnitHoverComputer._locationEntity (cyclomatic 35) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_hover.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"997e27030ebfe7dfeefb69dd3abc66928655e7774ce8b6797f2606f2a5c4ebeb"}},{"ruleId":"D1","level":"warning","message":{"text":"CompletionResolveHandler.resolveDartCompletion (cyclomatic 23): CompletionResolveHandler.resolveDartCompletion has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0e91940cbea4af7af0cd3db42b7648627e642ca2cc7b8c5dafca2e92babf5f7"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeDefinitionHandler.handle (cyclomatic 23): TypeDefinitionHandler.handle has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6967c5a3fd479d72958e0819327e002560e7cb72a393844c74df24ed4670389"}},{"ruleId":"D1","level":"warning","message":{"text":"ResultMerger.mergeNavigation (cyclomatic 23): ResultMerger.mergeNavigation has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2582db52c1127cb6f4115c9c37f66cf855d8d288ee962e028510da7f7dc472a"}},{"ruleId":"D1","level":"warning","message":{"text":"MessageScheduler._processDocumentChange (cyclomatic 23): MessageScheduler._processDocumentChange has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/message_scheduler.dart"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdf1fce79d1f6583f5914edb728adfb2517259e9ba4b6d161e77222cf1f0cac7"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._visitPattern (cyclomatic 23): DeclarationHelper._visitPattern has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":3071}}}],"partialFingerprints":{"codehealthFindingId/v1":"f77491f591630ad976b9be7c3742a80edd651bf0ce4ac668600a059c6b8a8e82"}},{"ruleId":"D1","level":"warning","message":{"text":"AddAsync.compute (cyclomatic 23): AddAsync.compute has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_async.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"52d572984433c12a7511d1d9d7dc5c975b941b33f87c759f267324a1c5acc551"}},{"ruleId":"D1","level":"warning","message":{"text":"_CreateClass.compute (cyclomatic 23): _CreateClass.compute has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_class.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aa31f1ebaa6f1cd879b3b00e4e99ef27abf7ea740b691fbd1bdaddfeef35464"}},{"ruleId":"D1","level":"warning","message":{"text":"_CreateConstructor._computeWithoutSuperParameters (cyclomatic 23): _CreateConstructor._computeWithoutSuperParameters has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e5f151d3a3746f687ef2949ed6dcdac20b5374ea35a1bd0392d50e38a4cfd4c"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateSetter.compute (cyclomatic 23): CreateSetter.compute has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"36f745a32b7380f090581a5b1b6021a3234532c12213629276d06274c3ef6767"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveTypeAnnotation._removeFromDeclarationList (cyclomatic 23): RemoveTypeAnnotation._removeFromDeclarationList has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"088f67aba904c3fdd14cbf2a3563dff33c69b9f5bde846bd61220e2afdffbc8d"}},{"ruleId":"D1","level":"warning","message":{"text":"ReplaceWithDecoratedBox.compute (cyclomatic 23): ReplaceWithDecoratedBox.compute has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_decorated_box.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8ea7807a0a32202e67e6f179bf4d46262a0f0790b1ab7bf227251a1c3cd743"}},{"ruleId":"D1","level":"warning","message":{"text":"ElementMatcher.matches (cyclomatic 23): ElementMatcher.matches has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"a90b235a15ededac0cd8046e66c676eeee687b605ca4e17bee71350e76a28f71"}},{"ruleId":"D1","level":"warning","message":{"text":"_EdgeInsetsProperty.changeValue (cyclomatic 23): _EdgeInsetsProperty.changeValue has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/property.dart"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d822f643e4b5a5d1c55faffa8f10dee31ac17c0036f609534f82ecffcf7dbe"}},{"ruleId":"D1","level":"warning","message":{"text":"RefactoringManager._createRefactoringFromKind (cyclomatic 23): RefactoringManager._createRefactoringFromKind has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring_manager.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dafd135af1e6cc15b108613f3aa99806c6f08057f98b24272c566358358ec48"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisOptionsImpl.signature (cyclomatic 23): AnalysisOptionsImpl.signature has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ea61a712b98708b116850d9d008ed555369f5136ac939c603fd9a7fb4135efa"}},{"ruleId":"D1","level":"warning","message":{"text":"FileState.serializeAstUnlinked2 (cyclomatic 23): FileState.serializeAstUnlinked2 has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfc51716a17960eaef8195b7943cc0a58ac5b9d6e3284eae15d93b3e341c9067"}},{"ruleId":"D1","level":"warning","message":{"text":"Search.references (cyclomatic 23): Search.references has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"5de3a9b3e690b5532466c8a9b4b2bd0fd39befde3dd044053c50a9725bbacb28"}},{"ruleId":"D1","level":"warning","message":{"text":"_ElementMapper.visitIdentifier (cyclomatic 23): _ElementMapper.visitIdentifier has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/element_locator.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"778041a96a39cccff5933dc751cae1ac571a5e7cc3ce4b4d7b959310df71e0fa"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantVisitor.visitBinaryOperatorInvocation (cyclomatic 23): ConstantVisitor.visitBinaryOperatorInvocation has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"29d22237d7fa3e92bd8f06f45953733938e2fa9c1238f487674d2485e2365976"}},{"ruleId":"D1","level":"warning","message":{"text":"LeastUpperBoundHelper._functionType (cyclomatic 23): LeastUpperBoundHelper._functionType has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"19f7f4ae2c64bd2afd72df56ae820fccfd8788820aa7aa88c0fb354bfc14bf34"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeSystemImpl._refineNumericInvocationTypeNullSafe (cyclomatic 23): TypeSystemImpl._refineNumericInvocationTypeNullSafe has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":2056}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d1f52becd93c404214818f3adbc4fa71a5f330366d725ea88c9f8056cc03f8e"}},{"ruleId":"D1","level":"warning","message":{"text":"FullInvocationInferrer.resolveInvocation (cyclomatic 23): FullInvocationInferrer.resolveInvocation has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a66256c6a1c2c84ac6e0a746aac0c8f108d1a99ee095b56b03d0ae57d626a92"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForEachParts (cyclomatic 23): ErrorVerifier._checkForEachParts has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5041}}}],"partialFingerprints":{"codehealthFindingId/v1":"e25d203458fd7a8372c95f311db5d0621f3724796ab38ea0e56211d30ab80e8e"}},{"ruleId":"D1","level":"warning","message":{"text":"IgnoreInfo.isIgnoreForFileComment (cyclomatic 23): IgnoreInfo.isIgnoreForFileComment has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/ignore_comments/ignore_info.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"73989991f164ea82cafc05eeaa0ffd886684be136afc77019ea1e4aa9113e309"}},{"ruleId":"D1","level":"warning","message":{"text":"ManifestParser._parseAttribute (cyclomatic 23): ManifestParser._parseAttribute has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/manifest/manifest_validator.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d4fb1230890b917514f3a544d6b2c5598728c008f2f37e11e8a561b0d25c64"}},{"ruleId":"D1","level":"warning","message":{"text":"ManifestParser._parseNormalTag (cyclomatic 23): ManifestParser._parseNormalTag has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/manifest/manifest_validator.dart"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c4df45f535288d88296a9253b55a8f1a148ead492be270163cfe4b6f01c1b52"}},{"ruleId":"D1","level":"warning","message":{"text":"KFieldAnalysis.registerInstantiatedClass (cyclomatic 23): KFieldAnalysis.registerInstantiatedClass has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e67ec0e168c8e77050772e2a7b280c027beb2f42aa758e548c9c214e32ddfde"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSelection._followingSameFaultInstruction (cyclomatic 23): SsaInstructionSelection._followingSameFaultInstruction has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a9d3494a164eee8d46f769b65f81a5788f5d06a7f4b7ba7d1e1047aa1ae91e"}},{"ruleId":"D1","level":"warning","message":{"text":"MemorySet.intersectionFor (cyclomatic 23): MemorySet.intersectionFor has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":5097}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c59ddc4be425458a3c13fae5a27d2e77bd75d6ae97cec5b3a10f1e679fa09b2"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassPropertyModel.build (cyclomatic 23): ClassPropertyModel.build has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/property_model.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"97574b32efa024b4683fb8420f1d46b15969103a1cc4cd8f43d62ecc13056d79"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementalCompiler._computeTransitiveClosure (cyclomatic 23): IncrementalCompiler._computeTransitiveClosure has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1773}}}],"partialFingerprints":{"codehealthFindingId/v1":"1210857ef43b20deaad1e9fd832b4edb61606525134b3cfe07b7f4981fb53893"}},{"ruleId":"D1","level":"warning","message":{"text":"NamedTypeBuilderImpl.buildSupertype (cyclomatic 23): NamedTypeBuilderImpl.buildSupertype has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: NamedTypeBuilderImpl._checkDeferred (cyclomatic 32) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb442eb31513bbefbc9cadf30ad0f9aff4ae7fb3f09f88d299f3e88144cd1dd"}},{"ruleId":"D1","level":"warning","message":{"text":"DartScopeBuilder2._looksLikePatternMatching (cyclomatic 23): DartScopeBuilder2._looksLikePatternMatching has cyclomatic complexity 23 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":946}}}],"partialFingerprints":{"codehealthFindingId/v1":"b110ffca8ae15d7412f007cc91b2e4f0d761c7c37685be14c368e952c90d7897"}},{"ruleId":"D1","level":"warning","message":{"text":"Resolver._finishFunction (cyclomatic 23): Resolver._finishFunction has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":1413}}}],"partialFingerprints":{"codehealthFindingId/v1":"703798f8c9adea6ab953e7ae7363646ac7535a03985eb9f1e92e00005ade88ce"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstListOrSetLiteralBuilder.translate (cyclomatic 23): _ConstListOrSetLiteralBuilder.translate has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"350eb4d37872e0f1199a4ad7c55144511aab9125015085b7cd7ec8b4ad5464b9"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl.dispatchPatternSchema (cyclomatic 23): InferenceVisitorImpl.dispatchPatternSchema has cyclomatic complexity 23 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":11359}}}],"partialFingerprints":{"codehealthFindingId/v1":"c99a9b3bb149e3876cfe067320b1e6ee72b468ddc104d1ea0c6d3d910d048871"}},{"ruleId":"D1","level":"warning","message":{"text":"StandardBounds._getLegacyLeastUpperBound (cyclomatic 23): StandardBounds._getLegacyLeastUpperBound has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: StandardBounds.morebottom (cyclomatic 41) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5ccb079b4d756dfac84c355d299908e7bf0d079d7b88ea5bf58d07a848f4390"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._visitInvocationExpression (cyclomatic 23): _Visitor._visitInvocationExpression has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_lambdas.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d5595914565ae4beba60471e451b00179be4fdea7d25755b0527d6872611b27"}},{"ruleId":"D1","level":"warning","message":{"text":"NameSection.serializeContents (cyclomatic 23): NameSection.serializeContents has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"4678731842bb09e713c7d9e821ac88a0cc14227a324fbf8c94b3bb3c6f674bbc"}},{"ruleId":"D1","level":"warning","message":{"text":"DFilterExpression.evaluate (cyclomatic 23): DFilterExpression.evaluate has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/heapsnapshot/lib/src/expression.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"0600e4567b220ee924979b6bab3f8ff277c69a08d973459ab7d9b25432feaab1"}},{"ruleId":"D1","level":"warning","message":{"text":"_DirectInvocation._processFunction (cyclomatic 23): _DirectInvocation._processFunction has cyclomatic complexity 23 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e5e322e0257331ab41eebfad51507cd38f73f23c1bd2fe0771cb8fae734847"}},{"ruleId":"D1","level":"warning","message":{"text":"RuntimeType.isSubtypeOfRuntimeType (cyclomatic 23): RuntimeType.isSubtypeOfRuntimeType has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1640}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac93867af184a6b6ac99b15c26f6b4489a226fd2b1f0737666d5b2453130582"}},{"ruleId":"D1","level":"warning","message":{"text":"bin_to_coff.main (cyclomatic 23): bin_to_coff.main has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/bin_to_coff.py"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9cbcbd5467d12fe74bd6bc099cf5035e42eb0fdf146117c18dac13dfe81089a"}},{"ruleId":"D1","level":"warning","message":{"text":"Version.__lt__ (cyclomatic 23): Version.__lt__ has cyclomatic complexity 23 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a656f3357d3d5fc7f7d6f383ebd5505f1961cc186a08ae2243aec6c7767ba0"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractScanner.tokenizeLanguageVersionOrSingleLineComment (cyclomatic 22): AbstractScanner.tokenizeLanguageVersionOrSingleLineComment has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1386}}}],"partialFingerprints":{"codehealthFindingId/v1":"aae68b56c4d961069826eef0ac49c02bc5ea8cf53beb36030ac9380494885567"}},{"ruleId":"D1","level":"warning","message":{"text":"MutationRunner._runChain (cyclomatic 22): MutationRunner._runChain 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":"pkg/analyzer/tool/fine/ab_mutate.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"dba70557ca90acfde3bdda4eb11d7b643a751947f0eedce3f0d68612a6917478"}},{"ruleId":"D1","level":"warning","message":{"text":"_CodeGenerator.extractIdl (cyclomatic 22): _CodeGenerator.extractIdl 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":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb4eaf986d471e3f6930b6582bd9c74eaf744f2e44a34cbe246b83b369d89170"}},{"ruleId":"D1","level":"warning","message":{"text":"_ScopeBuilder._visitFunction (cyclomatic 22): _ScopeBuilder._visitFunction 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":"pkg/dart2bytecode/lib/local_vars.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"fddcb3af0d80368ed971382deccf068f0c500dc6a2a02f4463311756ca6ec666"}},{"ruleId":"D1","level":"warning","message":{"text":"AstIndexerAndIgnoreCollector._checkCommentAndIgnoreCoverageWithBeginAndEnd (cyclomatic 22): AstIndexerAndIgnoreCollector._checkCommentAndIgnoreCoverageWithBeginAndEnd has cyclomatic complexity 22 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"f750ded567fc2dc4592e1befc94484e7eabbe78bb52d3aeed374e68b7326e66f"}},{"ruleId":"D1","level":"warning","message":{"text":"_TraceReader.readTrace (cyclomatic 22): _TraceReader.readTrace 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":"pkg/vm_snapshot_analysis/lib/precompiler_trace.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"6082de2297c3e510100808e6bfcfa9d5623ef5207854a6ba8d1df192c2ff1e6c"}},{"ruleId":"D1","level":"warning","message":{"text":"AppWindowCreateWindowOptions.AppWindowCreateWindowOptions (cyclomatic 22): AppWindowCreateWindowOptions.AppWindowCreateWindowOptions has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/app_window.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f9d3c17468cbf85f508b8145d8c3b0e97fb275f751d66d155afab51ca50d9be"}},{"ruleId":"D1","level":"warning","message":{"text":"_HttpClientResponse._authenticate (cyclomatic 22): _HttpClientResponse._authenticate has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: _HttpResponse._findReasonPhrase (cyclomatic 42) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"14f8d85a321de7cb4b09c1c09e259641f5b1c9f08ded813e96a1416f9b9e40b0"}},{"ruleId":"D1","level":"warning","message":{"text":"_WebSocketOutgoingTransformer.createFrame (cyclomatic 22): _WebSocketOutgoingTransformer.createFrame 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":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":1089}}}],"partialFingerprints":{"codehealthFindingId/v1":"e72fd1b143c8d4b738f619d64033642172604c2c80bd906fe46e16d7afe9f9ee"}},{"ruleId":"D1","level":"warning","message":{"text":"FormatException.toString (cyclomatic 22): FormatException.toString 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":"sdk/lib/core/exceptions.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"b18fd80d3c1a1e82d48672dc55ecadbd157a75cb4788955952703a016f455232"}},{"ruleId":"D1","level":"warning","message":{"text":"Uri.parseIPv6Address (cyclomatic 22): Uri.parseIPv6Address 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":"sdk/lib/core/uri.dart"},"region":{"startLine":1611}}}],"partialFingerprints":{"codehealthFindingId/v1":"58a921924b509d878ebc1892f59d20421c546fd7b4789385a6312accb3d7e278"}},{"ruleId":"D1","level":"warning","message":{"text":"Stdin.readLineSync (cyclomatic 22): Stdin.readLineSync 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":"sdk/lib/io/stdio.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa6785af69bcce30b3ce6990cbc9ad5870b7f28225829f17fa60955a960c549"}},{"ruleId":"D1","level":"warning","message":{"text":"PromotionModel._tryPromoteToTypeOfInterest (cyclomatic 22): PromotionModel._tryPromoteToTypeOfInterest 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":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":4911}}}],"partialFingerprints":{"codehealthFindingId/v1":"42844eeb611b83c8dce727d857f609b443ec73ea5601b97debaa9ca5ec09db0c"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseExtensionDeclaration (cyclomatic 22): Parser.parseExtensionDeclaration 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":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":3641}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ed884ca96947f76f79de2d9ba1d14eb6cb6ae35c576bfb99f93b5df293eaf56"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseFactoryMethod (cyclomatic 22): Parser.parseFactoryMethod 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":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6162}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9926d7d8536af1c1793ab8127477a35c3304bf37fb92b9fc12ef4dac8e579bb"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseUnaryExpression (cyclomatic 22): Parser.parseUnaryExpression 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":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7872}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0861e0c655fee059a08a9867256c2cd8d6b024c62cc0c6a23e820de76368dd0"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractScanner.tokenizeLanguageVersionOrSingleLineComment (cyclomatic 22): AbstractScanner.tokenizeLanguageVersionOrSingleLineComment has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"645830d49a82811489cfc23290d06783712f691a990fe21b1846b606268fe5e8"}},{"ruleId":"D1","level":"warning","message":{"text":"_MinimalEditComputer._addEditFor (cyclomatic 22): _MinimalEditComputer._addEditFor has cyclomatic complexity 22 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/source_edits.dart"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"62caceada8ad6fc22c726974cf20d6fcbea3e5d3c4775919b288a1f7ee49ffe1"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeHierarchyComputerHelper.findMemberElement (cyclomatic 22): TypeHierarchyComputerHelper.findMemberElement 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":"pkg/analysis_server/lib/src/search/type_hierarchy.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"7308d38692af740799f411e6698befbe969daf7d66846b51ce32b61ff33a6ae9"}},{"ruleId":"D1","level":"warning","message":{"text":"Driver.start (cyclomatic 22): Driver.start has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0105d6b4e1a2c0b380cba6a293c82d8290e68c982d60f9fcdaa0079fc00a00d"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._addMembersOfEnclosingNode (cyclomatic 22): DeclarationHelper._addMembersOfEnclosingNode 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":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1568}}}],"partialFingerprints":{"codehealthFindingId/v1":"03745b13e97b68b414b37549c5eb2c2311fdf454f837a1501f92d40bffc7d902"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._suggestMethod (cyclomatic 22): DeclarationHelper._suggestMethod 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":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2390}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0b1c339f85d19193125487b687535267001aac19229d7bdda9bbe5508554732"}},{"ruleId":"D1","level":"warning","message":{"text":"FeatureComputer.computeElementKind (cyclomatic 22): FeatureComputer.computeElementKind has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (FeatureComputer.computeElementKind2) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"66d9d8f1d81c02cd0befcfd3d5f3d3cf8d502486a9b5c0facf71d69ec5f11c24"}},{"ruleId":"D1","level":"warning","message":{"text":"FeatureComputer.computeElementKind2 (cyclomatic 22): FeatureComputer.computeElementKind2 has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (FeatureComputer.computeElementKind) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"257ab02d2ce42b04599a6e7115d60f136686594bc6e994e8816ef2c7e46722f9"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitRegularFormalParameter (cyclomatic 22): InScopeCompletionPass.visitRegularFormalParameter 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":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2888}}}],"partialFingerprints":{"codehealthFindingId/v1":"861688bc9233eff31108bcccc0da483e30e7b51b439589d67431b29dba64131c"}},{"ruleId":"D1","level":"warning","message":{"text":"BulkFixProcessor._fixErrorsInLibraryUnit (cyclomatic 22): BulkFixProcessor._fixErrorsInLibraryUnit 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":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"821dec005e97fd28d3dda9d85cf2495902caa59cffda2e105679cfc0f896c4c5"}},{"ruleId":"D1","level":"warning","message":{"text":"BindToField._replaceParameterWithThis (cyclomatic 22): BindToField._replaceParameterWithThis 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":"pkg/analysis_server/lib/src/services/correction/dart/bind_to_field.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae7418b0eaaf4439ee0fc1d0fbd89c1456b603e0cbfa4a4fc8426bffcba4536b"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertIntoFinalField.compute (cyclomatic 22): ConvertIntoFinalField.compute 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":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"89a0314a33b7ca7d4113a7a1815115885fd0b2f712ebde0a071af455739d85e3"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToDeclaringParameter._resolveParameterFromFieldNode (cyclomatic 22): ConvertToDeclaringParameter._resolveParameterFromFieldNode 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":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_declaring_parameter.dart"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"98b239d10931e83f552158499acc481e2bc43f61b2025a5f308d7bcaa8fe40e4"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToNullAware.compute (cyclomatic 22): ConvertToNullAware.compute 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":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_null_aware.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"c729108765847863bd7244da415ac8b8a44eb6e2e9fa01a363ca7da66e3227f6"}},{"ruleId":"D1","level":"warning","message":{"text":"_RemoveConst.compute (cyclomatic 22): _RemoveConst.compute 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":"pkg/analysis_server/lib/src/services/correction/dart/remove_const.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aa1895fd1fe43d2424cc7a61ca893233f5296fd33edfc8c73093cd1b85bd716"}},{"ruleId":"D1","level":"warning","message":{"text":"ReplaceWithIsEmpty._analyzeBinaryExpression (cyclomatic 22): ReplaceWithIsEmpty._analyzeBinaryExpression 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":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_is_empty.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"3745a720e29de7907fbe9882afe3499a370240801d15f14b99c1e73db00f1d7e"}},{"ruleId":"D1","level":"warning","message":{"text":"_MatcherBuilder._buildFromSimpleIdentifier (cyclomatic 22): _MatcherBuilder._buildFromSimpleIdentifier 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":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"516a47a41a63285028ae2844e94e050f989a38bed66f5b80fe559a74f4c695fd"}},{"ruleId":"D1","level":"warning","message":{"text":"PluginsPage._emitIsolateInfo (cyclomatic 22): PluginsPage._emitIsolateInfo 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":"pkg/analysis_server/lib/src/status/pages/plugins_page.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"0310cba23546ce8eeaf84ab514df37ff7dc26369259bf461111f0e36432af32f"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisDriver.workPriority (cyclomatic 22): AnalysisDriver.workPriority has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4d7718fee46417ba9df7721b726d5ebd172534f444343d8759d337a2d27ccd"}},{"ruleId":"D1","level":"warning","message":{"text":"GenericInferrer.tryChooseFinalTypes (cyclomatic 22): GenericInferrer.tryChooseFinalTypes 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":"pkg/analyzer/lib/src/dart/element/generic_inferrer.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"249714bdd118acbe31fd04e2a4f3da2ed8945cb8df81fcd5c77b7151b43c5eb8"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotationResolver._resolve (cyclomatic 22): AnnotationResolver._resolve 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":"pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"840ead27ef1775734fcb416b24b67ff48d51d23807369b999e68fbc861cf720f"}},{"ruleId":"D1","level":"warning","message":{"text":"AssignmentExpressionResolver.resolveCompound (cyclomatic 22): AssignmentExpressionResolver.resolveCompound 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":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"811f35bdb613365ea31303f4cdc8901c01ec576bbf616d74a6645ac0100159ae"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstructorTearOffResolver.resolve (cyclomatic 22): ConstructorTearOffResolver.resolve 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":"pkg/analyzer/lib/src/dart/resolver/constructor_tear_off_resolver.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee0dbb221745875de57f9bd71c25a64d426cd37d2b559e0ebfe10837db9d886d"}},{"ruleId":"D1","level":"warning","message":{"text":"TypedLiteralResolver._inferSetOrMapLiteralType (cyclomatic 22): TypedLiteralResolver._inferSetOrMapLiteralType has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"569e98cb8fd23459c38fdfac294e6397f9a33a4c14c6c7cffdaacac57cc68245"}},{"ruleId":"D1","level":"warning","message":{"text":"DartdocDirectiveInfo.extractTemplate (cyclomatic 22): DartdocDirectiveInfo.extractTemplate 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":"pkg/analyzer/lib/src/dartdoc/dartdoc_directive_info.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"31c0ccbb799c54e010819e5b3e1a2f03e2299484fe37ca24791822591080e7e8"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstArgumentsVerifier._isConst (cyclomatic 22): ConstArgumentsVerifier._isConst has cyclomatic complexity 22 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/const_argument_verifier.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6f8d24c31a730fc22b1ac337db18d12a70be3ba591ec73a7eccbddf09e60302"}},{"ruleId":"D1","level":"warning","message":{"text":"UnusedLocalElementsVerifier._isUsedElement (cyclomatic 22): UnusedLocalElementsVerifier._isUsedElement 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":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfd2ea31b5dfe281d790b8e85c6b380e4cb5b93a32289ea023efde40625d98fc"}},{"ruleId":"D1","level":"warning","message":{"text":"DocCommentBuilder._parseOneCommentReference (cyclomatic 22): DocCommentBuilder._parseOneCommentReference 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":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"d897deef344e7a5ac2c086850a85a2874ce7bcc5c41fe553c6b44c650f6b452b"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForConflictingClassMembers (cyclomatic 22): ErrorVerifier._checkForConflictingClassMembers 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":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":4015}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac1d19d60beb168fd11a6b219468cb1a516a0e0645ec81466255ce3c54dd1bf8"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForConflictingInitializerErrorCodes (cyclomatic 22): ErrorVerifier._checkForConflictingInitializerErrorCodes 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":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":4420}}}],"partialFingerprints":{"codehealthFindingId/v1":"a65bfaf13c252cc635a58f3f4ca29c3e0dd9c0e845f812ef9a971140f1542477"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForExtensionTypeRepresentationErrorCodes (cyclomatic 22): ErrorVerifier._checkForExtensionTypeRepresentationErrorCodes 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":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5511}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc3df312a8a289402e0fc9db22ff2518cd825303f3651fc76610b72cf9724404"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier.visitClassDeclaration (cyclomatic 22): FfiVerifier.visitClassDeclaration 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":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"656fc2cccb9d8e7a65e240c2ca631a8c27ea2dbdaef67a4b261bc64db184411a"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolverVisitor.visitAnonymousMethodInvocation (cyclomatic 22): ResolverVisitor.visitAnonymousMethodInvocation 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":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":2123}}}],"partialFingerprints":{"codehealthFindingId/v1":"b44e9f3ce2b9841411c736248860c5a45301043aecf7f727ccd2f009575831d1"}},{"ruleId":"D1","level":"warning","message":{"text":"LocalDeclarationVisitor._addVariables (cyclomatic 22): LocalDeclarationVisitor._addVariables 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":"pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbed238dd20b5674197881dedafff4e9a362d151160c26baea2146aaeece455e"}},{"ruleId":"D1","level":"warning","message":{"text":"SpecializedChecks._findAsCheck (cyclomatic 22): SpecializedChecks._findAsCheck 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":"pkg/compiler/lib/src/js_backend/specialized_checks.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6c863e3626511b889a7e495ce5db2d6404fbc3080258eb70c38b9d321137d04"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder._buildConstructor (cyclomatic 22): KernelSsaGraphBuilder._buildConstructor 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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee80da9880123f2e35a0fae0814727c5ee8773115dbff90b1ac1a2c5af756979"}},{"ruleId":"D1","level":"warning","message":{"text":"DartDebugAdapter._buildOutputEventsWithSourceReferences (cyclomatic 22): DartDebugAdapter._buildOutputEventsWithSourceReferences 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":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":2659}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5d8211fcd1b533434fd99cd6f87f07929e9f1797ec78073eed94b3abd3349c7"}},{"ruleId":"D1","level":"warning","message":{"text":"BaseDebugAdapter.handleIncomingRequest (cyclomatic 22): BaseDebugAdapter.handleIncomingRequest has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/base_debug_adapter.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"97e24c7fc954a1c28e67b8f3f0c430a6d0b198a32a57b16a4ac67258970babaa"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._emitFactoryInvocation (cyclomatic 22): ProgramCompiler._emitFactoryInvocation 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7461}}}],"partialFingerprints":{"codehealthFindingId/v1":"a052d011142c3ecc2b717c830ba8363bd31128d312916b4d024de6001b247103"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._emitClassProperties (cyclomatic 22): LibraryCompiler._emitClassProperties 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":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2799}}}],"partialFingerprints":{"codehealthFindingId/v1":"35404d85a2d52e319f8a25fc07dc354f51f7adb4d11fa5b586e1be6a09e2c26f"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._emitFactoryInvocation (cyclomatic 22): LibraryCompiler._emitFactoryInvocation 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":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8328}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb2ddea4393d188f7c51b9db1fb08048d729f7d851980488a23e53c05cf72b56"}},{"ruleId":"D1","level":"warning","message":{"text":"NamedTypeBuilderImpl.substituteRange (cyclomatic 22): NamedTypeBuilderImpl.substituteRange has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: NamedTypeBuilderImpl._checkDeferred (cyclomatic 32) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f36a3d8691c47cf2f5de346e24a71a859d13746814b4430a80af7cf865fcf26"}},{"ruleId":"D1","level":"warning","message":{"text":"RecordTypeBuilderImpl.buildAliased (cyclomatic 22): RecordTypeBuilderImpl.buildAliased 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":"pkg/front_end/lib/src/builder/record_type_builder.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"d235ae489d146f6025258bf9ab9916cb32e1d5646bbcc9cb8c584f18e6df9386"}},{"ruleId":"D1","level":"warning","message":{"text":"ForwardingNode._createForwardingImplIfNeeded (cyclomatic 22): ForwardingNode._createForwardingImplIfNeeded 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":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b36a23cc0589f80531565776535b799fe27912cc6370b6fa4fa6ea951eb8da2"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceLibraryBuilder.computeFieldPromotability (cyclomatic 22): SourceLibraryBuilder.computeFieldPromotability has cyclomatic complexity 22 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: SourceLibraryBuilder.checkPendingBoundsChecks (cyclomatic 33) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"e83450e226b8a57911edbb631177a825ab08f8ef6ad24220dde8b33f8b47a44a"}},{"ruleId":"D1","level":"warning","message":{"text":"StringToSource.analyze (cyclomatic 22): StringToSource.analyze has cyclomatic complexity 22 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/strings.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"814a2866e187c3f6208dea09816805eb572f097dad97a7d01d496a3e85c0fc8d"}},{"ruleId":"D1","level":"warning","message":{"text":"IntersectionType.IntersectionType (cyclomatic 22): IntersectionType.IntersectionType has cyclomatic complexity 22 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2050}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae1be8588ea7f6ce094f1e8a9fbbe72fb291fffb8590f030cb3b7ed8fcb411e6"}},{"ruleId":"D1","level":"warning","message":{"text":"InstructionsBuilder.forceBuild (cyclomatic 22): InstructionsBuilder.forceBuild 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":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3de6cb2cffec6cefbc7e344b005b784627c9b60f712a33461df6b531dc03f9c"}},{"ruleId":"D1","level":"warning","message":{"text":"_RecGroupBuilder._assignBrandTypes (cyclomatic 22): _RecGroupBuilder._assignBrandTypes 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":"pkg/wasm_builder/lib/src/builder/types.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ab83c6cd58b5ea2abe0e3b1980c73c5670a450c07a6374d5a934974ee54a74"}},{"ruleId":"D1","level":"warning","message":{"text":"PragmaEntryPointsVisitor.visitField (cyclomatic 22): PragmaEntryPointsVisitor.visitField 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":"pkg/vm/lib/transformations/type_flow/native_code.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"853bd4078fd69818b5673b345b374279efcc189b092e5af68b296c91c50f77d4"}},{"ruleId":"D1","level":"warning","message":{"text":"_Transform.transformMemberSignature (cyclomatic 22): _Transform.transformMemberSignature 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":"pkg/vm/lib/transformations/type_flow/signature_shaking.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcb189449826d15e3b72e078e5b90c5d9b0c1507bec279b175ee6af5a6fa88ee"}},{"ruleId":"D1","level":"warning","message":{"text":"HtmlDartGenerator._AddFutureifiedOperation (cyclomatic 22): HtmlDartGenerator._AddFutureifiedOperation 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":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"32eb69ce3f9251a2d84eba6e3e33ebdf30643e1d8a3ae9fdd3036d75b1318bde"}},{"ruleId":"D1","level":"warning","message":{"text":"IDLNode._find_all (cyclomatic 22): IDLNode._find_all 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":"tools/dom/scripts/idlnode.py"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ebc0469a2820f1d0384f37c11c937680deb2d1957b2d7531bcf26e3bab400eb"}},{"ruleId":"D1","level":"warning","message":{"text":"ConfigurationFilesMixin.writePackageConfig2 (cyclomatic 21): ConfigurationFilesMixin.writePackageConfig2 has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/configuration_files_mixin.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"02ade74050abe456ef0a805483516aa8f09f368036740ca64d7678839f107964"}},{"ruleId":"D1","level":"warning","message":{"text":"Utils.formatDuration (cyclomatic 21): Utils.formatDuration has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/utils.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"e56f101f2ee4075859e60b68c9abfb657313c0e1c2359ec15bb16c4367d4bfdb"}},{"ruleId":"D1","level":"warning","message":{"text":"DartFuzz.pickScalarVar (cyclomatic 21): DartFuzz.pickScalarVar has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":2128}}}],"partialFingerprints":{"codehealthFindingId/v1":"7950cc6bc840a69f0e69f297f899f5cb5553f8b1d51964d527c1ec0e57548856"}},{"ruleId":"D1","level":"warning","message":{"text":"Future.wait (cyclomatic 21): Future.wait has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/future.dart"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"639004456de823190ef32f42292316297c8f85d28fb7eb3448828852e4c9a8ef"}},{"ruleId":"D1","level":"warning","message":{"text":"Arm64CodeGenerator.visitTypeTest (cyclomatic 21): Arm64CodeGenerator.visitTypeTest has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Arm64CodeGenerator.visitComparison (cyclomatic 22) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1764}}}],"partialFingerprints":{"codehealthFindingId/v1":"abd6092683f5d8ad34ce945b63047a7934b67ea3a0f1bba2b9c3c9631713efff"}},{"ruleId":"D1","level":"warning","message":{"text":"Base64Codec.normalize (cyclomatic 21): Base64Codec.normalize has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/base64.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d5513db25b0814b5719383d31f916d7192a621c038d3dd42e6706c8f7a6fb87"}},{"ruleId":"D1","level":"warning","message":{"text":"_Utf8Decoder.decodeGeneral (cyclomatic 21): _Utf8Decoder.decodeGeneral has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/utf.dart"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"669ad660e6f97dc47ea6dfd7b57c3afe4fbdec075e47bc5dfc9bfa83ee428ef1"}},{"ruleId":"D1","level":"warning","message":{"text":"_Uri._normalizeRegName (cyclomatic 21): _Uri._normalizeRegName has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2550}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e1b5f25ab002a20914a65219d7bad40f4119caf1545b9f5b434522cedb7467e"}},{"ruleId":"D1","level":"warning","message":{"text":"UriData._parse (cyclomatic 21): UriData._parse has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":4254}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd2ce73b810a2de27c23b2330553bc06c4b42bf0174648b7390538fa47d1128"}},{"ruleId":"D1","level":"warning","message":{"text":"AstToIr._buildPrologue (cyclomatic 21): AstToIr._buildPrologue has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"732c475240dcf1747bded43e6f70ca47488533b5763df07f9a23f4c36f2ef91b"}},{"ruleId":"D1","level":"warning","message":{"text":"_FfiUseSiteTransformer._verifyAndReplaceNativeCallable (cyclomatic 21): _FfiUseSiteTransformer._verifyAndReplaceNativeCallable has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":1274}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bfba8a49c11f45b599731fb3e81f071f151c04011e209e67e47c8c9eb7e76bf"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseArgumentOrIndexStar (cyclomatic 21): Parser.parseArgumentOrIndexStar has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7995}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffa2b6eddca4c421f56118f6a26298aae867ccb7acbd2ab756bca68d4066c436"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseArgumentsRest (cyclomatic 21): Parser.parseArgumentsRest has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9511}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2b888705618c743556f7f6dfb41235edecbd0477314d8685c6ab0b928d574e0"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseVariablePattern (cyclomatic 21): Parser.parseVariablePattern has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11885}}}],"partialFingerprints":{"codehealthFindingId/v1":"76447b365d798829e2f5b8bbe3447184eca6ab5160d924de2b6f3c31d9d363c8"}},{"ruleId":"D1","level":"warning","message":{"text":"ComplexTypeInfo._checkIfRecordTypeParenthesisAreRecovered (cyclomatic 21): ComplexTypeInfo._checkIfRecordTypeParenthesisAreRecovered has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"571d6be3fd5ba88eb074cff9897fc1581d47436ad60c497f3d222391e63f2c5d"}},{"ruleId":"D1","level":"warning","message":{"text":"ComplexTypeParamOrArgInfo.compute (cyclomatic 21): ComplexTypeParamOrArgInfo.compute has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1345}}}],"partialFingerprints":{"codehealthFindingId/v1":"617668c27c3532b57a9b05c498a36f7be7d5c99c7cd548851e6ee20a8c0d2e25"}},{"ruleId":"D1","level":"warning","message":{"text":"Features.fromText (cyclomatic 21): Features.fromText has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/features.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d1408434499e6f73c4c046b0fb8e83610e1ef30d695da8ab066ac22d165f528"}},{"ruleId":"D1","level":"warning","message":{"text":"ExportChecker.visitClass (cyclomatic 21): ExportChecker.visitClass has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/export_checker.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"7963d9643e0ac1963319d16facda0fc4c088163674437e563a01b86c5d38f58b"}},{"ruleId":"D1","level":"warning","message":{"text":"ContextManagerImpl._createAnalysisContexts (cyclomatic 21): ContextManagerImpl._createAnalysisContexts has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a0a6a214d5ff15e2dc10c6fe590235a098fd24e13f445654aa8e7d65b005d9c"}},{"ruleId":"D1","level":"warning","message":{"text":"TokenData.fromSelection (cyclomatic 21): TokenData.fromSelection has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ebb7135c5ee56ba411ea641f9bd2538570260012f7e2b50013cbf8b172e2a46"}},{"ruleId":"D1","level":"warning","message":{"text":"UriHelper._addFileSuggestions (cyclomatic 21): UriHelper._addFileSuggestions has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/uri_helper.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"92a5b7c6d2f6f7eabd07e0f2b35eadccd9a22047334720488ae1eca523c564e7"}},{"ruleId":"D1","level":"warning","message":{"text":"YamlCompletionGenerator._siblingsOnPath (cyclomatic 21): YamlCompletionGenerator._siblingsOnPath has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/yaml_completion_generator.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f39a0b1df87018254b104253f44fc6c0a0d50671b9d4dec96f6e7ec1e149d83"}},{"ruleId":"D1","level":"warning","message":{"text":"BulkFixProcessor._computeChangesToPubspec (cyclomatic 21): BulkFixProcessor._computeChangesToPubspec has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"10c21af5fd7be612937c321c631ad9af8ab7e10eb1c9a32f004e52560749cb97"}},{"ruleId":"D1","level":"warning","message":{"text":"AddSuperParameter._addToConstructor (cyclomatic 21): AddSuperParameter._addToConstructor has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_super_parameter.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"a724796a45907beed289870e6e8d4cbfefc9622cd517869e08d6a06b30d773a1"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertNullCheckToNullAwareElementOrEntry.compute (cyclomatic 21): ConvertNullCheckToNullAwareElementOrEntry.compute has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_null_check_to_null_aware_element_or_entry.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"a08ac46ee327dc4c8d9be98610c789a90429fbb33eea0643e3006669aeed389f"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToNamedArguments.compute (cyclomatic 21): ConvertToNamedArguments.compute has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_named_arguments.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"852f444a8a36a0d77dda3e3227052766a4054aa5c5be75ef135b9ab915c108cf"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateExtensionGetter.compute (cyclomatic 21): CreateExtensionGetter.compute has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cd76e732872cc278c8497d08543905c6efb2c59b6874e8277d37caf70a03482"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveThisAlias.compute (cyclomatic 21): RemoveThisAlias.compute has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_this_alias.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4a20a67b5bd3255565b728b26972161d66c06d02039c36c3ac02172721fb23"}},{"ruleId":"D1","level":"warning","message":{"text":"_CodeFragmentScanner.scan (cyclomatic 21): _CodeFragmentScanner.scan has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/code_fragment_parser.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"49de7f25b2061b960679fa725cc1bd88911c5ccb6e8783d0f92edbba22f45e08"}},{"ruleId":"D1","level":"warning","message":{"text":"ContextsPage.generateContent (cyclomatic 21): ContextsPage.generateContent has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/contexts_page.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8723718c675e2b0abba546895f9ceb185494e391910d82d7018a5e68bed79e5"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpressionImpl.computeConstantValue (cyclomatic 21): ExpressionImpl.computeConstantValue has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: V1Projection._sourceOf (cyclomatic 25) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17991}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b7dd23ff31f38a074c7ec02a72de02adb3307c0e2101319b5e130362d11af06"}},{"ruleId":"D1","level":"warning","message":{"text":"GreatestLowerBoundHelper._functionType (cyclomatic 21): GreatestLowerBoundHelper._functionType has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"f530947f85efc53fd509262de4ae4a98a25dd553e49d6ec7d01f8f7230797d53"}},{"ruleId":"D1","level":"warning","message":{"text":"AssignmentExpressionResolver.resolveDirect (cyclomatic 21): AssignmentExpressionResolver.resolveDirect has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"180ece03472ff1c9bac4f3d45dc9d5ab9fb99666147ac233a3e3ef95f20458c5"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyElementResolver._resolveTargetInterfaceElement (cyclomatic 21): PropertyElementResolver._resolveTargetInterfaceElement has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":2243}}}],"partialFingerprints":{"codehealthFindingId/v1":"31a0e12127f6e5ec1cbe7d5f02d5ed61a7c7db5ab879133cfadd252f9f92ceaa"}},{"ruleId":"D1","level":"warning","message":{"text":"AssignmentVerifier._verify (cyclomatic 21): AssignmentVerifier._verify has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/assignment_verifier.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d97f95a5364709d76044fa0d3e72a41c973a682f6b93add54b7b6844c407f3"}},{"ruleId":"D1","level":"warning","message":{"text":"BestPracticesVerifier.visitMethodDeclaration (cyclomatic 21): BestPracticesVerifier.visitMethodDeclaration has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb0db552825aa652d1d73e5ffda52559df4e7ad747a64788d6034c47f96eb268"}},{"ruleId":"D1","level":"warning","message":{"text":"GatherUsedLocalElementsVisitor.visitSimpleIdentifier (cyclomatic 21): GatherUsedLocalElementsVisitor.visitSimpleIdentifier has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"af89166c0daaea2430d1f5d5167a4ce487c79a689fb0f7f7a57bd396eca64b9c"}},{"ruleId":"D1","level":"warning","message":{"text":"AstBuilder.endFormalParameter (cyclomatic 21): AstBuilder.endFormalParameter has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":1877}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec41cd3d16898875c6295cf6d0394a06932ec2b7b21afb36723492bb5a10aa96"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForAllMixinErrorCodes (cyclomatic 21): ErrorVerifier._checkForAllMixinErrorCodes has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":2967}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b6f7a5a67f0be88057e3235782db42b2e10db602c2074ecd9d3e0cebc0cf7e"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier._isValidFfiNativeType (cyclomatic 21): FfiVerifier._isValidFfiNativeType has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2db2cf9caf9186ffffef8c14ba4dcccf71ed0f6c1c5a8ee826f4fa8654311ce"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier._validateCompatibleNativeType (cyclomatic 21): FfiVerifier._validateCompatibleNativeType has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1665}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8a3ea744bcbaa514ae20654612a3b42bd5ff3596bd6596ab2b820448560260f"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier._validateNativeAddressOf (cyclomatic 21): FfiVerifier._validateNativeAddressOf has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":2059}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c430bb3ad48e53a1c0d48e6478cccf779b68f8278427ba2a26fd72dbaa18fa4"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier._validateNativeCallable (cyclomatic 21): FfiVerifier._validateNativeCallable has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":2186}}}],"partialFingerprints":{"codehealthFindingId/v1":"40383595ec20b0ace100f4af6aa815d6f66336b7a6764db07eaa9bee6bd8d3ec"}},{"ruleId":"D1","level":"warning","message":{"text":"MissingDependencyValidator.validate (cyclomatic 21): MissingDependencyValidator.validate has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/pubspec/validators/missing_dependency_validator.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"2829abcd3613167f341567533b30d6d8ae542a4beb397c9fd8f98667c2d54742"}},{"ruleId":"D1","level":"warning","message":{"text":"_InfoBuilder.build (cyclomatic 21): _InfoBuilder.build has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a64c1a574e2566905ac27974ecb84b66002d117ffa8b50b9dae3a7adb183c9c"}},{"ruleId":"D1","level":"warning","message":{"text":"_Finder._visit (cyclomatic 21): _Finder._visit has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/type_alias.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6ca0f3e06cf6585096947444c89022e9c6f7d31372f7898d5844915c02080dc"}},{"ruleId":"D1","level":"warning","message":{"text":"DartEditBuilderImpl._canWriteType (cyclomatic 21): DartEditBuilderImpl._canWriteType has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1131}}}],"partialFingerprints":{"codehealthFindingId/v1":"c24fb48342c5aa479d7d88af1d52518cfe47df4be6ecdf4b16d4b9d4fb69f515"}},{"ruleId":"D1","level":"warning","message":{"text":"InferrerEngine._isFieldInitializerPotentiallyNull (cyclomatic 21): InferrerEngine._isFieldInitializerPotentiallyNull has cyclomatic complexity 21 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":769}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a00e335ba59b07fcbf997b0b91e8d3f06a728cbb6f1c761adcac8a68820f32"}},{"ruleId":"D1","level":"warning","message":{"text":"ListTracerVisitor.visitDynamicCallSiteTypeInformation (cyclomatic 21): ListTracerVisitor.visitDynamicCallSiteTypeInformation has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/list_tracer.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd82546bbc2a0f4dd568fb09b605352a4bafecab02e5ce5b5e0c080d0621ce63"}},{"ruleId":"D1","level":"warning","message":{"text":"KClassEnv._ensureMaps (cyclomatic 21): KClassEnv._ensureMaps has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/env.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"596fe3197986d73de433e79e4b7097eda143452ce72e628f6144be01ef21a6a2"}},{"ruleId":"D1","level":"warning","message":{"text":"NativeEnqueuer._processNativeBehavior (cyclomatic 21): NativeEnqueuer._processNativeBehavior has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/enqueue.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"013adecb80e004168448b982147d22058c19d6eae2a41402fbcc7df886458969"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolutionEnqueuer.processTypeUse (cyclomatic 21): ResolutionEnqueuer.processTypeUse has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: ResolutionEnqueuer.processStaticUse (cyclomatic 22) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/resolution/enqueuer.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"c455ca211aae88320e0cbe0fac296824c963d060aac45fbc9c99637d46849b5a"}},{"ruleId":"D1","level":"warning","message":{"text":"DartCliDebugAdapter.launchAndRespond (cyclomatic 21): DartCliDebugAdapter.launchAndRespond has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart_cli_adapter.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbf502d6f6bdbced8311fd39d6091efce9120d53adf922b8634327cfa55b717c"}},{"ruleId":"D1","level":"warning","message":{"text":"ProtocolConverter.convertVmInstanceRefToDisplayString (cyclomatic 21): ProtocolConverter.convertVmInstanceRefToDisplayString has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c202ac3cc07e5e49a9b7c710c377665cc7603c0e5f07472e20dba333de44257"}},{"ruleId":"D1","level":"warning","message":{"text":"MiniJsParser.parsePrimary (cyclomatic 21): MiniJsParser.parsePrimary has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: MiniJsParser.categoryToString (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"c18e53c2c9fcff29766e3f5a7980f9f12f59f37a44b263a66e08af7976b4fe5b"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._emitCovarianceCheckStub (cyclomatic 21): ProgramCompiler._emitCovarianceCheckStub has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2693}}}],"partialFingerprints":{"codehealthFindingId/v1":"304184a9338ce48a9dee5af53423c4b0141707456634176ac19262d7683aaf7f"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._emitCovarianceCheckStub (cyclomatic 21): LibraryCompiler._emitCovarianceCheckStub has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3003}}}],"partialFingerprints":{"codehealthFindingId/v1":"f46ba8df19dda0f8bc1ba0c9e93b9fc3fc32e6981077e8510f3aebed01a4353a"}},{"ruleId":"D1","level":"warning","message":{"text":"DillExtensionBuilder.DillExtensionBuilder (cyclomatic 21): DillExtensionBuilder.DillExtensionBuilder has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_extension_builder.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"b74648348a96b1026b9691500d460fc90b95150f5c4403e40da57be5ece829e7"}},{"ruleId":"D1","level":"warning","message":{"text":"RegularFieldDeclaration.createFieldEncoding (cyclomatic 21): RegularFieldDeclaration.createFieldEncoding has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"dce84dbb007be8b75d9f221f740b8b9ec0cc5714900fab8e4f557f5a0e295cd0"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator._evaluateSubexpression (cyclomatic 21): ConstantEvaluator._evaluateSubexpression has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3110}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6b2b7a752a3e981fda9dc2925008f0725de9acb50ed9cd88de0af3947dc1eb"}},{"ruleId":"D1","level":"warning","message":{"text":"DynamicInterfaceSpecification.findNodes (cyclomatic 21): DynamicInterfaceSpecification.findNodes has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"73f7c4de9787dd9fb5fee0a3fed37319ebe40bd63e1ac222fefa1ad50f4f1be2"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceExtensionTypeDeclarationBuilder.build (cyclomatic 21): SourceExtensionTypeDeclarationBuilder.build has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: SourceExtensionTypeDeclarationBuilder.addMemberInternal (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac115d0ab9f2f5b9955e60479364aa1297dd2b801323670c89d00c01c6e2707"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorBase._finishFieldGetterInvocation (cyclomatic 21): InferenceVisitorBase._finishFieldGetterInvocation has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorBase._tearOffCall (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3282}}}],"partialFingerprints":{"codehealthFindingId/v1":"effbef836e9a71795394f3b034c8f3ab725b0fc70c0f150859c57a23baba32e7"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitCompilationUnit (cyclomatic 21): _Visitor.visitCompilationUnit has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unreachable_from_main.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"a30d261e345d7e4f0d366ed1456f3503bf6726d85c5e7258d289e200c373d580"}},{"ruleId":"D1","level":"warning","message":{"text":"LineNumberProgram._readOpcodes (cyclomatic 21): LineNumberProgram._readOpcodes has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: _AttributeForm.read (cyclomatic 31) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/dwarf.dart"},"region":{"startLine":1559}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5f2607859ec36ccd0832a09d9b8813769dcd4cf20532ca4e1c502922ada2996"}},{"ruleId":"D1","level":"warning","message":{"text":"InspectPage._visitObject (cyclomatic 21): InspectPage._visitObject has cyclomatic complexity 21 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/app/page.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"76c73776da2a267bf25a7103a705733e9404168645a159798b10551680959ede"}},{"ruleId":"D1","level":"warning","message":{"text":"Instruction.deserializeConst (cyclomatic 21): Instruction.deserializeConst has cyclomatic complexity 21 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/instruction.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee1e9e457fa40e44da8d4889a8188b274289dd6443513196ed278bb65d125e6"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeMemberContributor._computeSuggestions (cyclomatic 21): TypeMemberContributor._computeSuggestions has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6350e6d14ce6fd68fb68193cc8a7affaa69b48bd35d488edd1f229ed234a74f"}},{"ruleId":"D1","level":"warning","message":{"text":"DatabaseBuilder._merge_nodes (cyclomatic 21): DatabaseBuilder._merge_nodes has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4814abd47e611dcece4d3364dd9a2e2aa165692db19928b2fff525518217e1d"}},{"ruleId":"D1","level":"warning","message":{"text":"IDLFile.__init__ (cyclomatic 21): IDLFile.__init__ has cyclomatic complexity 21 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"0430950dffa8117c9cb043e773227f65f62ebd1a79c386ddc049f4d3b9632d01"}},{"ruleId":"D1","level":"warning","message":{"text":"graphexplorer.Graph.loadDartHeapSnapshot (cyclomatic 21): graphexplorer.Graph.loadDartHeapSnapshot has cyclomatic complexity 21 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"13889e8661c275ae51703e5e5ff1eecef3866b96ca070ef766101d54f290bba0"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantCreator._makeWasmArrayLiteral (cyclomatic 20): ConstantCreator._makeWasmArrayLiteral has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Constants._lowerTypeConstantImpl (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"468e9f953f5e0c04750c87b6320fa28e1042351cc70a847b2bb6f1eb14db55bc"}},{"ruleId":"D1","level":"warning","message":{"text":"DartDevelopmentServiceLauncher.start (cyclomatic 20): DartDevelopmentServiceLauncher.start has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/dds_launcher.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"03f453acf02a2c6ccd9ca4fb4ef630d86020441359675c5e873efbc092025147"}},{"ruleId":"D1","level":"warning","message":{"text":"Expect._deepEquals (cyclomatic 20): Expect._deepEquals 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":"pkg/expect/lib/expect.dart"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"a18db33cd5c945d0307a74491be101b624371453c5313782142b16b07b9fb9c1"}},{"ruleId":"D1","level":"warning","message":{"text":"Analysis.reverseTransitiveGraph (cyclomatic 20): Analysis.reverseTransitiveGraph 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":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d90e02d9e3400f78dc11ad1505d6baf680792372bd40f104f63a343fa73dc21"}},{"ruleId":"D1","level":"warning","message":{"text":"_Utils._addInstanceMirrors (cyclomatic 20): _Utils._addInstanceMirrors has cyclomatic complexity 20 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c1d3789388f3e4cea35b17cf6aaf60d001fde011eda8a6fecd231c6fff9a9d6"}},{"ruleId":"D1","level":"warning","message":{"text":"_HttpClient._findProxyFromEnvironment (cyclomatic 20): _HttpClient._findProxyFromEnvironment has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: _HttpResponse._findReasonPhrase (cyclomatic 42) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":3251}}}],"partialFingerprints":{"codehealthFindingId/v1":"afefff9314c9fe9fb916d2dd218133cc36c1022cc113a147a3ba08359b3ef93f"}},{"ruleId":"D1","level":"warning","message":{"text":"_HttpParser._headersEnd (cyclomatic 20): _HttpParser._headersEnd has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"99542f0d4b993c3b809e334c231e77a3b95dc15e7c9ec5d97a8489d2b1dc7b9c"}},{"ruleId":"D1","level":"warning","message":{"text":"_Utf8Decoder._decodeGeneral (cyclomatic 20): _Utf8Decoder._decodeGeneral 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":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2725}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4e18eaf996b4f24d76e39ac325a3ce4eca5f4c3b79792c9480dd8fef946f566"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeReferenceIdentifierContext.ensureIdentifier (cyclomatic 20): TypeReferenceIdentifierContext.ensureIdentifier has cyclomatic complexity 20 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":1511}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d482ee054c90f975ba46df9eae30d32e018f8987019b785719dfcb078c9a10"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseDeclarationHeaderRecoveryInternal (cyclomatic 20): Parser.parseDeclarationHeaderRecoveryInternal 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":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":3172}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f6fff8b0d2d573eb0370db4e688b0e970d2f0dd00c46c6b44b38a1169f7ea61"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser._attemptPrecedenceLevelRecovery (cyclomatic 20): Parser._attemptPrecedenceLevelRecovery has cyclomatic complexity 20 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7614}}}],"partialFingerprints":{"codehealthFindingId/v1":"c062cfe878bd19adef27305f6328055a06f24127a4f0e6a29b88ee59a5828287"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.looksLikeExpressionAfterAwaitOrYield (cyclomatic 20): Parser.looksLikeExpressionAfterAwaitOrYield 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":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10551}}}],"partialFingerprints":{"codehealthFindingId/v1":"e78f2df5e126349c9bb9bc06b86bb4a03e845f55a175cb944272ef0bf731b947"}},{"ruleId":"D1","level":"warning","message":{"text":"ComplexTypeInfo.parseType (cyclomatic 20): ComplexTypeInfo.parseType 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":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"14ab73d424c711a7d0bd1788a6f5193bd86f4441e8a22278aecde46fff3d4b4a"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._suggestProperty (cyclomatic 20): DeclarationHelper._suggestProperty 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":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2551}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe5a136d3178aa3a6588c120abd206c057a9c5f8b0678da816703d139095c68"}},{"ruleId":"D1","level":"warning","message":{"text":"AddConst.compute (cyclomatic 20): AddConst.compute 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":"pkg/analysis_server/lib/src/services/correction/dart/add_const.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"151c729d2b1a120477245f2454cf2c88d6838214430c602fed4efb633001afe8"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertIntoGetter.compute (cyclomatic 20): ConvertIntoGetter.compute 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":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"2feef65ef00d190bb75df592bcffd5ed2d0c0b598d361562168f7d6437488948"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToDeclaringParameter._getRefactorData (cyclomatic 20): ConvertToDeclaringParameter._getRefactorData 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":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_declaring_parameter.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"50498268d31dbc712872f0148112bc3c1be314ec0dae880242cbf2b7cf10d5ea"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToExpressionFunctionBody.compute (cyclomatic 20): ConvertToExpressionFunctionBody.compute has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_expression_function_body.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e116f8258f4fc11b4ac19e9b612c61229562e152771cd15c3b1d594ef0a5c47"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveDeadCode._handleDeadAtStartOfNode (cyclomatic 20): RemoveDeadCode._handleDeadAtStartOfNode 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":"pkg/analysis_server/lib/src/services/correction/dart/remove_dead_code.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"5345e4e823b28730290cdc208fb0410b3507045b191555c1ad8eb47fd3025a74"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveIfNullOperator.compute (cyclomatic 20): RemoveIfNullOperator.compute 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":"pkg/analysis_server/lib/src/services/correction/dart/remove_if_null_operator.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"b51b8986e6731feff3eb56fa8301ac98b44f53d9552dd4ebeb007e9e2d212270"}},{"ruleId":"D1","level":"warning","message":{"text":"_MatcherBuilder.buildMatchersForNode (cyclomatic 20): _MatcherBuilder.buildMatchersForNode has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"372268ec4fc8df9c274699e56b39c9ae0c404c38437d0a806dd8f9adf9a1de9c"}},{"ruleId":"D1","level":"warning","message":{"text":"ExtractWidgetRefactoringImpl._initializeParameters (cyclomatic 20): ExtractWidgetRefactoringImpl._initializeParameters 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"81054883b8119a16857aaeba8351a01f8677fbe170c76b2b24207a7bcf308e11"}},{"ruleId":"D1","level":"warning","message":{"text":"MoveTopLevelToFile.compute (cyclomatic 20): MoveTopLevelToFile.compute 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":"pkg/analysis_server/lib/src/services/refactoring/move_top_level_to_file.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"3248810cf46e128a4af8a6d34a89aa802f3e2eabb0f65a31b4b296cd8a7d73e7"}},{"ruleId":"D1","level":"warning","message":{"text":"FixProcessor._addFromProducers (cyclomatic 20): FixProcessor._addFromProducers 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":"pkg/analysis_server_plugin/lib/src/correction/fix_processor.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ecdca596c253d1b6cfca9a8aa8b16648cbbff7b8a8c364d73975e0a20402b12"}},{"ruleId":"D1","level":"warning","message":{"text":"_ElementMapperV2._visitIdentifier (cyclomatic 20): _ElementMapperV2._visitIdentifier 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":"pkg/analyzer/lib/src/dart/ast/element_locator.dart"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7d66c44faa458fa87744cfaa8000bb4fb07facbe83b90066e49ac5b623386ae"}},{"ruleId":"D1","level":"warning","message":{"text":"AssignmentExpressionResolver.resolveIfNull (cyclomatic 20): AssignmentExpressionResolver.resolveIfNull 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":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e6051a1d616bbd41a6616d0b15b67c2a515f4527fd5c1d030e5319f499861d2"}},{"ruleId":"D1","level":"warning","message":{"text":"BinaryExpressionResolver._resolveEqual (cyclomatic 20): BinaryExpressionResolver._resolveEqual has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"1890760688bba495920b879afcdeae13cdeb4bd8c95fb96811484fc389df6f06"}},{"ruleId":"D1","level":"warning","message":{"text":"ExtensionMemberResolver._isValidContext (cyclomatic 20): ExtensionMemberResolver._isValidContext has cyclomatic complexity 20 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91b4970c37e61b5bb128d7240a15ece55ee0139e6505d5489074d25323d6584"}},{"ruleId":"D1","level":"warning","message":{"text":"_ErrorHelper.reportNullOrNonTypeElement (cyclomatic 20): _ErrorHelper.reportNullOrNonTypeElement has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0de4f61a87b779c492e237ec55f1ec8bfb9a1b6ef2b4b39c86345c0c21a228b"}},{"ruleId":"D1","level":"warning","message":{"text":"SimpleIdentifierResolver._resolve2 (cyclomatic 20): SimpleIdentifierResolver._resolve2 has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"108f1bf936d22b09a8104bde23a428b8d23445abb317791cb71f3bfc1cfe00e8"}},{"ruleId":"D1","level":"warning","message":{"text":"NullSafetyDeadCodeVerifier._verifyUnassignedSimpleIdentifier (cyclomatic 20): NullSafetyDeadCodeVerifier._verifyUnassignedSimpleIdentifier has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/dead_code_verifier.dart"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b947ddd05699ae9da4f8e14c70aac5bbed7aae9ce86ccca17034e3515cc1703"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForMixinClassErrorCodes (cyclomatic 20): ErrorVerifier._checkForMixinClassErrorCodes 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":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":6566}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c42c8980aa79f50273fb3fb082cdde3e04aac9fc7668e6ad45263b3aaae3d22"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForMixinWithConflictingPrivateMember (cyclomatic 20): ErrorVerifier._checkForMixinWithConflictingPrivateMember 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":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":6801}}}],"partialFingerprints":{"codehealthFindingId/v1":"c123ada24e6a5961e3d7fa28bb11b3a8e38b2100c36e48d4abed2da337000d18"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier._validateFieldsInCompound (cyclomatic 20): FfiVerifier._validateFieldsInCompound 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":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1815}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3248d6950d144714b31190ea4c6388efb1ef70573e5eb72795e55c4ac192259"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier._validateSizeOfAnnotation (cyclomatic 20): FfiVerifier._validateSizeOfAnnotation 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":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":2425}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e32ac17cab43294a9a1c22cf93dab050ae86cdde2ff8a5c7cc842a371d7fb36"}},{"ruleId":"D1","level":"warning","message":{"text":"SuperContext.of (cyclomatic 20): SuperContext.of 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":"pkg/analyzer/lib/src/generated/super_context.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c3fa6192298a859fed755a3b2e457696e952aad20e5b5c52908357ca4549c29"}},{"ruleId":"D1","level":"warning","message":{"text":"ElementBuilder._buildInstanceElementMembers (cyclomatic 20): ElementBuilder._buildInstanceElementMembers has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1cb4a8f9905de253139eeafeb86f9f0af90ac4b862ebfbcc5013799be479502"}},{"ruleId":"D1","level":"warning","message":{"text":"DartEditBuilderImpl.writeOverride (cyclomatic 20): DartEditBuilderImpl.writeOverride 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":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"79d00a1233fae32a065892ed88c0dcc28940398e1dd025df73c76712b7def2a1"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisOptionLinkComputer.findLinks (cyclomatic 20): AnalysisOptionLinkComputer.findLinks has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/navigation/document_links.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"217b66c73ad24f7ea2709545a88b4b10fd2986eafb482f91b51c2bb6b42b3980"}},{"ruleId":"D1","level":"warning","message":{"text":"_Builder.build (cyclomatic 20): _Builder.build 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":"pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d5ef137ca9400a370e6df6b89a22c2e6937e6ed69606af89fddcabd3023f3f6"}},{"ruleId":"D1","level":"warning","message":{"text":"CodegenEnqueuer.processTypeUse (cyclomatic 20): CodegenEnqueuer.processTypeUse has cyclomatic complexity 20 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: CodegenEnqueuer.processStaticUse (cyclomatic 22) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"8acca75f290fe24352e3344d50f66bfa422238d09160a9daf03cc875d45a35d9"}},{"ruleId":"D1","level":"warning","message":{"text":"JsKernelToElementMap.readFromDataSource (cyclomatic 20): JsKernelToElementMap.readFromDataSource has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"203c5ca990f46a73ed8ca0db1b9a103eccdc3b8212e0791e13834e6e557d017f"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaCodeGenerator.visitInvokeExternal (cyclomatic 20): SsaCodeGenerator.visitInvokeExternal 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":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2901}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e5288a94b3152f20ae2b2204db8c42156ec7ca12c6311786b3f0a35468a8ed3"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaLoadElimination.visitBasicBlock (cyclomatic 20): SsaLoadElimination.visitBasicBlock 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":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4439}}}],"partialFingerprints":{"codehealthFindingId/v1":"da77e2f08c2e386a8892a30b954e44c53f992e0f5d8aa3499a9f7e1e9e1fe239"}},{"ruleId":"D1","level":"warning","message":{"text":"CodegenWorldBuilder._getMemberUsage (cyclomatic 20): CodegenWorldBuilder._getMemberUsage has cyclomatic complexity 20 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: CodegenWorldBuilder.registerStaticUse (cyclomatic 24) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c9b73e147a1fc56d8a19f628cfd4f3f98cac090504d713f64fc00c8dac7892f"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolutionWorldBuilder._processMemberInUsedClass (cyclomatic 20): ResolutionWorldBuilder._processMemberInUsedClass 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":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe090e612f2992fe972cc25444182112b224c3c50f811029bd353e724803ed94"}},{"ruleId":"D1","level":"warning","message":{"text":"MigrateCommand.run (cyclomatic 20): MigrateCommand.run 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":"pkg/dartdev/lib/src/commands/migrate.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3a0e68b756b460f2f492c63fa64b446758b958cffe46335c7b60690980978bb"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._emitImports (cyclomatic 20): ProgramCompiler._emitImports 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8916}}}],"partialFingerprints":{"codehealthFindingId/v1":"49720a9a589a038339ebac8230a433ccccab11e91e73b609550b841ce678d91b"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._emitClassDeclaration (cyclomatic 20): LibraryCompiler._emitClassDeclaration 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":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1463}}}],"partialFingerprints":{"codehealthFindingId/v1":"7365bae875a62dd178e4cad22607b5030bb58bd4f328f616f1e028093c0b6bdc"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._emitLibraryMembers (cyclomatic 20): LibraryCompiler._emitLibraryMembers 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":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4054}}}],"partialFingerprints":{"codehealthFindingId/v1":"c13dffb8bedfc967208b2b6853f507f97e9cd0c420e09835799c1ac388f6c61c"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementalCompiler.updateNeededDillLibrariesWithHierarchy (cyclomatic 20): IncrementalCompiler.updateNeededDillLibrariesWithHierarchy 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":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1605}}}],"partialFingerprints":{"codehealthFindingId/v1":"4baaf73c095fef3ee5c9f27035b8df23c163a8742bea92f47d2e54f6eac8fbbf"}},{"ruleId":"D1","level":"warning","message":{"text":"FactoryEncoding.inferRedirectionTarget (cyclomatic 20): FactoryEncoding.inferRedirectionTarget 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":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe0bb238384378adc9564a075ada60fd375bde0c78dc6066140e2b85ca5e52ba"}},{"ruleId":"D1","level":"warning","message":{"text":"FactoryEncoding.resolveRedirectingFactory (cyclomatic 20): FactoryEncoding.resolveRedirectingFactory 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":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"63897fae58959fc0ee20593bb4841154f42ed7f77d658d4e5e022662e668dfb9"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl.endFormalParameters (cyclomatic 20): BodyBuilderImpl.endFormalParameters 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":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3944}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0111e9100394969aed14ecc8c3c0adbf31cf4d392f1660cc03f1203527ffd91"}},{"ruleId":"D1","level":"warning","message":{"text":"_InitializerBuilder.processInitializers (cyclomatic 20): _InitializerBuilder.processInitializers 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":"pkg/front_end/lib/src/kernel/resolver_helpers.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"02693cf66ad1ab96169e161654052a15dea21493397f137f0c472230af7ee82a"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceClassBuilder.checkMethodOverride (cyclomatic 20): SourceClassBuilder.checkMethodOverride 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":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1890}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a370ca12e088a588d778b4c7348a06ecc39b1661c09bdcc7f50af4667797e9"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceLoader._createSourceCompilationUnit (cyclomatic 20): SourceLoader._createSourceCompilationUnit 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":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a4cda47e2e11801e13282a7ae127bc974ae1e43b586f85bc39bf1e2f7b8865b"}},{"ruleId":"D1","level":"warning","message":{"text":"FrontendServerClient.start (cyclomatic 20): FrontendServerClient.start has cyclomatic complexity 20 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server_client/lib/src/frontend_server_client.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbee464d266170a3a9211adcae3c7aa74316cdc97e4eda2c02a21bda44237929"}},{"ruleId":"D1","level":"warning","message":{"text":"FrontendServerClient.compile (cyclomatic 20): FrontendServerClient.compile 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":"pkg/frontend_server_client/lib/src/frontend_server_client.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f1be6892dc4995cd1d5d8c9e3bbf2e576da1b73b82fbb2c716a5d83480b574"}},{"ruleId":"D1","level":"warning","message":{"text":"MiniJsParser.getString (cyclomatic 20): MiniJsParser.getString 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":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a15641564a56817c146fd7bde2247b4cd13fc4bec70ea1ec432518263c0e5a0"}},{"ruleId":"D1","level":"warning","message":{"text":"DartTypeEquivalence.visitFunctionType (cyclomatic 20): DartTypeEquivalence.visitFunctionType 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":"pkg/kernel/lib/src/dart_type_equivalence.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"3af5741ebf5f52b764abe5bdffebf878fae6c94b4ee20d1654a1bf518b4c7295"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._checkTopLevelFragment (cyclomatic 20): _Visitor._checkTopLevelFragment has cyclomatic complexity 20 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_public_api.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ceb16b85827fd247221bc11b4f3670dc88912f06fec57b546c52a3c0a70aac4"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitSwitchCase (cyclomatic 20): _Visitor.visitSwitchCase 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":"pkg/linter/lib/src/rules/invalid_case_patterns.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd214aa268da917cc092e1fc05fef21a5d03b7cb1219ec0fb00234dabbfb4e3c"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitInstanceCreationExpression (cyclomatic 20): _Visitor.visitInstanceCreationExpression 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":"pkg/linter/lib/src/rules/prefer_collection_literals.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c2621c40b912e637404046e438752ed5cdf43c4c404b83ace817eee35f987e"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._visitVariableDeclarationList (cyclomatic 20): _Visitor._visitVariableDeclarationList 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":"pkg/linter/lib/src/rules/specify_nonobvious_property_types.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe4063a305cd0a676be989394762e43633526d440a53fb0b0f9a404475a39ed"}},{"ruleId":"D1","level":"warning","message":{"text":"_LineNumberContentType.validate (cyclomatic 20): _LineNumberContentType.validate has cyclomatic complexity 20 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions. This is NOT this file\u0027s highest cyclomatic complexity: _AttributeForm.read (cyclomatic 31) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/dwarf.dart"},"region":{"startLine":1070}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e35740356167a537f40e84af8aa7463dda810ca74179b358605d8a3ee027e13"}},{"ruleId":"D1","level":"warning","message":{"text":"TreeMap._createTreemapTile (cyclomatic 20): TreeMap._createTreemapTile 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":"pkg/observatory/lib/src/elements/tree_map.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"02acd69c65fd04a7d6cd96b3d8d8a9d2342c3eb3742fba8511d50daf9d19261e"}},{"ruleId":"D1","level":"warning","message":{"text":"NameSection.deserialize (cyclomatic 20): NameSection.deserialize has cyclomatic complexity 20 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"9febcf675e49ffe46cbddd3fd04f16cb95e1f9c12e5ef4c838dfde3d37343f9c"}},{"ruleId":"D1","level":"warning","message":{"text":"WidgetCreatorTracker._resolveWellKnownClasses (cyclomatic 20): WidgetCreatorTracker._resolveWellKnownClasses 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":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d846f5600c9d5324883e88ba2dd3be20e5b1d819506e48ee449b29771ec311b"}},{"ruleId":"D1","level":"warning","message":{"text":"Summary.apply (cyclomatic 20): Summary.apply 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":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":1066}}}],"partialFingerprints":{"codehealthFindingId/v1":"896f727119f33a29f31eb8a570e09ebf5b45c0b70d13a6cc7e7a1ed015d28755"}},{"ruleId":"D1","level":"warning","message":{"text":"_TreeShakerPass2.defaultMember (cyclomatic 20): _TreeShakerPass2.defaultMember 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":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2321}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6cf0f204a76afb6ab539bf5f6231754396c1f86608ccef740cb14b9a3cb8a90"}},{"ruleId":"D1","level":"warning","message":{"text":"graphexplorer.createTreemapTile (cyclomatic 20): graphexplorer.createTreemapTile has cyclomatic complexity 20 (threshold 15). Of this number, 17 points are the body\u0027s own statements and 3 belong to 2 function literals inside it that branch. To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1279}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9fd4874e5de7197219b6c3a0bb0d2a36f2cdf6d1ec6177a84e5833295565dba"}},{"ruleId":"D1","level":"warning","message":{"text":"_ImplGenerator.generate (cyclomatic 19): _ImplGenerator.generate has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":960}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b92baa46a6f2d737744df9b0f703e85257f2cdb7fd83264884acb8814a685c5"}},{"ruleId":"D1","level":"warning","message":{"text":"GraphIsomorphizer.generateRootImport (cyclomatic 19): GraphIsomorphizer.generateRootImport has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/graph_isomorphizer.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"029ab207209e382aedade1e1691685d110ecc68ff8ea5af8ad2e2ac272a8b400"}},{"ruleId":"D1","level":"warning","message":{"text":"Component.write (cyclomatic 19): Component.write has cyclomatic complexity 19 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"36f7be2132b1626356332e314697ffe1354a30da625c712ab508b7cbe697c9ce"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstObjectHandle.== (cyclomatic 19): _ConstObjectHandle.== has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: ObjectHandle._empty (cyclomatic 24) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/object_table.dart"},"region":{"startLine":1497}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd04d58b889415d535b4c87def2e9c4b90df37518bf98a94f39e161eed5b3e0"}},{"ruleId":"D1","level":"warning","message":{"text":"AstCodeGenerator._setupLocalParameters (cyclomatic 19): AstCodeGenerator._setupLocalParameters has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8d4f6acf6ee89baf21ee3a70f966add041510fcf8bf378ad9d6706d9a3fe45"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstructorInitializerCodeGenerator.generateInitializerList (cyclomatic 19): ConstructorInitializerCodeGenerator.generateInitializerList has cyclomatic complexity 19 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":4353}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4b32991cdcd37cbdda8e8649a59e5fa86dfb03ae2a9692c08f7892eac9e01c"}},{"ruleId":"D1","level":"warning","message":{"text":"FunctionCollector.getFunction (cyclomatic 19): FunctionCollector.getFunction has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/functions.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"f25a4c6c5ae089ba3fe7db8fcac5e37e9a22e8e94e433adc03eb5fe7029377ad"}},{"ruleId":"D1","level":"warning","message":{"text":"Types.isTypeConstant (cyclomatic 19): Types.isTypeConstant has cyclomatic complexity 19 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dd4aab975699f951d822fd9d46f756db4030dfa08d154975bb14fb456ea229a"}},{"ruleId":"D1","level":"warning","message":{"text":"C.m (cyclomatic 19): C.m has cyclomatic complexity 19 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/for_in_without_declaration.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"3331d8b9718b85fa53ce8854e7da55ae6a2e973f582627f92b8c5f2d19bfee49"}},{"ruleId":"D1","level":"warning","message":{"text":"Analysis.transitiveGraph (cyclomatic 19): Analysis.transitiveGraph has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"14f659e0d7d252e451ce2f5656186a9f1d9c2d63cb95ae2a4a93969a3978d2cb"}},{"ruleId":"D1","level":"warning","message":{"text":"_StringBase.createFromCharCodes (cyclomatic 19): _StringBase.createFromCharCodes has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"f333a5a95602ef119bf416dc5866f3f3842becd7564b11afdba17241d97d4865"}},{"ruleId":"D1","level":"warning","message":{"text":"_BigIntImpl._divRem (cyclomatic 19): _BigIntImpl._divRem has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":1477}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc384e6a039ea25b17ec1db46cb888fa77abda6da37f1e33f61721ddf3705bbf"}},{"ruleId":"D1","level":"warning","message":{"text":"_TypeUniverse.isFunctionSubtype (cyclomatic 19): _TypeUniverse.isFunctionSubtype has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":1212}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d0f179ff32ab4a83addb69b2ce1aff48384abc3c2392d6453d3fd0151193afa"}},{"ruleId":"D1","level":"warning","message":{"text":"MultiBinaryLoader.load (cyclomatic 19): MultiBinaryLoader.load has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/multi_binary_loader.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"1df4d2c64329904e944ceb063e4eb8ecbe5c6bfca6e4c003d1a3c42a4dcab844"}},{"ruleId":"D1","level":"warning","message":{"text":"Object.hash (cyclomatic 19): Object.hash has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/object.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19831ddc094cf4877824e53e810c4ad74030953c3867e2890d292e5f529d2f2"}},{"ruleId":"D1","level":"warning","message":{"text":"_Uri._makeHttpUri (cyclomatic 19): _Uri._makeHttpUri has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2053}}}],"partialFingerprints":{"codehealthFindingId/v1":"09fedee67f7bc30dc7e908bb2c69cccb8858a1cb0e3c21bcd2903a1d5ce2017f"}},{"ruleId":"D1","level":"warning","message":{"text":"_Uri.replace (cyclomatic 19): _Uri.replace has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2282}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4f653b2ccdd62f9794c088bf10e04ddddc876bc59585f4a167c9761e027721"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantFolding.binaryIntOp (cyclomatic 19): ConstantFolding.binaryIntOp has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/constant_value.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc9fbab4c3540ceeaf2590df6fa0853aaf7a8f65aa8a39bcaf06ff8082345596"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantFolding.unaryDoubleOp (cyclomatic 19): ConstantFolding.unaryDoubleOp has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/constant_value.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f240b329784dce3c68a1849a89ae63347db940df6255e9584d52aef006cc87c"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseImportRecovery (cyclomatic 19): Parser.parseImportRecovery has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":994}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cdb7042dadf3f557aa282b90250d0f41d7eea887365375dd8d656a1c9b5b1ec"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseRecordType (cyclomatic 19): Parser.parseRecordType has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"06d59903b19a12bcb6dcc0768f760b779b937db4ac07bdaa900f0319621bb47a"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseParenthesizedExpressionOrRecordLiteral (cyclomatic 19): Parser.parseParenthesizedExpressionOrRecordLiteral has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8293}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f33427279f458cbfa62b2f201f14736f6fbe5f897690c18ccbd1f13caa139e"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseLiteralSetOrMapSuffix (cyclomatic 19): Parser.parseLiteralSetOrMapSuffix has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8555}}}],"partialFingerprints":{"codehealthFindingId/v1":"1840de7513b0cf8ac5b9b8b2521700f74d413e35c4e7534e7939e5aa5da3b2e7"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseConstExpression (cyclomatic 19): Parser.parseConstExpression has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9015}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0364549ad3ac7b0f4768fee671d584dab52caefa4085a2bb585670d0c6578aa"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseSend (cyclomatic 19): Parser.parseSend has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9337}}}],"partialFingerprints":{"codehealthFindingId/v1":"67bb1e7369a74e61930615b666c1313b20894ebcebe6703bd7cf7df242e2c08e"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.computeTypeAfterIsOrAs (cyclomatic 19): Parser.computeTypeAfterIsOrAs has cyclomatic complexity 19 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9647}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba1ede593df7021528ad2d5fe5f3c2e48953e0a32d7c56e5abf708c7c1c5e682"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseTryStatement (cyclomatic 19): Parser.parseTryStatement has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10709}}}],"partialFingerprints":{"codehealthFindingId/v1":"b55f578aaf1e3d5e2ef5371a1c4a329bcc974c248c844c031f3aeb9b17be3b05"}},{"ruleId":"D1","level":"warning","message":{"text":"JsUtilOptimizer._getPrefixSelectorsForStaticallyResolvableMember (cyclomatic 19): JsUtilOptimizer._getPrefixSelectorsForStaticallyResolvableMember has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"a924ddd398188765e2602e262d8510056ae334ec751f12dc06a57fe241875d9a"}},{"ruleId":"D1","level":"warning","message":{"text":"_DartUnitHighlightsComputerVisitor._findEscapes (cyclomatic 19): _DartUnitHighlightsComputerVisitor._findEscapes has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":2088}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09f88f10127961c01087b55201fb540bebd7d6c35d30e9a0ca602edf8920c34"}},{"ruleId":"D1","level":"warning","message":{"text":"DartCodeActionsProducer.getRefactorActions (cyclomatic 19): DartCodeActionsProducer.getRefactorActions has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/dart.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db87198a3e2f356ba0610309870a7b84ae439082787c4effb249c1a986185cb"}},{"ruleId":"D1","level":"warning","message":{"text":"EditArgumentHandler._writeNewArgument (cyclomatic 19): EditArgumentHandler._writeNewArgument has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_edit_argument.dart"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"b06695759e5088c84ffc1f963348cfa07ce4ad01ea226968bccc74482e02f4a5"}},{"ruleId":"D1","level":"warning","message":{"text":"SummaryWriter.summarize (cyclomatic 19): SummaryWriter.summarize has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"c063df060c1fee93954691fafb7df89cde33f21a09fa52814906caaaaa653ba4"}},{"ruleId":"D1","level":"warning","message":{"text":"PluginWatcher._addPlugins (cyclomatic 19): PluginWatcher._addPlugins has cyclomatic complexity 19 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_watcher.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"0471d7ea53be6e980bceefb96a1d838729be6f62e7a42effecd80c8f99d8150e"}},{"ruleId":"D1","level":"warning","message":{"text":"DevAnalysisServer.processDirectories (cyclomatic 19): DevAnalysisServer.processDirectories has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/dev_server.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3cec46e542829210464a6a26363057d267d2e8eb4b58a71b91dc791a23fa0a7"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper.addLexicalDeclarations (cyclomatic 19): DeclarationHelper.addLexicalDeclarations has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5556913cc65c0ffa53765fa3d28cd293a33515fd30b7d654651b42efc27b5d6"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._addInheritedMembers (cyclomatic 19): DeclarationHelper._addInheritedMembers has cyclomatic complexity 19 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"932047bfe86704d59d06f4dfa9bdd2f7722cfcbab698b595802b0ebedc7d1887"}},{"ruleId":"D1","level":"warning","message":{"text":"KeywordHelper.addFieldDeclarationKeywords (cyclomatic 19): KeywordHelper.addFieldDeclarationKeywords has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"b16a0fdec4941328ec67ba87f26ef9ac65b7a7bfe898ce240068343f3d5d7505"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementCompletionProcessor._complete_tryStatement (cyclomatic 19): StatementCompletionProcessor._complete_tryStatement has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ac85d65bdea61a55e5b462248ba8bf7c506cfccadbffafeae6c4e5647453cf"}},{"ruleId":"D1","level":"warning","message":{"text":"AddAwait.compute (cyclomatic 19): AddAwait.compute has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_await.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"354cc9346fb6cb7ace7b67f69c2a2cb9f2b86ae90c2c63b52f7537ff3ffc0739"}},{"ruleId":"D1","level":"warning","message":{"text":"AddKeyToConstructors._updateSuper (cyclomatic 19): AddKeyToConstructors._updateSuper has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"b607e7ad99a943e6c38c75cfedf7e952944eca405f59f7d03cd5669eb777714a"}},{"ruleId":"D1","level":"warning","message":{"text":"AddMissingEnumCaseClauses.compute (cyclomatic 19): AddMissingEnumCaseClauses.compute has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"3626cc55ea5f249edeafbcb6d1ac97f66f20c68d738d6c20fc897f361be8c856"}},{"ruleId":"D1","level":"warning","message":{"text":"AddNullCheck._computeTargetAndNullAwareToken (cyclomatic 19): AddNullCheck._computeTargetAndNullAwareToken has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_null_check.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19351645bcee2b154b771ae85f949b19d18d05bc6ba3d9eb70321a846fed678"}},{"ruleId":"D1","level":"warning","message":{"text":"_EnumDescription._removeUnnamedConstructor (cyclomatic 19): _EnumDescription._removeUnnamedConstructor has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b98c9ebaadd5a87ed66f721221f2e4fccd60afea86d11eb51bc136df9d144e"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertForEachToForLoop.compute (cyclomatic 19): ConvertForEachToForLoop.compute has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_for_each_to_for_loop.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f37111e1eded28ab991431ffdca879cc64d58c7a899520a39630434912e54aa"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToWildcardVariable.compute (cyclomatic 19): ConvertToWildcardVariable.compute has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_wildcard_variable.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b58b7ead0b41e9f204a6b247d5fc0eca343a537a0cd92dfc008d3d312fe1af"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateExtensionSetter.compute (cyclomatic 19): CreateExtensionSetter.compute has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e3d892917006825328b6506c8d1ae5bb702f35cc46a9f99a785493bd66e5ab1"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateMethod._createMethodFromMethodInvocation (cyclomatic 19): CreateMethod._createMethodFromMethodInvocation has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_method.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"8da377fdee0bd76d81710116e33777109cc0e8630fea19dba1473aafeebdfea1"}},{"ruleId":"D1","level":"warning","message":{"text":"_CreateMixin.compute (cyclomatic 19): _CreateMixin.compute has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac72eeafae8eee7a11c9493531152db6d463b7a837f58d9f39f115b4f3a41799"}},{"ruleId":"D1","level":"warning","message":{"text":"PubspecFixGenerator.computeFixes (cyclomatic 19): PubspecFixGenerator.computeFixes has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"07469d0b7c6c15cf84cd57140e3ac5dd18fea4640aa7d22b65a5a2e53b3bf40b"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisDriver._analyzeFileImpl (cyclomatic 19): AnalysisDriver._analyzeFileImpl has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":1340}}}],"partialFingerprints":{"codehealthFindingId/v1":"3028c02f2a834e1fc5c399c137a619343be5a2472927909adcd1932d296598a3"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisDriver._produceErrors (cyclomatic 19): AnalysisDriver._produceErrors has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":2132}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cbc7e29746f58d0216743e1064a216962f72e10d9192562cf5678af84571b4d"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstLiteralVerifier._validateMapLiteralEntry (cyclomatic 19): _ConstLiteralVerifier._validateMapLiteralEntry has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"b12558cd415b8b6bf8ae8b7601480babb29456501683a93f2d240a132944d803"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluationEngine.computeConstantValue (cyclomatic 19): ConstantEvaluationEngine.computeConstantValue has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc631daca74ad766125ddba12d7b064e8d17206e6929e2cea90a2efa60c9c230"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstructorInvocationEvaluator.evaluate (cyclomatic 19): _ConstructorInvocationEvaluator.evaluate has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3684}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab46605ddc571264a57d71a87c39312a895d129145058b27785b498c2f3d274"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeSystemImpl.isMoreBottom (cyclomatic 19): TypeSystemImpl.isMoreBottom has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1039}}}],"partialFingerprints":{"codehealthFindingId/v1":"22223d46bec46b75065e28adb5779be858390f25ea867687855af3a77c7f283e"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeSystemImpl.isMoreTop (cyclomatic 19): TypeSystemImpl.isMoreTop has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f370cdae68ec89013f07972ff47a0ee934a8b07c956fb37f462fdc8550deceb"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeSystemImpl._refineNumericInvocationContextNullSafe (cyclomatic 19): TypeSystemImpl._refineNumericInvocationContextNullSafe has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1953}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7e77276e59ef7a1afe955b417918253537b5e3ea7a33710e9c1a5827ca70d79"}},{"ruleId":"D1","level":"warning","message":{"text":"AstRewriter._prepareReceiverInvocation (cyclomatic 19): AstRewriter._prepareReceiverInvocation has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"2167084aa6417b46601de992e05e25fbaf453f0c5a54880d2f2a76c711a2b305"}},{"ruleId":"D1","level":"warning","message":{"text":"PrefixedIdentifierResolver.resolve (cyclomatic 19): PrefixedIdentifierResolver.resolve has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a32306715f1f9f62c546344f7208e12150403d5ce774550b029646b9c7acff"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyElementResolver._resolveUnqualifiedNameRead (cyclomatic 19): PropertyElementResolver._resolveUnqualifiedNameRead has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":2552}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d4fc64bdecb95d026b57c829b0abcec67fc08f743d4919118d625eb8e6afbd"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolutionVisitor._resolveType (cyclomatic 19): ResolutionVisitor._resolveType has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":1251}}}],"partialFingerprints":{"codehealthFindingId/v1":"101975e81c06312a2825f887348415daa4f57c717789e27381f3a239f68093d0"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotationVerifier._checkVisibility (cyclomatic 19): AnnotationVerifier._checkVisibility has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cfe7c68fa4980a4ce1eee022397ac081c34c3d4ef29acd0599d9f26fe199032"}},{"ruleId":"D1","level":"warning","message":{"text":"BestPracticesVerifier._checkForUnnecessaryNoSuchMethod (cyclomatic 19): BestPracticesVerifier._checkForUnnecessaryNoSuchMethod has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":1456}}}],"partialFingerprints":{"codehealthFindingId/v1":"7805b842a651834103033cdadd635d919e40e0cd703fd5348ebd545b19d4ac19"}},{"ruleId":"D1","level":"warning","message":{"text":"ElementUsageDetectorV2.checkUsage (cyclomatic 19): ElementUsageDetectorV2.checkUsage has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"5afe33150192c82c17f90aad004bef0b578a78750965db65f321afbabeb1b47d"}},{"ruleId":"D1","level":"warning","message":{"text":"IgnoreValidator.reportErrors (cyclomatic 19): IgnoreValidator.reportErrors has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/ignore_validator.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"81c6abf52e2f9e6005bbfc6b73e25faa910f36bd7a3cd26c9772f5bac3ff112c"}},{"ruleId":"D1","level":"warning","message":{"text":"LiteralElementVerifier._verifyElement (cyclomatic 19): LiteralElementVerifier._verifyElement has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/literal_element_verifier.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4ad5a5913e6d756291a63014f8327c452c595596246b648d1209f3e2bfb2d0"}},{"ruleId":"D1","level":"warning","message":{"text":"AstBuilder.buildInitializer (cyclomatic 19): AstBuilder.buildInitializer has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"34245226db11755d7bcb3bf67407b42d2c96e622618908770f06e91a63cf5dbc"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolverVisitor.checkForBodyMayCompleteNormally (cyclomatic 19): ResolverVisitor.checkForBodyMayCompleteNormally has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c2764d7d28615ccfe6b2591a3f1fcf0b3d5286b8134315c782fa7e86c55123e"}},{"ruleId":"D1","level":"warning","message":{"text":"FuzzyMatcher.fuzzyMap (cyclomatic 19): FuzzyMatcher.fuzzyMap has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/utilities/fuzzy_matcher.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd90290deef9f7596df6bc7d7992c0e68127a246e089e93aa8f7bbcec8fa7f35"}},{"ruleId":"D1","level":"warning","message":{"text":"DartFileEditBuilderImpl._insertDocImportIntoBlockDocComment (cyclomatic 19): DartFileEditBuilderImpl._insertDocImportIntoBlockDocComment has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":3094}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf8e1d08395a8ce35e6a8b1b4683da7071c0dcf01e6e37dedc0e8aa64b6e1432"}},{"ruleId":"D1","level":"warning","message":{"text":"DeferredLoadTask.dump (cyclomatic 19): DeferredLoadTask.dump has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/deferred_load.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"c67ad39b8a67a31a6c1ee667af3ffc3fbbf0e3bffd1addeb9b880e292594a875"}},{"ruleId":"D1","level":"warning","message":{"text":"InferrerEngine.analyze (cyclomatic 19): InferrerEngine.analyze has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0f8352b0b85fe06d6cc1341093b1702d99aeff0ac84f5c96d9bf2548c60bc63"}},{"ruleId":"D1","level":"warning","message":{"text":"DynamicCallSiteTypeInformation.computeType (cyclomatic 19): DynamicCallSiteTypeInformation.computeType has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":1431}}}],"partialFingerprints":{"codehealthFindingId/v1":"79fa989fdcde72fe652b3e5a2361072e7a9fe878a7c77bc142380d436ed87202"}},{"ruleId":"D1","level":"warning","message":{"text":"CommonMasks._createFromStaticType (cyclomatic 19): CommonMasks._createFromStaticType has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d7f9e313b2dc2ec5e7190895bcf0323d0e808d6da5060075dd9adb7f567a41"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramBuilder._buildMethod (cyclomatic 19): ProgramBuilder._buildMethod has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":965}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed77b813161e5c10056a21da1713c84f8047f62e60b5b01837b476c04f7b6483"}},{"ruleId":"D1","level":"warning","message":{"text":"NativeBehavior.processEffects (cyclomatic 19): NativeBehavior.processEffects has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8296bc8cbf7012cc5dd92cf8c22fd323fbc8f684aab0dc1df58e8dcfb0ab84a"}},{"ruleId":"D1","level":"warning","message":{"text":"CompilerOptions.deriveOptions (cyclomatic 19): CompilerOptions.deriveOptions has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":1077}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb6d3b53db78847fc6da43c211b29652ab871f900e665a9ba20abd100bb4d6cf"}},{"ruleId":"D1","level":"warning","message":{"text":"DominatedUses._compute (cyclomatic 19): DominatedUses._compute has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1655}}}],"partialFingerprints":{"codehealthFindingId/v1":"95a7d16f35b04534da758a9b16a111537f757ee34c1163533805cef1eb7ca76b"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSimplifier.visitParameterValue (cyclomatic 19): SsaInstructionSimplifier.visitParameterValue has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"772a2aef651a369dd58127bf8512f5b1618025cd903a13d6e288e27dbbf5bdf5"}},{"ruleId":"D1","level":"warning","message":{"text":"CompileNativeCommand.run (cyclomatic 19): CompileNativeCommand.run has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c673c51b022ab88df4866976db0e7a90af7828a465e6446786762f49e19cc6d"}},{"ruleId":"D1","level":"warning","message":{"text":"Debugger._pauseHandler (cyclomatic 19): Debugger._pauseHandler has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3d49432146511bc7d2a35bdbdd8a8943dded56762f6e54bd55de3855c35c462"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementalCompiler.computeDelta (cyclomatic 19): IncrementalCompiler.computeDelta has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"57c830860b2b2f415a212939cd266c5911ed7602f1757a4291ec081f7008473c"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementalCompiler.compileExpression (cyclomatic 19): IncrementalCompiler.compileExpression has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2002}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d96680bc6cb44d246f823fd178d8287b12fe48cfad616217278b699afbd50f"}},{"ruleId":"D1","level":"warning","message":{"text":"_InitializationFromUri._initializeFromDill (cyclomatic 19): _InitializationFromUri._initializeFromDill has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3481}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffd2bea4d2f9395324924f276011bda03abdccc3540389b670e851dd27b6b33a"}},{"ruleId":"D1","level":"warning","message":{"text":"NamedTypeBuilderImpl.computeTypeParameterBuilderVariance (cyclomatic 19): NamedTypeBuilderImpl.computeTypeParameterBuilderVariance has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions. This is NOT this file\u0027s highest cyclomatic complexity: NamedTypeBuilderImpl._checkDeferred (cyclomatic 32) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":860}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e01f32f653a5dbebe8c59ab39e97396c2087995dcdc97a3b9dec17620cf5504"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelTarget.installForwardingConstructors (cyclomatic 19): KernelTarget.installForwardingConstructors has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"e26abee9e048ddc332998fb17e0bf7ed1b5387fe4206eaadccb0bfd452c5a823"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceLibraryBuilder._buildOutlineNodes (cyclomatic 19): SourceLibraryBuilder._buildOutlineNodes has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: SourceLibraryBuilder.checkPendingBoundsChecks (cyclomatic 33) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"84e78e9c59fcab0a16dc93efc3ae5bfcee296ecf7b4d323cda873a3c956b9cb5"}},{"ruleId":"D1","level":"warning","message":{"text":"VerifyingAnalysis.run (cyclomatic 19): VerifyingAnalysis.run has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/verifying_analysis.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"161810075bd9cda5fc2e78703e8701fbe02741c96077bbd92358bfd7cbe4ab90"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorBase._inferInstanceMethodInvocation (cyclomatic 19): InferenceVisitorBase._inferInstanceMethodInvocation has cyclomatic complexity 19 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorBase._tearOffCall (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3036}}}],"partialFingerprints":{"codehealthFindingId/v1":"978089c01455e9be9e1eb19600006c26a8563b3aff47716e7f892e33d4754509"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementalJavaScriptBundler.compile (cyclomatic 19): IncrementalJavaScriptBundler.compile has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/javascript_bundle.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"22fb94a11aca0126d9fbc6c6ed2a9b824a4a5ddbd9657664366c949b8f2920ea"}},{"ruleId":"D1","level":"warning","message":{"text":"MiniJsParser.parsePrimary (cyclomatic 19): MiniJsParser.parsePrimary has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":790}}}],"partialFingerprints":{"codehealthFindingId/v1":"23243c1ea5e4501967b0587b6051361df3770b2b3aaef90288f11785e734ea3f"}},{"ruleId":"D1","level":"warning","message":{"text":"FunctionType.equals (cyclomatic 19): FunctionType.equals has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1414}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d82e728e5df42e8859dc94bccd138ad81548759e3452c87987d368946f45a4"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._problemsForAnalyzerPublicApi (cyclomatic 19): _Visitor._problemsForAnalyzerPublicApi has cyclomatic complexity 19 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_public_api.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb1ca4c555d6892af903351d6a6228c9fa17763b41c138c346467960e8157b30"}},{"ruleId":"D1","level":"warning","message":{"text":"FileInfo.fromReaderDwarf5 (cyclomatic 19): FileInfo.fromReaderDwarf5 has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: _AttributeForm.read (cyclomatic 31) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/dwarf.dart"},"region":{"startLine":1153}}}],"partialFingerprints":{"codehealthFindingId/v1":"33dbaf7e9375b7a71ca18df241f690b18d7a581726dce1bb87364083b82c9c91"}},{"ruleId":"D1","level":"warning","message":{"text":"VirtualCollectionElement.render (cyclomatic 19): VirtualCollectionElement.render has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/containers/virtual_collection.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"06f08376d8d7f3d9cb2c716ab8a8ce522f2db9867dc8406ada3c624bbb2c8de0"}},{"ruleId":"D1","level":"warning","message":{"text":"_DispatchableInvocation.process (cyclomatic 19): _DispatchableInvocation.process has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"7afa3699a7f7a931ba3a6995e12f5fb77233d4a6e8d821ebbbaba7f04b186e82"}},{"ruleId":"D1","level":"warning","message":{"text":"MoveFieldInitializers.transformClass (cyclomatic 19): MoveFieldInitializers.transformClass has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb48e9b8ed756053162d1fc29092d0edf295bffb1a030d038c07cd60505c25ae"}},{"ruleId":"D1","level":"warning","message":{"text":"graphexplorer.Graph.rewriteEdgesForOwners (cyclomatic 19): graphexplorer.Graph.rewriteEdgesForOwners has cyclomatic complexity 19 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"45fda99d1064df71e806dc76d4101b14c0b0d4f511609729b1427896dc1767c3"}},{"ruleId":"D1","level":"warning","message":{"text":"JsInteropChecks._checkDisallowedTearoff (cyclomatic 18): JsInteropChecks._checkDisallowedTearoff has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":685}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac46ac7c73eeed9ebbf35828849b90f22c462b01724eddb88aff6397963c78f0"}},{"ruleId":"D1","level":"warning","message":{"text":"DartLanguageServerBenchmark._launch (cyclomatic 18): DartLanguageServerBenchmark._launch has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/language_server_benchmark.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f81c5b88d8a8b0f2c5018054cb3d11771f62e058ce2479e7da16b5057e480f6"}},{"ruleId":"D1","level":"warning","message":{"text":"LogEntry.from (cyclomatic 18): LogEntry.from has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/log/log.dart"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc65657b8a848ad468889c3772c9c9954b777606d9275e0e3ca5490f0d2fc9a"}},{"ruleId":"D1","level":"warning","message":{"text":"AstNodeImplGenerator._generateBeginToken (cyclomatic 18): AstNodeImplGenerator._generateBeginToken has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d207e03a33bb933e63dbe19739d676bed10a0386e177338e23074abf093f190"}},{"ruleId":"D1","level":"warning","message":{"text":"_ErrorCodeDocumentationParser.processCodeBlock (cyclomatic 18): _ErrorCodeDocumentationParser.processCodeBlock has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/messages/error_code_documentation_info.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd5463264aa090effea0f315408dae22e80daba4dc4703d11811e0b0978777ea"}},{"ruleId":"D1","level":"warning","message":{"text":"BytecodeGenerator.getClassDeclaration (cyclomatic 18): BytecodeGenerator.getClassDeclaration has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: BytecodeGenerator._genMethodInvocationUsingSpecializedBytecode (cyclomatic 29) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"363c9ff381ecc4ac2126927e24f0161c303cd7a381b6a354e90c62af998ccd66"}},{"ruleId":"D1","level":"warning","message":{"text":"FieldDeclaration.toString (cyclomatic 18): FieldDeclaration.toString has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"b54533afba8ae8c9a374b2673b1afb5e71364ed54245706b01ed645f7cab23c6"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassInfoCollector._createStructForClass (cyclomatic 18): ClassInfoCollector._createStructForClass has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/class_info.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a7116dc85536f11bb39fcd99aef4c552971fcc06bf6ac9a7c0784ff381d06ba"}},{"ruleId":"D1","level":"warning","message":{"text":"StateMachineCodeGenerator.visitSwitchStatement (cyclomatic 18): StateMachineCodeGenerator.visitSwitchStatement has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/state_machine.dart"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"0730650cca6dca9787a71c2b8dd93e52b71a7f242cf8f24b2a2dba2c2ebbe7b5"}},{"ruleId":"D1","level":"warning","message":{"text":"Expect.stringEquals (cyclomatic 18): Expect.stringEquals has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bcd1a4862cf216dafba02cc6279b2907ae54375b83a9e965d565d39ba5e09d3"}},{"ruleId":"D1","level":"warning","message":{"text":"ClosedWorldClassHierarchy._buildDeclaredMembers (cyclomatic 18): ClosedWorldClassHierarchy._buildDeclaredMembers has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1636}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c0ffcff689ca16eaac123cd6e6198e42584b2564ce74cacccc12c52620a1c1a"}},{"ruleId":"D1","level":"warning","message":{"text":"NaiveTypeChecker._checkFunctionOverride (cyclomatic 18): NaiveTypeChecker._checkFunctionOverride has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/naive_type_checker.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"40f10c8fce86627d03876f49dbbbd922876aa6faf2384d5ec4bf96b6287dca3a"}},{"ruleId":"D1","level":"warning","message":{"text":"_SnapshotGraph._readObjects (cyclomatic 18): _SnapshotGraph._readObjects has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":969}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7a1bf8c1a16a008d4ba86c31904a523eefe668f4b1b8259206f3aca6772410c"}},{"ruleId":"D1","level":"warning","message":{"text":"_Recorder.record (cyclomatic 18): _Recorder.record has cyclomatic complexity 18 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/perf_witness/lib/recorder.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"662e056f19ea790322f3ee35033b4686afe722178f6bfb0b59ddbd581c66bb58"}},{"ruleId":"D1","level":"warning","message":{"text":"Configuration.toString (cyclomatic 18): Configuration.toString has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: Architecture._computeHost (cyclomatic 21) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"78aa9c21e819eb659e2364408a4f60bddfb19e9ab35139bdda48badf79ac7f8c"}},{"ruleId":"D1","level":"warning","message":{"text":"BoxedDouble.computeRemainder (cyclomatic 18): BoxedDouble.computeRemainder has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/boxed_double.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"15add1d22b6ffd9d6593d2ed584e13bf15bf0a65224ffa780a2fbc9c87735f3a"}},{"ruleId":"D1","level":"warning","message":{"text":"Arm64CodeGenerator.visitAllocateArray (cyclomatic 18): Arm64CodeGenerator.visitAllocateArray has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Arm64CodeGenerator.visitComparison (cyclomatic 22) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2128}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bf423b37f71be45863837140d02c303ecf19debf0d32e8a3023e6e8f3347523"}},{"ruleId":"D1","level":"warning","message":{"text":"LinearScanRegisterAllocator.allocateBlockedRegister (cyclomatic 18): LinearScanRegisterAllocator.allocateBlockedRegister has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8f1af47e44fab494eff3290499c99afa561f991d04517666d5f50891a25f6ca"}},{"ruleId":"D1","level":"warning","message":{"text":"_Uri._normalizeZoneID (cyclomatic 18): _Uri._normalizeZoneID has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2468}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f27723e1e4332b2e00cc93f9d393e928b2b288bc136f58a515eaafd7cf0e45a"}},{"ruleId":"D1","level":"warning","message":{"text":"CorrectionUtils._invertCondition0 (cyclomatic 18): CorrectionUtils._invertCondition0 has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/correction_utils.dart"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dacc64c9eca04a9f32c77d32f060fc37b3c66a84321862096be17e47c648d8f"}},{"ruleId":"D1","level":"warning","message":{"text":"_StructuredClone.walk (cyclomatic 18): _StructuredClone.walk has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"803b955b64f4b2333549d93d3c749672cc8d21233a2b77766627d7c1c81cfd8d"}},{"ruleId":"D1","level":"warning","message":{"text":"NativeTypeCfe.NativeTypeCfe (cyclomatic 18): NativeTypeCfe.NativeTypeCfe has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dbc85a5f9c3ab1392d8fdae03aac8b32f1a6294b211d80c57287b0774e8a775"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser._computePrecedence (cyclomatic 18): Parser._computePrecedence has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Parser.missingParameterMessage (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7726}}}],"partialFingerprints":{"codehealthFindingId/v1":"459ddbeef1a0414fdfb303764a645a7389e9d70deb05912f053dd5030fccc8ed"}},{"ruleId":"D1","level":"warning","message":{"text":"IdValue.decode (cyclomatic 18): IdValue.decode has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/id.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6c0665a388bb0a606aadf4d1bf6af5b654c92f2d192bbc3990cd9b1a88b1a82"}},{"ruleId":"D1","level":"warning","message":{"text":"Writer._typeAnnotationToText (cyclomatic 18): Writer._typeAnnotationToText has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Writer._expressionToText (cyclomatic 37) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/metadata_helper.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"5efed01be3825d83033c53beea9860c534a9cafe6540bb0b9206a1b612cd9438"}},{"ruleId":"D1","level":"warning","message":{"text":"ParsedOptions.parse (cyclomatic 18): ParsedOptions.parse has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/options.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"987ffe9187da7bb1b8d9c02014fbdbe3120f164e48216396d9cbba0b236af95e"}},{"ruleId":"D1","level":"warning","message":{"text":"DartUnitSignatureComputer.compute (cyclomatic 18): DartUnitSignatureComputer.compute has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_signature.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d12c15b2fbec006832898d656afbd3eef7df579095f55ff9d7e1cf7246b5717"}},{"ruleId":"D1","level":"warning","message":{"text":"ContextManagerImpl._handleWatchEvent (cyclomatic 18): ContextManagerImpl._handleWatchEvent has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":952}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4b964caab0d3581f3b96bdce735333347739472c764f939dd8c811fc7e0d1ae"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractNotificationManager.setSubscriptions (cyclomatic 18): AbstractNotificationManager.setSubscriptions has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/notification_manager.dart"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8e5041a33582889e64dd36641ad3b52116798794d0c59c6cd692d03e965d6a"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._addExtensionMembers (cyclomatic 18): DeclarationHelper._addExtensionMembers has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":857}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e9875285e738563feaded12a1ecbe8823fd447adf7d88cd30ad067adfff681d"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._addExternalTopLevelDeclarations (cyclomatic 18): DeclarationHelper._addExternalTopLevelDeclarations has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"d558314edf5dde243dbc9b7b80922ac93e5c58ea0f57d557b45936763df64beb"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._suggestStaticField (cyclomatic 18): DeclarationHelper._suggestStaticField has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2729}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad9ff9edfe1d3e29ed2f8bbcdd1dd6c989572600a7ee8b29aaa98da49c829777"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementCompletionProcessor._complete_forStatement (cyclomatic 18): StatementCompletionProcessor._complete_forStatement has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb8fe3988ced5e87f237f8aca36b1de1a3dc5204e065abae9dc3f7f274763d29"}},{"ruleId":"D1","level":"warning","message":{"text":"AddDiagnosticPropertyReference._getPropertyInfo (cyclomatic 18): AddDiagnosticPropertyReference._getPropertyInfo has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b1ed69f619e3ecc94615c0be0f609ff4430ddb7bf1f4fe3c4c8bb1f2b54861"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToBooleanExpression.compute (cyclomatic 18): ConvertToBooleanExpression.compute has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_boolean_expression.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"3104f16c7abb7758d16236474745d83ddac08a03b9252825e81539aca3120de5"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToInBodyConstructor._convertPrimaryConstructorInBlockBody (cyclomatic 18): ConvertToInBodyConstructor._convertPrimaryConstructorInBlockBody has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_in_body_constructor.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a966f35a79e73e71cb4bccdbdcfc0d7264fe4be22bdcac0811ac3b64e63d0aa"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateField._proposeFromIdentifier (cyclomatic 18): CreateField._proposeFromIdentifier has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_field.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f6cd3b9e90efb803b3c2d38ce92c9e8e77ab54825d092aa241cb56e316e4e7"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateGetter.compute (cyclomatic 18): CreateGetter.compute has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"d642c1e84d821bb6abb1e372202d06296a98bb3983b5d88c5986215d6499b795"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateParameter.compute (cyclomatic 18): CreateParameter.compute has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_parameter.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1d5c344fbb3d786d706663b505eeac2d58f3c2aef7b69ddc37bdefafef4cd75"}},{"ruleId":"D1","level":"warning","message":{"text":"MakeFieldPublic.compute (cyclomatic 18): MakeFieldPublic.compute has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/make_field_public.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ead731311aae24796c095c64deff3e92d1f99cdd07fcd0663c100443350184e"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveUnexpectedUnderscores.compute (cyclomatic 18): RemoveUnexpectedUnderscores.compute has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unexpected_underscores.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8908ab5c7ac727427003698c283a4a27ae31e52de9bc9562cf62216e7d2e139"}},{"ruleId":"D1","level":"warning","message":{"text":"SimplifyDirectivePath.compute (cyclomatic 18): SimplifyDirectivePath.compute has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/simplify_directive_path.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"38d03a2205ce1716d0b5a198aecc1b54f5cf7e4227ba2aa8159054f1a0048cd3"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportOrganizer._organizeDocImportsInBlockComment (cyclomatic 18): ImportOrganizer._organizeDocImportsInBlockComment has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/organize_imports.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52fb81acb007d8aa958ebf3f3d26539bc8ade570cc242eec88478cb08c8ce2e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExtractMethodRefactoringImpl._checkSelection (cyclomatic 18): ExtractMethodRefactoringImpl._checkSelection has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"202ada6fcd7eca1f7e8c91872d59c372af8ac897d6d5fcc27c997c13a1227543"}},{"ruleId":"D1","level":"warning","message":{"text":"_IndexContributor.recordRelationOffset (cyclomatic 18): _IndexContributor.recordRelationOffset has cyclomatic complexity 18 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b925ace17f17b1d9b27a406bc29b365fca6cfd7cac6ea2ca9f639790a8bf91d"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantVisitor._getDeferredLibraryError (cyclomatic 18): ConstantVisitor._getDeferredLibraryError has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2191}}}],"partialFingerprints":{"codehealthFindingId/v1":"add2692ba7aa21d3dc6faf0e3efafcd6dea9e7c5616160c19c0e610320e57823"}},{"ruleId":"D1","level":"warning","message":{"text":"AstRewriter.prefixedIdentifier (cyclomatic 18): AstRewriter.prefixedIdentifier has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d37468df2e0dd9d40f40c035dc235cbe146d3052bc7249e3e3579e2e09e247b"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodInvocationResolver.resolve (cyclomatic 18): MethodInvocationResolver.resolve has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6d93142598a849cd91386c2389a5927cbce2c1371ab2d529f4e15ff47c00c4"}},{"ruleId":"D1","level":"warning","message":{"text":"TypedLiteralResolver._inferCollectionElementType (cyclomatic 18): TypedLiteralResolver._inferCollectionElementType has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f2563a7321018fcba5abfd9bc7ceb6e7e49baa056dbe806243de68aa6d1233"}},{"ruleId":"D1","level":"warning","message":{"text":"AstBuilder.doDotExpression (cyclomatic 18): AstBuilder.doDotExpression has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":859}}}],"partialFingerprints":{"codehealthFindingId/v1":"95fc01a9e7f09a145c366ffe038be29c758ba880ff57c0f6fb2b76c98bc794d6"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryManifestBuilder._fillInterfaceElementInterface (cyclomatic 18): LibraryManifestBuilder._fillInterfaceElementInterface has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1338}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac114aeefad3c3be72332006fbc8a0eda35954c250b61dba751409ad934a28dc"}},{"ruleId":"D1","level":"warning","message":{"text":"FragmentBuilder.visitPrimaryConstructorDeclaration (cyclomatic 18): FragmentBuilder.visitPrimaryConstructorDeclaration has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":2027}}}],"partialFingerprints":{"codehealthFindingId/v1":"18fc9c726b3e2502715d135c183a650689531cb9d84a173d334c834a3907f3a2"}},{"ruleId":"D1","level":"warning","message":{"text":"Linker._buildExportScopes (cyclomatic 18): Linker._buildExportScopes has cyclomatic complexity 18 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/link.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"7da7fe49aab1f3dfdfe6446cf01c86795c45a40cc9da6a72001c659642497e61"}},{"ruleId":"D1","level":"warning","message":{"text":"_PropertyInducingElementTypeInference.perform (cyclomatic 18): _PropertyInducingElementTypeInference.perform has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/top_level_inference.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"90702a2459db2cc8fda882ab2f2cc909551d6c2b970e7d3d63adfdb527c2434f"}},{"ruleId":"D1","level":"warning","message":{"text":"TypesBuilder._declaration (cyclomatic 18): TypesBuilder._declaration has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/types_builder.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae04b59e941d0534d7b053b0dd5ef1dfec30f8bbf82a856f24b5a760fc7a5fa8"}},{"ruleId":"D1","level":"warning","message":{"text":"DartEditBuilderImpl.writeFormalParameters (cyclomatic 18): DartEditBuilderImpl.writeFormalParameters has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bf02c18b7744f194c46c0eaf3c9b00aeb6b23e7d0d9a7cf3c75801bf93394e5"}},{"ruleId":"D1","level":"warning","message":{"text":"CompletionTarget.forOffset (cyclomatic 18): CompletionTarget.forOffset has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"d30538c855e018b5e6c816345901c15d457fb502a75635b6a338d959d119bbf6"}},{"ruleId":"D1","level":"warning","message":{"text":"_OpTypeAstVisitor._argumentListContext (cyclomatic 18): _OpTypeAstVisitor._argumentListContext has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":1856}}}],"partialFingerprints":{"codehealthFindingId/v1":"41c95ab2c86f70cb662485d20176cbef31b386fda9ae7343f4d2674bb455190f"}},{"ruleId":"D1","level":"warning","message":{"text":"ElementInfoCollector.visitClass (cyclomatic 18): ElementInfoCollector.visitClass has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a33fe2240c6105c30e6bc35e068493648b1a1b51175067719e0565d02ed4a85"}},{"ruleId":"D1","level":"warning","message":{"text":"DumpInfoAnnotator.visitClass (cyclomatic 18): DumpInfoAnnotator.visitClass has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1348}}}],"partialFingerprints":{"codehealthFindingId/v1":"984d34b5c63fa2b84283f0d1fa589f175029232777647c584a96a7e51b0098c6"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolutionEnqueuerListener.registerUsedElement (cyclomatic 18): ResolutionEnqueuerListener.registerUsedElement has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8537eb31f1cfec1eb654c8a450744f90944eb18ead9b634024d2f84d08546d0"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder._buildParameterStub (cyclomatic 18): KernelSsaGraphBuilder._buildParameterStub has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"703a64c1f43cab9a7cc73ef841531075092ece7a6f16c462a341d679e2d7e584"}},{"ruleId":"D1","level":"warning","message":{"text":"InlineData.cannotBeInlinedReductiveReason (cyclomatic 18): InlineData.cannotBeInlinedReductiveReason has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9044}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe6e2017b5b9bd84fcb5b753322dcaa9f2eaddd992c34506412ee191e3fa8e5"}},{"ruleId":"D1","level":"warning","message":{"text":"TestAdapter.sendTestTextOutput (cyclomatic 18): TestAdapter.sendTestTextOutput has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/mixins.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"360d1792dab2677dc358a622ecd58ba4e0de4083ce8e36ce2cdfc272afe62239"}},{"ruleId":"D1","level":"warning","message":{"text":"BuildCliSubcommand.run (cyclomatic 18): BuildCliSubcommand.run has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/build.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdce914a467bfa12da22aa3082e1fa5ecf0f514daae1edd0020ca836eba9053f"}},{"ruleId":"D1","level":"warning","message":{"text":"ExecutableCompiler.isSnapshotFresh (cyclomatic 18): ExecutableCompiler.isSnapshotFresh has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/executable_compiler.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"895f55d3ff79396eccbaebdbae2299295ddf8268ea162ab94567555c4a157907"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler.emitModule (cyclomatic 18): ProgramCompiler.emitModule has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"4131ba30cc5b9da2bdf19323f3240192b3b50874043af932c63d22fcefa5ec2d"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._emitClassDeclaration (cyclomatic 18): ProgramCompiler._emitClassDeclaration has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1170}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc19465d327aba2382328ff9f5558aca7c3fcabf22a0432b5e516188e81e0209"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementalCompiler._computeExpressionCompilationExtensionData (cyclomatic 18): IncrementalCompiler._computeExpressionCompilationExtensionData has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2393}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fb9b91466e923706565c8d8ce567b726b037f1170966b42f893c6cf50f41e39"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl.createFieldInitializer (cyclomatic 18): BodyBuilderImpl.createFieldInitializer has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":2234}}}],"partialFingerprints":{"codehealthFindingId/v1":"310fd77d73312306fa5711cfc3f744a365f6a4b75456ddeeb527c6c0136cd1d8"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator.visitConstructorInvocation (cyclomatic 18): ConstantEvaluator.visitConstructorInvocation has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3533}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2d62597880d630f0211031d610bfeb0e0594cf6c01b1ea45feb4a7b7075ca3"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassHierarchyNodeBuilder.build (cyclomatic 18): ClassHierarchyNodeBuilder.build has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/hierarchy_node.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3034f4173f7758dd69061398926f0b5e8a1325ab302d618c14cada7330c796"}},{"ruleId":"D1","level":"warning","message":{"text":"Covariance.== (cyclomatic 18): Covariance.== has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/member_covariance.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"3949ba620b9dac4a6c01cb86e347043a71f5a9a3eb92ce62e1d54d67ad903389"}},{"ruleId":"D1","level":"warning","message":{"text":"OutlineBuilder.endConstructor (cyclomatic 18): OutlineBuilder.endConstructor has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: OutlineBuilder._createOmittedParameterTypeBuilder (cyclomatic 21) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2591}}}],"partialFingerprints":{"codehealthFindingId/v1":"b548d9fb6d16b2dff6a291847d115a855f0b452a5800217c103c6c7d11d7835e"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._checkConstant (cyclomatic 18): _Visitor._checkConstant has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_contains.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d88686c548ee0d72258cc9f6efc14915885e84d7fd3702444d031fd08ac598b"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitBinaryExpression (cyclomatic 18): _Visitor.visitBinaryExpression has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_is_even_rather_than_modulo.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"c09359f19727d82ff753a28afa9cd207874adf448ecf325e0d237fe1bd0f5588"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._checkForConvertiblePositionalParams (cyclomatic 18): _Visitor._checkForConvertiblePositionalParams has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_super_parameters.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f1e26094a396eaf99666a9099eb724eed45e953fc45d191835e28a8c3739d3e"}},{"ruleId":"D1","level":"warning","message":{"text":"DebuggerInputElement._onKeyDown (cyclomatic 18): DebuggerInputElement._onKeyDown has cyclomatic complexity 18 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":3258}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b2d93166b8a8b5bd327525ccb36d77806c97242025f64fc4393d7029fd730a"}},{"ruleId":"D1","level":"warning","message":{"text":"InstanceRef.toJson (cyclomatic 18): InstanceRef.toJson has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":5166}}}],"partialFingerprints":{"codehealthFindingId/v1":"be7a2e70bcacef116e89394bc56fda98dbfd51fbd48a06cdff25a8fb738dd2c7"}},{"ruleId":"D1","level":"warning","message":{"text":"WidgetCreatorTracker._transformWidgetConstructors (cyclomatic 18): WidgetCreatorTracker._transformWidgetConstructors has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"550d6cd36d85db01478dad7a242349f7ddf9934c9d9931ab1957e882cec52e95"}},{"ruleId":"D1","level":"warning","message":{"text":"_DirectInvocation._processField (cyclomatic 18): _DirectInvocation._processField has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"e14d3270960d8e8a9613aa60c7197dc0d703e9f3a2bfaef0b29a706b42768ffc"}},{"ruleId":"D1","level":"warning","message":{"text":"TableSelectorAssigner._memberIdsForClass (cyclomatic 18): TableSelectorAssigner._memberIdsForClass has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/table_selector_assigner.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"341a2ef27b19e33b7a8d33244b3a5bf5e263cb5d6c8e1f71681ccb266b6d8ff7"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotateKernel._annotateMember (cyclomatic 18): AnnotateKernel._annotateMember has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a0cb188f9855fbefa8746ad50178a972dab162c86a834e695f7238b4e5d1f3f"}},{"ruleId":"D1","level":"warning","message":{"text":"build_devtools.main (cyclomatic 18): build_devtools.main has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/build_devtools.py"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"059f451ebadd13b433c5efd5a7c1b426718c551c2a6f0b430f365a0a088b5076"}},{"ruleId":"D1","level":"warning","message":{"text":"Emitter._ParseTemplate (cyclomatic 18): Emitter._ParseTemplate has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/emitter.py"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e11283bf6c13ccdcab8f19d0327598f87482f25e1426ced96cb53a5b1e502e7"}},{"ruleId":"D1","level":"warning","message":{"text":"idlsync.copy_files (cyclomatic 18): idlsync.copy_files has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlsync.py"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"829d494f83b2228f5cda5fc9a2d312fe53ee90fdef61f5509fa4f1174b097ba2"}},{"ruleId":"D1","level":"warning","message":{"text":"DartiumBackend._AddGetter (cyclomatic 18): DartiumBackend._AddGetter has cyclomatic complexity 18 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1cd0533888252c492a049bb26e56866542b35556a6fd493b8fda61434f3382c"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryLoader.load (cyclomatic 18): LibraryLoader.load has cyclomatic complexity 18 (threshold 15). Of this number, 14 points are the body\u0027s own statements and 4 belong to one function literal inside it that branches. To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"e72e28e5218e2a68876a95bcb6782272273908e080acc6dfdb910021f27a1c06"}},{"ruleId":"D1","level":"warning","message":{"text":"D3SymbolTreeMap.D3SymbolTreeMap._handleInodes (cyclomatic 18): D3SymbolTreeMap.D3SymbolTreeMap._handleInodes has cyclomatic complexity 18 (threshold 15). Most of this is not in the body itself: 3 of the 18 points are its own statements and the rest belongs to 7 function literals inside it that branch (lines 429, 464, 533, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fdccc32f0cfc580ae814ce5ea3f0a50a3c798877b2fccd38fc7cbf0a7a9f908"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous)::onRcpMessage (cyclomatic 18): (anonymous)::onRcpMessage has cyclomatic complexity 18 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/asset/sandbox.js"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cdf0e7d802f139c682ba4126d20983067d370fafcb3e9f36b64338d75fd9ae0"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractScanner.tokenizeKeywordOrIdentifier (cyclomatic 17): AbstractScanner.tokenizeKeywordOrIdentifier has cyclomatic complexity 17 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1353}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6c067d99a271c1f96d448a4d1e8ac7f5c42584e9643635f19a9adbb5bde68f8"}},{"ruleId":"D1","level":"warning","message":{"text":"RemoveLastFormalParameterMutation._deletionForLast (cyclomatic 17): RemoveLastFormalParameterMutation._deletionForLast has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/fine/ab_mutate/mutations/impl/remove_last_formal_parameter.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c5dbf11c194e216b130f6d53f5c58fa4a3ff408317fa16a741363c6f1d185a5"}},{"ruleId":"D1","level":"warning","message":{"text":"AstNodeImplGenerator._generateFields (cyclomatic 17): AstNodeImplGenerator._generateFields has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"78668790ab61828a6dba51500227523f73a5812838a40e651a54994156343788"}},{"ruleId":"D1","level":"warning","message":{"text":"BytecodeGenerator.getClosureDeclaration (cyclomatic 17): BytecodeGenerator.getClosureDeclaration has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: BytecodeGenerator._genMethodInvocationUsingSpecializedBytecode (cyclomatic 29) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":2681}}}],"partialFingerprints":{"codehealthFindingId/v1":"86582b9f3cc9872db21f60fae895caf2ee5fc3b1d112a5b831bb9ad8d47a7a91"}},{"ruleId":"D1","level":"warning","message":{"text":"SelectorInfo._computeSignature (cyclomatic 17): SelectorInfo._computeSignature has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dispatch_table.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d013ad4b53fddaf42fa1a8d12117235d9558d0e3953214ef1e2b3fb1c1ef8e4"}},{"ruleId":"D1","level":"warning","message":{"text":"Translator.getClosure (cyclomatic 17): Translator.getClosure has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: Translator.toMostSpecificInterfaceType (cyclomatic 18) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1343}}}],"partialFingerprints":{"codehealthFindingId/v1":"398b05b440f7b71b57920db93997b7d7bb7c498afb0df3d520cb5c4a023741ee"}},{"ruleId":"D1","level":"warning","message":{"text":"AstCompilationTask.run (cyclomatic 17): AstCompilationTask.run has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Translator.toMostSpecificInterfaceType (cyclomatic 18) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":2753}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f9d7af9198396a99636f339e8507ac0bcd87a51159965b117f53c9e75dd4e1b"}},{"ruleId":"D1","level":"warning","message":{"text":"ClosedWorldClassHierarchy._getLegacyLeastUpperBoundInternal (cyclomatic 17): ClosedWorldClassHierarchy._getLegacyLeastUpperBoundInternal has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":961}}}],"partialFingerprints":{"codehealthFindingId/v1":"b30fc61be1549f0de2807c94b86e27c2c2e3149b0735b2ea50a452d3124c8315"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeCheckingVisitor.getReceiverType (cyclomatic 17): TypeCheckingVisitor.getReceiverType has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac92ba0f578069f874c3bd60d56be52f1aa650769b44af3f14a967d446c1ac6"}},{"ruleId":"D1","level":"warning","message":{"text":"_HttpOutgoing.writeHeaders (cyclomatic 17): _HttpOutgoing.writeHeaders has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: _HttpResponse._findReasonPhrase (cyclomatic 42) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1795}}}],"partialFingerprints":{"codehealthFindingId/v1":"882ef85337882e8d4ffc84e41da21e6529045d54235f329d316cbad51383d6b2"}},{"ruleId":"D1","level":"warning","message":{"text":"Primitives.applyFunction (cyclomatic 17): Primitives.applyFunction has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c4d6b435ec80cbbb1e9a9624bb19c8fe3983559203cf6fa67ba031361212a25"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringEscape (cyclomatic 17): _ChunkedJsonParser.parseStringEscape has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"8864441bb6a020bfc4c6769a511e5bd6fac5e1a5c20fd7fd039a3c1e03441791"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser._parseStringInternal (cyclomatic 17): _ChunkedJsonParser._parseStringInternal has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"589201e4e695eac2e383fe77e0c7ee327b51dcc1de5288f64ff7d7f8745b4e4f"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringToBuffer (cyclomatic 17): _ChunkedJsonParser.parseStringToBuffer has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"864fe9423389147e0f2de800d9854a08af9a3b9b2d512f8403ed470b5a58623e"}},{"ruleId":"D1","level":"warning","message":{"text":"_TypeUniverse.substituteTypeArgument (cyclomatic 17): _TypeUniverse.substituteTypeArgument has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3f56daafce3820696b3ede2b7f4f44be0cd9cc9ee49ea8e668a259fd9694107"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringEscape (cyclomatic 17): _ChunkedJsonParser.parseStringEscape has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"068f15e0d8ac0d92d49f6afa9530e6c031ccc17ddd7a6c9cea844e74723a5632"}},{"ruleId":"D1","level":"warning","message":{"text":"LinearScanRegisterAllocator.allocate (cyclomatic 17): LinearScanRegisterAllocator.allocate has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"3028aa19ee195078e76c4b9df5d2ef2216a5b3f7ef656adba8415ddc2f86b970"}},{"ruleId":"D1","level":"warning","message":{"text":"_Base64Decoder.decodeChunk (cyclomatic 17): _Base64Decoder.decodeChunk has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/base64.dart"},"region":{"startLine":695}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f4a0c79cbcf81807ddbef0c41f15c6b9cfd674c0c4b1a2c53fb16f88a2777c"}},{"ruleId":"D1","level":"warning","message":{"text":"HtmlEscape._convert (cyclomatic 17): HtmlEscape._convert has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/html_escape.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"919fe8f9193ae781e7766c4ff6b25a1f2afe6bba74ede81da2c453dc1202b520"}},{"ruleId":"D1","level":"warning","message":{"text":"AstToIr._translateConditionForValue (cyclomatic 17): AstToIr._translateConditionForValue has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":2043}}}],"partialFingerprints":{"codehealthFindingId/v1":"8599e77b5bf07d7e24f884b67104051ab4401bca96224f56e164540d7a8d3fce"}},{"ruleId":"D1","level":"warning","message":{"text":"_NetworkProfiling._serviceExtensionHandler (cyclomatic 17): _NetworkProfiling._serviceExtensionHandler has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/network_profiling.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4eb1ccb657160c0793fbfb9f3a548cdd2551cca741f81174591e008231ca8f9"}},{"ruleId":"D1","level":"warning","message":{"text":"Lowering.visitComparison (cyclomatic 17): Lowering.visitComparison has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/lowering.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"2946d3e533e7f993ad0abaa6d82c750aa501f350e0496083ad798cbebc3c13fa"}},{"ruleId":"D1","level":"warning","message":{"text":"_FlowAnalysisImpl._getNonPromotionReasons (cyclomatic 17): _FlowAnalysisImpl._getNonPromotionReasons has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":8681}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5194c48f2987d61ee368d9ed02269b315ac1f20adab90a72f10c55084aabd17"}},{"ruleId":"D1","level":"warning","message":{"text":"RecordFieldDeclarationIdentifierContext.ensureIdentifier (cyclomatic 17): RecordFieldDeclarationIdentifierContext.ensureIdentifier has cyclomatic complexity 17 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"341112b397bcdc72ccbd776f69e44aaf136d24f674b79b17db16e16cbd628b98"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseEnum (cyclomatic 17): Parser.parseEnum has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Parser.missingParameterMessage (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":2593}}}],"partialFingerprints":{"codehealthFindingId/v1":"79202c31ba6d694ece5164dc2042899425313a22e0197b813fe5d7d8655e96d3"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseInitializer (cyclomatic 17): Parser.parseInitializer has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Parser.missingParameterMessage (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4804}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a849605d743a5b3634aaa0ced06edae35c47b04e1461a1f92f2733c33b67fc1"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseFunctionBody (cyclomatic 17): Parser.parseFunctionBody has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Parser.missingParameterMessage (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6531}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8568fbea7cf89ef6a40842fca94b338821b9d0a2bc98e08a3ca62135c89a4a2"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseNewExpression (cyclomatic 17): Parser.parseNewExpression has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Parser.missingParameterMessage (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8896}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b0ec6b643cf3ebd89e8f404af7489cd5dc824ef4338a50a6610ebb77ab6266"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser.parseParenthesizedPatternOrRecordPattern (cyclomatic 17): Parser.parseParenthesizedPatternOrRecordPattern has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Parser.missingParameterMessage (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":12159}}}],"partialFingerprints":{"codehealthFindingId/v1":"fabac440c0430d6f7662bdb054482297149ad5a9f3208d29a038aaa61c65595f"}},{"ruleId":"D1","level":"warning","message":{"text":"ComplexTypeParamOrArgInfo.parseVariables (cyclomatic 17): ComplexTypeParamOrArgInfo.parseVariables has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"1929933a087c74901f24d2f255d54f9170e07f350e01d10de54532594a1fac03"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractScanner.tokenizeKeywordOrIdentifier (cyclomatic 17): AbstractScanner.tokenizeKeywordOrIdentifier has cyclomatic complexity 17 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2089}}}],"partialFingerprints":{"codehealthFindingId/v1":"40f95e04bdea31f6f0130e1dca3cca14698a949f1a3075e0e85cfb2651b8130f"}},{"ruleId":"D1","level":"warning","message":{"text":"Features.getText (cyclomatic 17): Features.getText has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/features.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"64436f6d2da7087280e5d34b386312d4f40f431456c4c0cd373a3c16b70bb716"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeAnalyzer._finishJoinedPatternVariables (cyclomatic 17): TypeAnalyzer._finishJoinedPatternVariables has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":3223}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34a76e33bfe5fbdfa2f39171352f1ca8c008f4365fe7693c9d371f98977f932"}},{"ruleId":"D1","level":"warning","message":{"text":"StaticInteropMockValidator.validateCreateStaticInteropMock (cyclomatic 17): StaticInteropMockValidator.validateCreateStaticInteropMock has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/static_interop_mock_validator.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa70027d553c98ccf88d24232cf5cee811d8b03d2c57eae35b1d4f0b133b76d"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisServer.reportAnalysisAnalytics (cyclomatic 17): AnalysisServer.reportAnalysisAnalytics has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ccfd22cda2fc8c52ae42f4e1566638cbbd449228b8f5ab6813f965778c1a872"}},{"ruleId":"D1","level":"warning","message":{"text":"CheckNameResponse.computeRenameRanges2 (cyclomatic 17): CheckNameResponse.computeRenameRanges2 has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/rename.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"579e432ee33daf92453ac52a337dae72fa4d6223d23eec516086aca9883bdce6"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractRefactorCommandHandler.getRefactoring (cyclomatic 17): AbstractRefactorCommandHandler.getRefactoring has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f7613f7fb75cbcdf33f9fe218d192bc6ba90ce04de777225c54afe6034323b"}},{"ruleId":"D1","level":"warning","message":{"text":"EditableArgumentsMixin.getInvocationInfo (cyclomatic 17): EditableArgumentsMixin.getInvocationInfo has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/editable_arguments_mixin.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"08968b2663d43594775c9a1266d17ed3492ba3feaeb6ca142c321454b309d8cb"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._addInstanceMembers (cyclomatic 17): DeclarationHelper._addInstanceMembers has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1202}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e60c381b26fb5c094449d0fadb145bd31fe65ee17dad8ed726644d42f14e122"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._addTopLevelDeclarations (cyclomatic 17): DeclarationHelper._addTopLevelDeclarations has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1710}}}],"partialFingerprints":{"codehealthFindingId/v1":"64a0e9d2146dd6efda243fe761da6965672d3ecc95d226e80b3d6b9d3baaa9aa"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitIfStatement (cyclomatic 17): InScopeCompletionPass.visitIfStatement has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1816}}}],"partialFingerprints":{"codehealthFindingId/v1":"a750c6c1670870c186e67e6a7fcad28dc36301c0702ebe11017e2df07953ca87"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementCompletionProcessor._complete_doStatement (cyclomatic 17): StatementCompletionProcessor._complete_doStatement has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6ad9f67d4c4f2990c15af1486a3ee4eb082a659feb402ec750f8e947757b472"}},{"ruleId":"D1","level":"warning","message":{"text":"AddDiagnosticPropertyReference._fixAllDiagnosticPropertyReferences (cyclomatic 17): AddDiagnosticPropertyReference._fixAllDiagnosticPropertyReferences has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aa949bff0e6d1737baa985dc429c6af2107ff05ca910fb37bbee95cf4feb719"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertClassToMixin.compute (cyclomatic 17): ConvertClassToMixin.compute has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd869f669f73e7ffe792e1f8cbb5860409b92fd18cd7c5b5e0143157bf3eadf0"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateEnumConstant.compute (cyclomatic 17): CreateEnumConstant.compute has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_enum_constant.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"22651af18f03f4e7566215028d6ea70ab4f6caf6547f706ebd085f5a67b031db"}},{"ruleId":"D1","level":"warning","message":{"text":"EncapsulateField._updateReferencesInConstructor (cyclomatic 17): EncapsulateField._updateReferencesInConstructor has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"66f8113502f38385d2a8c456de1eb1e7b528829fbf90c2092be319e6d321f1d6"}},{"ruleId":"D1","level":"warning","message":{"text":"MemberSorter._sortUnitMembers (cyclomatic 17): MemberSorter._sortUnitMembers has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/sort_members.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"94138b9fb5ffa985b24099c40701ab8feb1b7b4f484e6e81e15c49a1d9c04e96"}},{"ruleId":"D1","level":"warning","message":{"text":"_PreviewVisitor.visitAnnotation (cyclomatic 17): _PreviewVisitor.visitAnnotation has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/widget_previews.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"589775d42fc33aafea97cbc26ce5baf05ecfaec050361575a711a5651aaa0c38"}},{"ruleId":"D1","level":"warning","message":{"text":"_ReferenceProcessor._process (cyclomatic 17): _ReferenceProcessor._process has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"251383ed386431f325527b2bb0de0f732dc552340b21c35b4c5a051b9cde6de1"}},{"ruleId":"D1","level":"warning","message":{"text":"_IndexContributor.visitSimpleIdentifier (cyclomatic 17): _IndexContributor.visitSimpleIdentifier has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":1405}}}],"partialFingerprints":{"codehealthFindingId/v1":"a945d183467bd3cdbda2ff5da508ba591ca68df6b70bd5c7f2968588ad5cc2db"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpressionImpl.correspondingParameter (cyclomatic 17): ExpressionImpl.correspondingParameter has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: V1Projection._sourceOf (cyclomatic 25) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17913}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24e07a01189dafbc21f686b61db9c7f1a46b8945321e985450f4abfbdb43e3b"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantVerifier._checkForConstWithTypeParameters (cyclomatic 17): ConstantVerifier._checkForConstWithTypeParameters has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"99b4a0c0665cff6ac755bfc501ae19f63a54ea9e1b4e042004db48c0caf37a4c"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstructorInvocationEvaluator.evaluateFactoryConstructorCall (cyclomatic 17): _ConstructorInvocationEvaluator.evaluateFactoryConstructorCall has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3027}}}],"partialFingerprints":{"codehealthFindingId/v1":"642c1b0fcf55ac13f07d236832ee04b549bf40a2441cb3c9344bdce2466e47e8"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassElementImpl.allSubtypes (cyclomatic 17): ClassElementImpl.allSubtypes has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"290cfb1763375200165689b160a83975f7d751111ddaf8ca6bb11feea59a5b87"}},{"ruleId":"D1","level":"warning","message":{"text":"InterfaceLeastUpperBoundHelper._computeLongestInheritancePathToObject (cyclomatic 17): InterfaceLeastUpperBoundHelper._computeLongestInheritancePathToObject has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a573e8f0dfa92dfd0e18fe46512c71b307da6aaf848f20162265491ecc0e6c7"}},{"ruleId":"D1","level":"warning","message":{"text":"LeastUpperBoundHelper._futureOr (cyclomatic 17): LeastUpperBoundHelper._futureOr has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e88697e97e936cd406e918c683e0a33bb4c85072f3bccfc8ee61cb5b543a0bb"}},{"ruleId":"D1","level":"warning","message":{"text":"ReplacementVisitor.visitFunctionType (cyclomatic 17): ReplacementVisitor.visitFunctionType has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c73e5b283a750dcce95adc48b23242bab0da3a45b901ba8a9e65e6d252171ca"}},{"ruleId":"D1","level":"warning","message":{"text":"UnknownInferredType.isUnknown (cyclomatic 17): UnknownInferredType.isUnknown has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_schema.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"55f1e5716164a29d4128d8768f46a4e11496150c93f6c0ea1c2c4e1a62b169c0"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeSystemImpl.isAlwaysExhaustive (cyclomatic 17): TypeSystemImpl.isAlwaysExhaustive has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c3f023a02961b9c0e4e425eb4f04204a7b34dc07cbcec13ad0b3b2cc7cd8e02"}},{"ruleId":"D1","level":"warning","message":{"text":"AstRewriter._parsedConstructorType (cyclomatic 17): AstRewriter._parsedConstructorType has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"680afc76bde466ada3ac6ea5883a03328c7fc505978be03851674d3b525b7fb7"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyElementResolver.resolveCascadeProperty (cyclomatic 17): PropertyElementResolver.resolveCascadeProperty has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f0f38a89516f2d654628c1274109868ced741d48a25320845d765b4f834170"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyElementResolver.resolveIndexExpression (cyclomatic 17): PropertyElementResolver.resolveIndexExpression has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"39508238b18fd95611bbb70a3669047bb906fac626bd64e02ffeda3ce46e2966"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyElementResolver.resolveIndexReadWriteAssignmentTarget (cyclomatic 17): PropertyElementResolver.resolveIndexReadWriteAssignmentTarget has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce64b129023e7fb7fcd6b0f2c23746a207215fb21decc74e667da2168a80762"}},{"ruleId":"D1","level":"warning","message":{"text":"SimpleIdentifierResolver._resolve1 (cyclomatic 17): SimpleIdentifierResolver._resolve1 has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef37e17d895a56a642f37afc0f0112a2cf5820097d62d6a9524969c871560ee"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotationVerifier._checkReopen (cyclomatic 17): AnnotationVerifier._checkReopen has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"f28214ce7300c754e16bc2a93989605a02b6b2bf0cd3c8daa4ec6cc36265fbba"}},{"ruleId":"D1","level":"warning","message":{"text":"GatherUsedLocalElementsVisitor._useNamedReadResolution (cyclomatic 17): GatherUsedLocalElementsVisitor._useNamedReadResolution has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"f67c9047415088a9a9ca6baa639db4bfd641a49d3116c85a4d479d57e655eb4e"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier.visitTopLevelVariableDeclaration (cyclomatic 17): ErrorVerifier.visitTopLevelVariableDeclaration has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":2485}}}],"partialFingerprints":{"codehealthFindingId/v1":"9638c049b994c6b9711f342de268450b79168cae11aee6a9bf0bc9e332b3b843"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForFunctionBodyCompleteness (cyclomatic 17): ErrorVerifier._checkForFunctionBodyCompleteness has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5864}}}],"partialFingerprints":{"codehealthFindingId/v1":"281fbe5034fdafaa41d13cf5b5bf587a114a6a1c9f26d9774b7de133c2286a6a"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._validateConstructorBodyAllowed (cyclomatic 17): ErrorVerifier._validateConstructorBodyAllowed has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8855}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9c42fb95e41f0bf9d989d6478d6f88baf0aaa05671b207a6d2af70aa6d5fc9b"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier.visitCascadeMethodInvocation (cyclomatic 17): FfiVerifier.visitCascadeMethodInvocation has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"e52769e6e3800499800a15fc840b81328f2f9db413e3cf1b3240212e6ad532ca"}},{"ruleId":"D1","level":"warning","message":{"text":"SdkConstraintVerifier._checkSinceSdkVersion (cyclomatic 17): SdkConstraintVerifier._checkSinceSdkVersion has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed31aed8a66fb568545f909f68779a1e20349a03a5036a210e03800045a285e2"}},{"ruleId":"D1","level":"warning","message":{"text":"InstanceMemberInferrer._inferExecutable (cyclomatic 17): InstanceMemberInferrer._inferExecutable has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fe3f36234fcf58a9526777e804e16f6dea8117876300b89a23f03ce1b27b746"}},{"ruleId":"D1","level":"warning","message":{"text":"InstanceMemberInferrer._setInducedModifier (cyclomatic 17): InstanceMemberInferrer._setInducedModifier has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddbded6953bedb03937147aefdc58b6eb52945d69da66f35305845a53f7773fd"}},{"ruleId":"D1","level":"warning","message":{"text":"DartEditBuilderImpl._getBaseNameFromUnwrappedExpression (cyclomatic 17): DartEditBuilderImpl._getBaseNameFromUnwrappedExpression has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1266}}}],"partialFingerprints":{"codehealthFindingId/v1":"db0c21e77686fa498f1057271215f2da39da32deb00ae9ef8d4dd1e02ef130d1"}},{"ruleId":"D1","level":"warning","message":{"text":"DartFileEditBuilderImpl._insertDocImportIntoLibraryDirective (cyclomatic 17): DartFileEditBuilderImpl._insertDocImportIntoLibraryDirective has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":3210}}}],"partialFingerprints":{"codehealthFindingId/v1":"b380f838e557140824e052db8eb3b91e623b5e11ae020d7a0e69856131d9619e"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSourceInformationBuilder._buildMemberBody (cyclomatic 17): KernelSourceInformationBuilder._buildMemberBody has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/kernel_source_information.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"6420cecc12d23a351b983f35c1bbb5db36a6850093e2b6d3e2b07764bd83a909"}},{"ruleId":"D1","level":"warning","message":{"text":"CallPosition.getSemanticPositionForCall (cyclomatic 17): CallPosition.getSemanticPositionForCall has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: PositionTraceListener.onStep (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"278ad51ca97a85ccdca4551872d886b1d2d3ad4cf3d54aad6382ac38e740d61c"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEmitter.visitMap (cyclomatic 17): ConstantEmitter.visitMap has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/constant_emitter.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f459f53fc1939a2e6b36db1891f65545c8950e24dc869e2d3d00d8ee96548ab"}},{"ruleId":"D1","level":"warning","message":{"text":"JsKernelToElementMap.JsKernelToElementMap (cyclomatic 17): JsKernelToElementMap.JsKernelToElementMap has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"662bda717a7d29c4c6acdb14fc25d56269cbfbb944c067273baac3cfa490e7c5"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder._handleCreateInvocationMirror (cyclomatic 17): KernelSsaGraphBuilder._handleCreateInvocationMirror has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5579}}}],"partialFingerprints":{"codehealthFindingId/v1":"a00baa6f65bca244307324d7d4837f9eb12820eed126f13478001866f4f125f2"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaCodeGenerator.generateExpressionAssignment (cyclomatic 17): SsaCodeGenerator.generateExpressionAssignment has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"d14de2b1e295f628847c74cb03901ca8b1e56f3fda02f0284e9237ec452e23a8"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSelection._computeBitWidth (cyclomatic 17): SsaInstructionSelection._computeBitWidth has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"0501432fbd1c0d6cdef4528ce511dfcc030e80022b2729eadfa403f883b88fd3"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaGlobalValueNumberer.moveLoopInvariantCodeFromBlock (cyclomatic 17): SsaGlobalValueNumberer.moveLoopInvariantCodeFromBlock has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3755}}}],"partialFingerprints":{"codehealthFindingId/v1":"1524c85c8f326d222d94678ebdfbb4594be7f0932a2ab713d178a141611c8937"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaCodeMotion.visitBasicBlock (cyclomatic 17): SsaCodeMotion.visitBasicBlock has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3988}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e05a70a0fb7887bc85e7b516a8899feef6580bd2213576a638f7f7eb4e0b6d"}},{"ruleId":"D1","level":"warning","message":{"text":"MemberUsage.dataEquals (cyclomatic 17): MemberUsage.dataEquals has cyclomatic complexity 17 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4a8e23e738ecee84a18cc180c6a8da8e04236980a1e73f85fa542c23e276bc4"}},{"ruleId":"D1","level":"warning","message":{"text":"DDSRunner.start (cyclomatic 17): DDSRunner.start has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/dds_runner.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae9406026d22a07596f7ac974183c0c9ba55964086a1c7163f301feb6baf0a6a"}},{"ruleId":"D1","level":"warning","message":{"text":"EvalPackageResolver.resolvePackageConfig (cyclomatic 17): EvalPackageResolver.resolvePackageConfig has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/eval_packages.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"52b50b9e7174c55b3f410a3a82f662f8d612ba3feab9f0c52ea7b43303e0f617"}},{"ruleId":"D1","level":"warning","message":{"text":"DartDevelopmentServiceImpl._startDDSServer (cyclomatic 17): DartDevelopmentServiceImpl._startDDSServer has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/dds_impl.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca022dd58f932f2e73cb856426dcc55c118d117f8d4c6a9d32e442ea80fbbbbe"}},{"ruleId":"D1","level":"warning","message":{"text":"StreamManager.streamListen (cyclomatic 17): StreamManager.streamListen has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/stream_manager.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbab6cd845ba54cdd5b4bd931c0496e3fbe57bdb2bec5aa144d3824a30b4dc64"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._is31BitUnsigned (cyclomatic 17): ProgramCompiler._is31BitUnsigned has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6283}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7773920a499575a480940dc4a1e08834de4ee90b24b08e8e11cc8964fad8079"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._emitSuperTarget (cyclomatic 17): ProgramCompiler._emitSuperTarget has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6579}}}],"partialFingerprints":{"codehealthFindingId/v1":"70f2321829b2410f9035bf441317daadbc0af105f96b8a5429d48cadcea38c2f"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler.emitLibrary (cyclomatic 17): LibraryCompiler.emitLibrary has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"64a5e1250ea95771b3d523986e339f562694c33a29e3341ca1aafb00b8833cd1"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._is31BitUnsigned (cyclomatic 17): LibraryCompiler._is31BitUnsigned has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6972}}}],"partialFingerprints":{"codehealthFindingId/v1":"74109ba986f902192f50644a2ce6a6c6c4ea7f6190f8b38feaba24ba7ecc184d"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._emitSuperTarget (cyclomatic 17): LibraryCompiler._emitSuperTarget has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7268}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6f901facb97910898982b9e09e8e492557299437d06361fccd47b4f897318e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpressionCompiler._findScopeAt (cyclomatic 17): ExpressionCompiler._findScopeAt has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"574b2b660bc31920aeca184a022b9769b5d5fdace6992969a999bb9915833f3f"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeLabeler.visitFunctionType (cyclomatic 17): TypeLabeler.visitFunctionType has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"f53c7b216b40f996ea665489349ba7caa8e993e5c6a2ecfa93c265fe43a83c4d"}},{"ruleId":"D1","level":"warning","message":{"text":"FactoryEncoding._isCyclicRedirectingFactory (cyclomatic 17): FactoryEncoding._isCyclicRedirectingFactory has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"705b36a08483c7b4517613833e6f84d5e6062a45c799244927abceaeb2fc6eb7"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl._buildConstructorInvocation (cyclomatic 17): BodyBuilderImpl._buildConstructorInvocation has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10756}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f382e56bb81e206af5c625c6bd967109f43d37303af3c8569da19e6736f09b6"}},{"ruleId":"D1","level":"warning","message":{"text":"ForwardingNode._createNoSuchMethodForwarder (cyclomatic 17): ForwardingNode._createNoSuchMethodForwarder has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"33cef4b08c74cff92dcc20a1b00e7d0bbf4ac4bd92d8f2d9dd2f23a6fae20067"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassHierarchyBuilder._getLegacyLeastUpperBoundInternal (cyclomatic 17): ClassHierarchyBuilder._getLegacyLeastUpperBoundInternal has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/hierarchy_builder.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"044348e9dca3936ab9fbd7c4af47082d05271d861ae0fffc5e7b30b7b6a013fd"}},{"ruleId":"D1","level":"warning","message":{"text":"_DeclarationBuilderRegistry.registerBuilder (cyclomatic 17): _DeclarationBuilderRegistry.registerBuilder has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/name_space_builder.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4e1848f468db2ec8d4bd728333476e068fef1324efa34bcc71163053135307c"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceLoader.computeLibraryScopes (cyclomatic 17): SourceLoader.computeLibraryScopes has cyclomatic complexity 17 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1700}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc9425c1f25427b1f370365570c8f3b7933485cd5472d826c0a5f7e515e4bd1a"}},{"ruleId":"D1","level":"warning","message":{"text":"SuccessfulInferenceResult.applyResult (cyclomatic 17): SuccessfulInferenceResult.applyResult has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_results.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c987006472a3d0f027352e0ad9d28d6751e54d386b5a39635e81bec8356b59c"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl.visitDotShorthandPropertyGet (cyclomatic 17): InferenceVisitorImpl.visitDotShorthandPropertyGet has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":14092}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb5345c4e7278c6acfcabcf959c9393802f74fc24b09f17590e3491695713c88"}},{"ruleId":"D1","level":"warning","message":{"text":"MatchingExpressionVisitor.visitObjectPattern (cyclomatic 17): MatchingExpressionVisitor.visitObjectPattern has cyclomatic complexity 17 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"254c444a113974f016deabefd68402135266b953ce87991c393fc36029c9e087"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitMethodDeclaration (cyclomatic 17): _Visitor.visitMethodDeclaration has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_renaming_method_parameters.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b4a57ffe0e0778fd17c1df59618c0f75a4b7cf96b64898bf4203da9fdc20d79"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._processExpression (cyclomatic 17): _Visitor._processExpression has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/switch_on_type.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a15b7c29435956125afdfc755593f0cb94bd13148fc1780260d539869132b62"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitLexeme (cyclomatic 17): _Visitor.visitLexeme has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_string_escapes.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"cac8bcae49dc14c917c3d4eda73d5aa9ac0e90ebfa28693f7e1299d0bf3f96f7"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._findAssignedField (cyclomatic 17): _Visitor._findAssignedField has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_declaring_parameters.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"2805e6c01a4ab9cd4d196b7b82ea8dcaf3aba8197404fb2ac393b38ec571daa4"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitIfElement (cyclomatic 17): _Visitor.visitIfElement has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_null_aware_elements.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e752734ca50c28b78671a0972db0b417e63ac155b54728f9de8591d68deed47"}},{"ruleId":"D1","level":"warning","message":{"text":"DwarfStackTraceDecoder.bind (cyclomatic 17): DwarfStackTraceDecoder.bind has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/convert.dart"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9b0e352de5025b964c3652ce33dd20d592a0b8b82d6bd53c23aff92946c0d1b"}},{"ruleId":"D1","level":"warning","message":{"text":"Isolate._update (cyclomatic 17): Isolate._update has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: ServiceObject._fromMap (cyclomatic 50) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":1708}}}],"partialFingerprints":{"codehealthFindingId/v1":"822960cae168c6fdd709427c07e039cfda80ff51cd1c5a2ab39c244519fff08a"}},{"ruleId":"D1","level":"warning","message":{"text":"Histogram.printCounts (cyclomatic 17): Histogram.printCounts has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/lib/src/histogram.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce211669309c7ff1a01004eed95b15e1bcfbfd7ce63709fe38e0f84c3d677962"}},{"ruleId":"D1","level":"warning","message":{"text":"Module.printAsWat (cyclomatic 17): Module.printAsWat has cyclomatic complexity 17 (threshold 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/module.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"99cf0b5d7a10162c1ffe4fce0f685f433a00d4d4c8c08268907e959ad365e303"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer.visitExtensionTypeDeclaration (cyclomatic 17): Printer.visitExtensionTypeDeclaration has cyclomatic complexity 17 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":1576}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b2525a96c4746bf9b633d06702abb755e6f94c49a72b26b9010a7b874a9fef4"}},{"ruleId":"D1","level":"warning","message":{"text":"_DeduplicateMixinKey.== (cyclomatic 17): _DeduplicateMixinKey.== has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/mixin_deduplication.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"75098cc870bc970bbd80cbec163648f55cefd4136cca0863d2bd66eb88617d42"}},{"ruleId":"D1","level":"warning","message":{"text":"_SelectorApproximation.observeArgs (cyclomatic 17): _SelectorApproximation.observeArgs has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce290a757252763a8e936cf4c670b45c339316d5b92b0eff1a16fbd3059ec2bb"}},{"ruleId":"D1","level":"warning","message":{"text":"_TFClassImpl._initDispatchTargets (cyclomatic 17): _TFClassImpl._initDispatchTargets has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9279dacd7ef96265a6d5ccdd49641909e2f49b06eaf29da3604be1d2921e609"}},{"ruleId":"D1","level":"warning","message":{"text":"SummaryCollector._makeNarrow (cyclomatic 17): SummaryCollector._makeNarrow has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":1379}}}],"partialFingerprints":{"codehealthFindingId/v1":"9634d95df862c45a2f46d62203ed53f37c97222b1ba208d05c337e3c4d189349"}},{"ruleId":"D1","level":"warning","message":{"text":"UnboxingInfoManager._updateUnboxingInfoOfMember (cyclomatic 17): UnboxingInfoManager._updateUnboxingInfoOfMember has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/unboxing_info.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cdb18eea99d45bf5d0a10d7789a5564fd687e6a94b8ab4177ab80bdd76c879c"}},{"ruleId":"D1","level":"warning","message":{"text":"IDLType.__init__ (cyclomatic 17): IDLType.__init__ has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":661}}}],"partialFingerprints":{"codehealthFindingId/v1":"899c70e4bfd5bf548afe6115a6ba8a78c2a82a62e69d779741866a4b8b570301"}},{"ruleId":"D1","level":"warning","message":{"text":"Dart2JSBackend._AddDirectNativeOperation (cyclomatic 17): Dart2JSBackend._AddDirectNativeOperation has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1943}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b09848e475360321d752b0ce80e9d444e9cb028bc4c8da5d9d272dacd4a9ab1"}},{"ruleId":"D1","level":"warning","message":{"text":"TemplateLoader._Preprocess (cyclomatic 17): TemplateLoader._Preprocess has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/templateloader.py"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b106a092244978c169ce05093973efd2eeae3d6cd6e429a6d1ec795192c6c9"}},{"ruleId":"D1","level":"warning","message":{"text":"sandbox.onRcpMessage (cyclomatic 17): sandbox.onRcpMessage has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/asset/sandbox.js"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e3a6a8607e6cee88f4fdcd58db812562b2e1e0698b9fab466603322e0b7582d"}},{"ruleId":"D1","level":"warning","message":{"text":"D3SymbolTreeMap.D3SymbolTreeMap._clone (cyclomatic 17): D3SymbolTreeMap.D3SymbolTreeMap._clone has cyclomatic complexity 17 (threshold 15). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"48f5862bb1886e8f90d99d0d81e3879ed0478f17609278e6beae5231699cca33"}},{"ruleId":"D1","level":"warning","message":{"text":"(anonymous)::hotRestart (cyclomatic 17): (anonymous)::hotRestart has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a99243a5a386090ec90a95154ff005739412de179ed1e518cd3c3b6eecb5b79"}},{"ruleId":"D1","level":"warning","message":{"text":"RelevanceDataCollector._argumentListContext (cyclomatic 16): RelevanceDataCollector._argumentListContext has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2170}}}],"partialFingerprints":{"codehealthFindingId/v1":"b83bdc771676b9131b2291db80f14f105a0f4777c8dea1463bb928f9ec428984"}},{"ruleId":"D1","level":"warning","message":{"text":"ExpectedCompletionsVisitor.safelyRecordEntity (cyclomatic 16): ExpectedCompletionsVisitor.safelyRecordEntity has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/visitors.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdf3c27b9a6e945457cf85affcd4d746109bf69ff513b106175ece0bf084e17c"}},{"ruleId":"D1","level":"warning","message":{"text":"AstNodeImplGenerator._buildImplClass (cyclomatic 16): AstNodeImplGenerator._buildImplClass has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"31376795cd1a0562405658d2152b6ad4f1c2a2304d4c9037ef8e0bd04d0bdf87"}},{"ruleId":"D1","level":"warning","message":{"text":"_CodeGenerator.checkIdl (cyclomatic 16): _CodeGenerator.checkIdl has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d4f1b10029223ce1923c7228d1d55044ec0c9a7908c7694722996bd530361f"}},{"ruleId":"D1","level":"warning","message":{"text":"_CodeGenerator._addFieldForGetter (cyclomatic 16): _CodeGenerator._addFieldForGetter has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"752219f56c4f749922b6841430cd9cf46fac75fdb7ae71525167e794680005ab"}},{"ruleId":"D1","level":"warning","message":{"text":"BytecodeGenerator._genConstructorInitializers (cyclomatic 16): BytecodeGenerator._genConstructorInitializers has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: BytecodeGenerator._genMethodInvocationUsingSpecializedBytecode (cyclomatic 29) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7dbad368a18eb9238e01f45daec67722f40f75355bf4e975cf51961dcf94ae"}},{"ruleId":"D1","level":"warning","message":{"text":"BytecodeGenerator._checkArguments (cyclomatic 16): BytecodeGenerator._checkArguments has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: BytecodeGenerator._genMethodInvocationUsingSpecializedBytecode (cyclomatic 29) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":2444}}}],"partialFingerprints":{"codehealthFindingId/v1":"9413a31652fb1c1c23e16909b98d38c98e79ea4aabd55a27c872ff21b35656b9"}},{"ruleId":"D1","level":"warning","message":{"text":"BytecodeDisassembler._decodeOperands (cyclomatic 16): BytecodeDisassembler._decodeOperands has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/disassembler.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"e74ab77452bca3f1378b5dd937de6ff9fc94ed5578d120919d00cc460149e971"}},{"ruleId":"D1","level":"warning","message":{"text":"DynamicForwarderCodeGenerator._generateDynamicMethodForwarder (cyclomatic 16): DynamicForwarderCodeGenerator._generateDynamicMethodForwarder has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":3902}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52242c48a175b8a0bbec4e394501124232bfec143c5fc095e2ca712b2dabdc0"}},{"ruleId":"D1","level":"warning","message":{"text":"Translator.convertType (cyclomatic 16): Translator.convertType has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Translator.toMostSpecificInterfaceType (cyclomatic 18) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1580}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac30f21fd3a0b74fafe4b58f93e6640bcb8ee69686ea8dbee22d05864263a8a"}},{"ruleId":"D1","level":"warning","message":{"text":"Translator._filterInferredType (cyclomatic 16): Translator._filterInferredType has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: Translator.toMostSpecificInterfaceType (cyclomatic 18) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":2163}}}],"partialFingerprints":{"codehealthFindingId/v1":"06232753c8f82168c6906f19ce73c3a7c84697e4e7651bada80e2145b5cad665"}},{"ruleId":"D1","level":"warning","message":{"text":"_ClosureArgumentsToVtableEntryDispatcherGenerator._handleOptionalNamedCase (cyclomatic 16): _ClosureArgumentsToVtableEntryDispatcherGenerator._handleOptionalNamedCase has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: Translator.toMostSpecificInterfaceType (cyclomatic 18) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":3271}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a91cdb3fb54f55f89b54da8b040e5b3ad4865eb68c762c4b5abbddf1c5c1002"}},{"ruleId":"D1","level":"warning","message":{"text":"_AstIndexerAndIgnoreCollectorBody._recordIfIsCallToNotExpectedCoverage (cyclomatic 16): _AstIndexerAndIgnoreCollectorBody._recordIfIsCallToNotExpectedCoverage has cyclomatic complexity 16 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":1300}}}],"partialFingerprints":{"codehealthFindingId/v1":"68399f873250a4c5a4f75dc32434ffe184bea2b0257ec21567936921ed2002c1"}},{"ruleId":"D1","level":"warning","message":{"text":"NaiveTypeChecker.checkOverride (cyclomatic 16): NaiveTypeChecker.checkOverride has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/naive_type_checker.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"0197f3edd8ff60c2df90c9096e5d14003f098d155996ba52d7b22b1359a05147"}},{"ruleId":"D1","level":"warning","message":{"text":"_VerifyingVisitor.visitFunctionNode (cyclomatic 16): _VerifyingVisitor.visitFunctionNode has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a7c815cc1131bffb7b1dee255276ab88a4db373bd5df2d0baf2339dbf91108e"}},{"ruleId":"D1","level":"warning","message":{"text":"DartFuzz._emitMinimizedLiteralHelper (cyclomatic 16): DartFuzz._emitMinimizedLiteralHelper has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: DartFuzz.emitSingleStatement (cyclomatic 18) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"9228b46723a7206ae942277072338bbef28cc3f25206c01a19b5d8c2a9908a35"}},{"ruleId":"D1","level":"warning","message":{"text":"_HttpOutgoing.close (cyclomatic 16): _HttpOutgoing.close has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: _HttpResponse._findReasonPhrase (cyclomatic 42) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1934}}}],"partialFingerprints":{"codehealthFindingId/v1":"922fe065e5aaae2055fad7a8813f4a21b820218b0f50121bfdaa9b7e21b94e46"}},{"ruleId":"D1","level":"warning","message":{"text":"_HttpParser._onDone (cyclomatic 16): _HttpParser._onDone has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"588c382100e52eec32a6f6aa72e3bc56083a7135b276de90aaf52e74a4bc0afe"}},{"ruleId":"D1","level":"warning","message":{"text":"_WebSocketImpl.connect (cyclomatic 16): _WebSocketImpl.connect has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":1356}}}],"partialFingerprints":{"codehealthFindingId/v1":"98c4398aa1b6fa43ad0a43a8522ab42c7943185cfac43a20ccd3a6366f97a002"}},{"ruleId":"D1","level":"warning","message":{"text":"_BigIntImpl.toDouble (cyclomatic 16): _BigIntImpl.toDouble has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1884}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4567540a75eeea6a08ddf4f8d3680dc8999ccba1b5f604eca147eb55b818f5f"}},{"ruleId":"D1","level":"warning","message":{"text":"_BigIntImpl.toDouble (cyclomatic 16): _BigIntImpl.toDouble has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/bigint_patch.dart"},"region":{"startLine":1902}}}],"partialFingerprints":{"codehealthFindingId/v1":"1703f7061109d7ed32e69249955afb2004e5e717a7c4c634dea1eea438dfe537"}},{"ruleId":"D1","level":"warning","message":{"text":"_GrowableList.addAll (cyclomatic 16): _GrowableList.addAll has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ed097b32718664b87c049d3620e323bf858263d84a4e2b13880013ff1814612"}},{"ruleId":"D1","level":"warning","message":{"text":"_BigIntImpl.toDouble (cyclomatic 16): _BigIntImpl.toDouble has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":2496}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c967921cb2884e1767813ab2cf1eeaacc25855eea8daf65985bb0451e80a428"}},{"ruleId":"D1","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringEscape (cyclomatic 16): _ChunkedJsonParser.parseStringEscape has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1377}}}],"partialFingerprints":{"codehealthFindingId/v1":"b23ae22c6ac483aad70da68a82694bacd6fd6f2955eb45dbf5b2399521c0e9e6"}},{"ruleId":"D1","level":"warning","message":{"text":"_WasmInstructionLowerer.visitBinaryIntOp (cyclomatic 16): _WasmInstructionLowerer.visitBinaryIntOp has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions. This is NOT this file\u0027s highest cyclomatic complexity: _WasmInstructionLowerer.canHandle (cyclomatic 21) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/cfg/to_wasm.dart"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ae9fdc7f03f8e7bb11488953898fa92cac42853836918c58fa54e54a5fce44"}},{"ruleId":"D1","level":"warning","message":{"text":"_SplayTree._splay (cyclomatic 16): _SplayTree._splay has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/splay_tree.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"e38abaeeab662631949b1b5277f473f52de4960b6bc333ab457c04cfbbc45464"}},{"ruleId":"D1","level":"warning","message":{"text":"_Uri._normalize (cyclomatic 16): _Uri._normalize has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2885}}}],"partialFingerprints":{"codehealthFindingId/v1":"0453648e15929d0210290de277cd698408f83be1b8573d25abd47faf91b27ce3"}},{"ruleId":"D1","level":"warning","message":{"text":"_Uri._uriDecode (cyclomatic 16): _Uri._uriDecode has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":3619}}}],"partialFingerprints":{"codehealthFindingId/v1":"69610902555c9483b117686bfbae6612bedeb436f4bdbe86be75db2173ae97b6"}},{"ruleId":"D1","level":"warning","message":{"text":"DebugInfo.== (cyclomatic 16): DebugInfo.== has cyclomatic complexity 16 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/data/debug_info.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae4d06718215f867a8200ae063392f4eb23b8105b7c8d864ca22cfc7f0b659ba"}},{"ruleId":"D1","level":"warning","message":{"text":"AstToIr._enterScope (cyclomatic 16): AstToIr._enterScope has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c2b2a93c24bc3b03aeda3e418ba13cf8c578ec73ce36a241b05f241ff2a314f"}},{"ruleId":"D1","level":"warning","message":{"text":"_FfiDefinitionTransformer._checkFieldAnnotations (cyclomatic 16): _FfiDefinitionTransformer._checkFieldAnnotations has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"d340f91586a94e02d427bb3561e407a680e68bd66c4a742339b3bbfd73d73edc"}},{"ruleId":"D1","level":"warning","message":{"text":"_FfiUseSiteTransformer._replaceNativeCall (cyclomatic 16): _FfiUseSiteTransformer._replaceNativeCall has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":2106}}}],"partialFingerprints":{"codehealthFindingId/v1":"e39b10424640a248811d01c8b320ff9f009dbfeae79ee2c4425ab6fb667ba5d1"}},{"ruleId":"D1","level":"warning","message":{"text":"ListPatternStaticType.witnessToDart (cyclomatic 16): ListPatternStaticType.witnessToDart has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/list.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"49fa9b8be9c50a9049beadef39d5f69619b23bc45a77b28828cab88389cd3ac4"}},{"ruleId":"D1","level":"warning","message":{"text":"Parser._isConstructor (cyclomatic 16): Parser._isConstructor has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: Parser.missingParameterMessage (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5721}}}],"partialFingerprints":{"codehealthFindingId/v1":"c25a89eca8ef2247eac0c16aaea66b88e6922dbd3c8a2c31ed8a972f2758d18d"}},{"ruleId":"D1","level":"warning","message":{"text":"Utf8BytesScanner.scanUntilLineEnd (cyclomatic 16): Utf8BytesScanner.scanUntilLineEnd has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"79d0c5633c8331c00ac761cd7b51ca680a8113fbef63d00c5a25b4a57e7bd8b7"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeAnalyzer.analyzeRecordPattern (cyclomatic 16): TypeAnalyzer.analyzeRecordPattern has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":2079}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e7ed96c038f366647ee4e5ac2357ac8fb9c6396819fe26dc8ab5936d99442f"}},{"ruleId":"D1","level":"warning","message":{"text":"DartUnitHighlightsComputer._addIdentifierRegion (cyclomatic 16): DartUnitHighlightsComputer._addIdentifierRegion has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"08c79460423890b0926254bb21c4f2863a66eb8322f80f7d8adb8030e86dec0d"}},{"ruleId":"D1","level":"warning","message":{"text":"ImportElementsComputer._computeUpdate (cyclomatic 16): ImportElementsComputer._computeUpdate has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/import_elements_computer.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e3afe47e7850812dd4548729e61653c2cee498caea3687e5492f4df53ca294"}},{"ruleId":"D1","level":"warning","message":{"text":"ResultMerger.mergeOutline (cyclomatic 16): ResultMerger.mergeOutline has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6aa5be25ade6ad98a6a5e4d550a5e90df6d99028acb08088fec2690df1e3a86"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._canAccessInstanceMember (cyclomatic 16): DeclarationHelper._canAccessInstanceMember has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1809}}}],"partialFingerprints":{"codehealthFindingId/v1":"6259d3ab05e9d41c0bad3eca9ea27cf4157ed8ae7b8be3b625fd1879205558e9"}},{"ruleId":"D1","level":"warning","message":{"text":"DeclarationHelper._suggestClass (cyclomatic 16): DeclarationHelper._suggestClass has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2036}}}],"partialFingerprints":{"codehealthFindingId/v1":"df1ce1a77a5e2552efc5998de408f743cbf7ad9e583646792de7af9eb68602f1"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitFieldDeclaration (cyclomatic 16): InScopeCompletionPass.visitFieldDeclaration has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b29169f8ad6e6cd24225d26398db7feb6b78198f09960809af989c5e677a632"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass.visitPropertyAccess (cyclomatic 16): InScopeCompletionPass.visitPropertyAccess has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2703}}}],"partialFingerprints":{"codehealthFindingId/v1":"e638ff947703f887ccad763c0301451dce91a0cfce0b36146156858711d76ff0"}},{"ruleId":"D1","level":"warning","message":{"text":"InScopeCompletionPass._forPattern (cyclomatic 16): InScopeCompletionPass._forPattern has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4096}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fb801bf8bfd4409c37da89770d3369f75f540de04ca405dadb9af65b6466e03"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementCompletionProcessor._complete_controlFlowBlock (cyclomatic 16): StatementCompletionProcessor._complete_controlFlowBlock has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b8fcab8f61e764ca2eb4674e7cc0bcd601a0f5242b1e40a67e888fb6eec555e"}},{"ruleId":"D1","level":"warning","message":{"text":"BulkFixProcessor._computeFixes (cyclomatic 16): BulkFixProcessor._computeFixes has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf81b22c8113afed05fa0fa2fe78937cb15f59aa826ae731bd7f924a1a24b3cf"}},{"ruleId":"D1","level":"warning","message":{"text":"_AddInvocation.compute (cyclomatic 16): _AddInvocation.compute has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_super_constructor_invocation.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"b35090499593accc0a2454311d558b5aa39ed4f32bf073665facc528e1689e85"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToContains.compute (cyclomatic 16): ConvertToContains.compute has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_contains.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d3bce481138cb004db3c570d1e719892a0938bb5cc92edf8fd0ed49fbb131f6"}},{"ruleId":"D1","level":"warning","message":{"text":"ConvertToPrimaryConstructor.compute (cyclomatic 16): ConvertToPrimaryConstructor.compute has cyclomatic complexity 16 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_primary_constructor.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"59acebc7a0e6f2565b6423b5e4554118418055b8a8b548abbb06dfd30ccc6382"}},{"ruleId":"D1","level":"warning","message":{"text":"CreateClass.producers (cyclomatic 16): CreateClass.producers has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_class.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef1be8fc1aa92f727bdad28e73689cf0a8c324b47cbbc35dacd8eb05294e0f0c"}},{"ruleId":"D1","level":"warning","message":{"text":"_CreateConstructor._computeWithSuperParameters (cyclomatic 16): _CreateConstructor._computeWithSuperParameters has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"088cb2aaa539a11be30fee73ac1d9d13fb2beb6dc571194871e1f8a2c4dceb5d"}},{"ruleId":"D1","level":"warning","message":{"text":"EncapsulateField.compute (cyclomatic 16): EncapsulateField.compute has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8952917fa281b5a6fa53bdb2a1c5b595ef4ad10abd9db59245a2b66ff2b7d12"}},{"ruleId":"D1","level":"warning","message":{"text":"_ReplacementEditBuilder.visitSimpleIdentifier (cyclomatic 16): _ReplacementEditBuilder.visitSimpleIdentifier has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"10ef11b335b7c2aa2da0965ebd8b4ecb116a5492ecd3cf4be30c8009bc436d06"}},{"ruleId":"D1","level":"warning","message":{"text":"FlutterParentAndChild.swapParentAndChild (cyclomatic 16): FlutterParentAndChild.swapParentAndChild has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_swap_with_child.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"d56788d452be6a43ba0fad7cd3c48daebbb22e2d64f30da06531e3ef979414f7"}},{"ruleId":"D1","level":"warning","message":{"text":"RenameToCamelCase.compute (cyclomatic 16): RenameToCamelCase.compute has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/rename_to_camel_case.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e2a98246b39396c924cf29651eda83ffaca6ac44113d71aacc014b791b5b11"}},{"ruleId":"D1","level":"warning","message":{"text":"ReplaceIfElseWithConditional.compute (cyclomatic 16): ReplaceIfElseWithConditional.compute has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_if_else_with_conditional.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb65feee0d6a733ca2dc3ea1767b24e1b63763b2a85d83ea11c2ae20e774f074"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyDescription._changeCode (cyclomatic 16): PropertyDescription._changeCode has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/property.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"49378f737992871692f654b7aa0b248689223c8441b154a0f5344baa202b6ff5"}},{"ruleId":"D1","level":"warning","message":{"text":"RenameRefactoring.create (cyclomatic 16): RenameRefactoring.create has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad537ff1f2ba7fb83aadc4abce283f9368a960ebdf1758c5dda73724e5e298c5"}},{"ruleId":"D1","level":"warning","message":{"text":"PluginServer._getResponse (cyclomatic 16): PluginServer._getResponse has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"26694dcdfc31bddb5d3f1e2e4916bcc231be387a79c35a746957bce9df1a4e52"}},{"ruleId":"D1","level":"warning","message":{"text":"_ParsedPluginsData.parse (cyclomatic 16): _ParsedPluginsData.parse has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1526}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ddc9ffb9fcab0f5633505fd75e5f3498be14384d34024283b0db379fb44ca0f"}},{"ruleId":"D1","level":"warning","message":{"text":"AnalysisDriver.performWork (cyclomatic 16): AnalysisDriver.performWork has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":1182}}}],"partialFingerprints":{"codehealthFindingId/v1":"913773f152119368674b392c2b828e43a4fd734ae0e18846138b458f33e9d897"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryAnalyzer._resolvePartDirective (cyclomatic 16): LibraryAnalyzer._resolvePartDirective has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"584c5cb72ae9c7e9f06184cf116b410a99459aacab6934c96753586c92fd20ef"}},{"ruleId":"D1","level":"warning","message":{"text":"_FindDeclarations.compute (cyclomatic 16): _FindDeclarations.compute has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"63d71b9cec429541d9c9529158946efb52e7f5e3440bcd5b185693f35a2ca303"}},{"ruleId":"D1","level":"warning","message":{"text":"StringLexemeHelper.StringLexemeHelper (cyclomatic 16): StringLexemeHelper.StringLexemeHelper has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: V1Projection._sourceOf (cyclomatic 25) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52415}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d18f0f521ae758941ae668fdf494b85a0327c24833b5eea5607547b2a839df5"}},{"ruleId":"D1","level":"warning","message":{"text":"ToSourceVisitor._visitParsedExpression (cyclomatic 16): ToSourceVisitor._visitParsedExpression has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart"},"region":{"startLine":1934}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f9e2b6f3d07d1c07aeb4ac820ee90a3a3d7b3a9ed86a1ab9def3567717d1ed"}},{"ruleId":"D1","level":"warning","message":{"text":"_Collector._typedLiteral (cyclomatic 16): _Collector._typedLiteral has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"b11fcd8ffda3ada9a8403ed886c4ca14522978d8c59e561a4870599f6adda222"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryFragmentImpl.shouldIgnoreUndefined (cyclomatic 16): LibraryFragmentImpl.shouldIgnoreUndefined has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":8123}}}],"partialFingerprints":{"codehealthFindingId/v1":"8747b4ed01eefa210b933fc9913fff67a2262d3eb785a621d4fbe3b3bb56306c"}},{"ruleId":"D1","level":"warning","message":{"text":"InheritanceManager3._inheritCovariance (cyclomatic 16): InheritanceManager3._inheritCovariance has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":1059}}}],"partialFingerprints":{"codehealthFindingId/v1":"25ac2bd148c58dbea17ae24ca12bf02261efca5640f7c7e41d279da95936ccbb"}},{"ruleId":"D1","level":"warning","message":{"text":"NormalizeHelper._normalize (cyclomatic 16): NormalizeHelper._normalize has cyclomatic complexity 16 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/normalize.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"44bee210f2a5bba1c7bea20d0da4314e91c0e128cece1c4e9b8fa48896de510c"}},{"ruleId":"D1","level":"warning","message":{"text":"TopMergeHelper._functionTypes (cyclomatic 16): TopMergeHelper._functionTypes has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/top_merge.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"c59b66b3fff7835ea3c0114fc5e1847fc26f113a6bedfde229d61811eadc8c32"}},{"ruleId":"D1","level":"warning","message":{"text":"ElementBindingVisitor.visitCompilationUnit (cyclomatic 16): ElementBindingVisitor.visitCompilationUnit has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"35ab530b216d72c9f7fd06c320e94548592967361438c7cb8067ed351cb73444"}},{"ruleId":"D1","level":"warning","message":{"text":"ExitDetector.visitForElement (cyclomatic 16): ExitDetector.visitForElement has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee7e3c012a299ffcfa78a029c926932defe44243aadac8bec26be9729c587729"}},{"ruleId":"D1","level":"warning","message":{"text":"ExitDetector.visitForStatement (cyclomatic 16): ExitDetector.visitForStatement has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6fd7e228edd1e754873e7270542e0736e1c2cb67bd1b9a52424459a6cbb3444"}},{"ruleId":"D1","level":"warning","message":{"text":"FlowAnalysisHelper.getLabelTarget (cyclomatic 16): FlowAnalysisHelper.getLabelTarget has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"32c79add04a4d994d5bf7f406255e80227ac1af037a47db55c10b446d3f5fbd7"}},{"ruleId":"D1","level":"warning","message":{"text":"ForResolver._forEachParts (cyclomatic 16): ForResolver._forEachParts has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/for_resolver.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"768ee28efbf426d9b1943407bd09a73c164afd2701fd9f256c97f2b6fdc8079f"}},{"ruleId":"D1","level":"warning","message":{"text":"CallInvocationResolver.resolve (cyclomatic 16): CallInvocationResolver.resolve has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"af0cccd4109a5981b0ea705016c696d40ca5430c7bab6955b023b0f879709422"}},{"ruleId":"D1","level":"warning","message":{"text":"IncrementOrDecrementResolver.resolve (cyclomatic 16): IncrementOrDecrementResolver.resolve has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/increment_or_decrement_resolver.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e517a3dec915d355dcdd57e8333499325c23fabea359830812dc021ed6455f3"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodInvocationResolver._resolveQualifiedInvocation (cyclomatic 16): MethodInvocationResolver._resolveQualifiedInvocation has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":1227}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf57155012b6ad9ea38e8141c1b80939a511f19cab23264c7145342e6f861abf"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotationVerifier._checkInternal (cyclomatic 16): AnnotationVerifier._checkInternal has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"5839213ec4832d3c158dbb135bbc693f79803c2a0c4af71643149f5c77b26a05"}},{"ruleId":"D1","level":"warning","message":{"text":"IgnoreValidator._reportUnnecessaryOrRemovedOrDeprecatedIgnores (cyclomatic 16): IgnoreValidator._reportUnnecessaryOrRemovedOrDeprecatedIgnores has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/ignore_validator.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7938a3be113e801427c21194e1fe8b97eb69b03ad64c736fa0c9fd0e9f6956b"}},{"ruleId":"D1","level":"warning","message":{"text":"_ClassVerifier._reportConcreteClassWithAbstractMember (cyclomatic 16): _ClassVerifier._reportConcreteClassWithAbstractMember has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"721fd9709f1748b4debd944534b6ea5fb321aad9397cad9061b94c537d9c8585"}},{"ruleId":"D1","level":"warning","message":{"text":"MustCallSuperVerifier._findOverriddenMemberWithMustCallSuper (cyclomatic 16): MustCallSuperVerifier._findOverriddenMemberWithMustCallSuper has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/must_call_super_verifier.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"8adf07b1cf6f7813eae04319209e19d4c6756b83d6f6c40e41a572768c04b5b7"}},{"ruleId":"D1","level":"warning","message":{"text":"_CharacterSequenceFromMultiLineComment.next (cyclomatic 16): _CharacterSequenceFromMultiLineComment.next has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: DocCommentBuilder._parseDocDirectiveTag (cyclomatic 19) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":997}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d20b0ebd823c1b8add995cd2f59cbac12017f837330c672c1bce2078b9a269b"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier.visitFieldDeclaration (cyclomatic 16): ErrorVerifier.visitFieldDeclaration has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: ErrorVerifier._checkForInvalidInstanceMemberAccess2 (cyclomatic 17) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":1208}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3ca0b8421fbca3e4284b213eea700424f809a16d63b8303e9137227ea5d508c"}},{"ruleId":"D1","level":"warning","message":{"text":"ErrorVerifier._checkForNotInitializedFieldDeclaration (cyclomatic 16): ErrorVerifier._checkForNotInitializedFieldDeclaration has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: ErrorVerifier._checkForInvalidInstanceMemberAccess2 (cyclomatic 17) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":7248}}}],"partialFingerprints":{"codehealthFindingId/v1":"809f07d4b5af6a4725328804cf5ef7112a715795bbdd73337ed4720f2d98164d"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier._validateAddressReceiver (cyclomatic 16): FfiVerifier._validateAddressReceiver has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1403}}}],"partialFingerprints":{"codehealthFindingId/v1":"81b5de6d278fbd5e402035bc47874f5e96527f5f42c5be876b44f7ef8482656b"}},{"ruleId":"D1","level":"warning","message":{"text":"FfiVerifier._validateFfiMethodInvocation (cyclomatic 16): FfiVerifier._validateFfiMethodInvocation has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1780}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c78f63a140eb057425392efba9544a115a0ffdcbb3b536dda20b0b9f657eecc"}},{"ruleId":"D1","level":"warning","message":{"text":"IgnoreInfo.isIgnoreComment (cyclomatic 16): IgnoreInfo.isIgnoreComment has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/ignore_comments/ignore_info.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"8068ec852c8b6efca18160a661fadbba2a473ad2428362fb8505d354ad4a58ac"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultTypesBuilder._findRawTypePathsToDeclaration (cyclomatic 16): DefaultTypesBuilder._findRawTypePathsToDeclaration has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/default_types_builder.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"3312ce9a8dcb6527a054181026951ccd94330d3e812062a354fe7fae1e867ba2"}},{"ruleId":"D1","level":"warning","message":{"text":"ElementBuilder._buildTopFragments (cyclomatic 16): ElementBuilder._buildTopFragments has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"4023336386375c13e9f5193b61b739a77da97be305c8e0d0f232f76b58419483"}},{"ruleId":"D1","level":"warning","message":{"text":"CommandLineOptions._parse (cyclomatic 16): CommandLineOptions._parse has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/options.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ddf2dac2c58ae5111f14547e6aa8346905bff60bf4c638352dde0852f99be93"}},{"ruleId":"D1","level":"warning","message":{"text":"CompletionTarget._computeDroppedToken (cyclomatic 16): CompletionTarget._computeDroppedToken has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9edc70a1fb0ad35b0793f20b059032f93f17071c2eafe156f6f5b71522f7e9d"}},{"ruleId":"D1","level":"warning","message":{"text":"DumpInfoTask.buildDumpInfoDataNew (cyclomatic 16): DumpInfoTask.buildDumpInfoDataNew has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1913}}}],"partialFingerprints":{"codehealthFindingId/v1":"a620e4bc84357493bc76be50aec3a2ca18192d427f3a9467439cb0437b9df742"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeSystem.joinTypeMasks (cyclomatic 16): TypeSystem.joinTypeMasks has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_system.dart"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbbd1f82c6786010a76b0578a7276dfd638f362c409ea04606f7e7454a7c6c1c"}},{"ruleId":"D1","level":"warning","message":{"text":"FlatTypeMask._intersection (cyclomatic 16): FlatTypeMask._intersection has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"02bde8b0b7200436237b519b2b30882e4263300207b209cd9cb65e509811aff4"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeMask.getNotNormalizedReason (cyclomatic 16): TypeMask.getNotNormalizedReason has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d2eea460c8b79172a2af4237c24762db272c85ce36600b458abe662f1c515f"}},{"ruleId":"D1","level":"warning","message":{"text":"_RecipeGenerator.visitFunctionType (cyclomatic 16): _RecipeGenerator.visitFunctionType has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_new.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1cfa7c60c50eb456fea9a33a149a618974a98c8a30bacccb95354ee5617e1ca"}},{"ruleId":"D1","level":"warning","message":{"text":"_RecipeToIdentifier.visitFunctionType (cyclomatic 16): _RecipeToIdentifier.visitFunctionType has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/type_reference.dart"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"58ac932556f4d74c0ec8c974d9a1866a1238262a0d9f980da5fb0d9461ba6d2d"}},{"ruleId":"D1","level":"warning","message":{"text":"FieldVisitor.visitFields (cyclomatic 16): FieldVisitor.visitFields has cyclomatic complexity 16 (threshold 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1470f36ed44c7f2d2883b1c7d0a1035c4509a4dca0c0d6c033b16844979a24"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelAnnotationProcessor.extractJsInteropAnnotations (cyclomatic 16): KernelAnnotationProcessor.extractJsInteropAnnotations has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"704b7848cec03ac49898ffbf7127178fe83c47d8ae0ae777e2ad01e49f1d30eb"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder.visitStaticInvocation (cyclomatic 16): KernelSsaGraphBuilder.visitStaticInvocation has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5079}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d59b33b7818c9177f154c72b05a9376c4cd4e374d65d6d865bb0942ef2f97ee"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder._handleInvokeFactoryConstructor (cyclomatic 16): KernelSsaGraphBuilder._handleInvokeFactoryConstructor has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5196}}}],"partialFingerprints":{"codehealthFindingId/v1":"817bec5ead3fc5eaf668dba9ee940d422868ace0f110ba5fee8079a21b4e19b6"}},{"ruleId":"D1","level":"warning","message":{"text":"KernelSsaGraphBuilder._setupStateForInlining (cyclomatic 16): KernelSsaGraphBuilder._setupStateForInlining has cyclomatic complexity 16 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8333}}}],"partialFingerprints":{"codehealthFindingId/v1":"811c994dcb48f84e27664c936c2fc1ca6c13515f61af8b15c156faddd1a2c365"}},{"ruleId":"D1","level":"warning","message":{"text":"InlineData.toString (cyclomatic 16): InlineData.toString has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9089}}}],"partialFingerprints":{"codehealthFindingId/v1":"69028f080bbce1ffd03a38fc098f04b296d97eb9341be6963a78124ef564aa03"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSimplifier.visitInvokeDynamicMethod (cyclomatic 16): SsaInstructionSimplifier.visitInvokeDynamicMethod has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1028}}}],"partialFingerprints":{"codehealthFindingId/v1":"b67c99f8280114e2a456e8f586070ec2fd9405c076902a924541bf6ad13fc479"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSimplifier.visitInvokeDynamicSetter (cyclomatic 16): SsaInstructionSimplifier.visitInvokeDynamicSetter has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2136}}}],"partialFingerprints":{"codehealthFindingId/v1":"504c6e1417da29d7007a07ba8ac811d6a7a6a07314351b24a31d88bdf181212d"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSimplifier.visitStringify (cyclomatic 16): SsaInstructionSimplifier.visitStringify has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2407}}}],"partialFingerprints":{"codehealthFindingId/v1":"2975e8d96be4ca9f8b28e7f683f7eae191c0746a5def85000ab070bc3ca83be0"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSimplifier.visitBitOr (cyclomatic 16): SsaInstructionSimplifier.visitBitOr has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2862}}}],"partialFingerprints":{"codehealthFindingId/v1":"458903bd3b61449929d5dfb9db7c1b1cedab52ce75d38f1412663146f26ab98a"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaInstructionSimplifier.visitArrayFlagsCheck (cyclomatic 16): SsaInstructionSimplifier.visitArrayFlagsCheck has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3030}}}],"partialFingerprints":{"codehealthFindingId/v1":"76df09f9e2a7d0363b511b778db2ede554e8306dc7dcebafe9748a48024e9eb3"}},{"ruleId":"D1","level":"warning","message":{"text":"SsaValueRangeAnalyzer.visitBoundsCheck (cyclomatic 16): SsaValueRangeAnalyzer.visitBoundsCheck has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"83b3ac7df60100eb14058085186b1b900be81abe5a9d9f02e0090f9791f48f4f"}},{"ruleId":"D1","level":"warning","message":{"text":"JsBuilder._irregularEscape (cyclomatic 16): JsBuilder._irregularEscape has cyclomatic complexity 16 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing. This is NOT this file\u0027s highest cyclomatic complexity: MiniJsParser.categoryToString (cyclomatic 23) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"9372b155e86c83adbc57c6002fb44e4f362ceb2519c2b0be528e246b0dbc8c66"}},{"ruleId":"D1","level":"warning","message":{"text":"ProgramCompiler._directCastMethod (cyclomatic 16): ProgramCompiler._directCastMethod has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7827}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea0f37c1bf798991395de870772c06de400309c5d2e2722d0f61b77d60d06f7"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._emitJSInteropClassNonExternalMembers (cyclomatic 16): LibraryCompiler._emitJSInteropClassNonExternalMembers has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1601}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d7a77e1fbbc90aa5587df9bfe8e26a2922dc8edad22669096c33b4e7b5ad7c"}},{"ruleId":"D1","level":"warning","message":{"text":"LibraryCompiler._directCastMethod (cyclomatic 16): LibraryCompiler._directCastMethod has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8695}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1df6d4b70370f1f66461bbb014e6459c82f7e8e005c695f23f049ac62438aec"}},{"ruleId":"D1","level":"warning","message":{"text":"AppInspector._populateScriptCaches (cyclomatic 16): AppInspector._populateScriptCaches has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/inspector.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"85613612f0bfc604724d032ddfec520be2b4442b8bfbbe725ae56028b2b19667"}},{"ruleId":"D1","level":"warning","message":{"text":"DevHandler._handleMessage (cyclomatic 16): DevHandler._handleMessage has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This is NOT this file\u0027s highest cyclomatic complexity: DevHandler._deserializeMessage (cyclomatic 18) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/handlers/dev_handler.dart"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d134cc7f1a85ad55554b33224e362e404a37aac66e851a7e42c07cd68835eb7"}},{"ruleId":"D1","level":"warning","message":{"text":"ProcessedOptions.validateOptions (cyclomatic 16): ProcessedOptions.validateOptions has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"97cbc631c508a75f7de437bfbdedc05486eeff87c96ae079445d41a55df88f3e"}},{"ruleId":"D1","level":"warning","message":{"text":"FactoryEncoding.checkRedirectingFactory (cyclomatic 16): FactoryEncoding.checkRedirectingFactory has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2543fd7c23630b5aafd7b1d0055e62a677926949e7d8fc008b573d0a270b0c"}},{"ruleId":"D1","level":"warning","message":{"text":"FactoryEncoding._computeRedirecteeType (cyclomatic 16): FactoryEncoding._computeRedirecteeType has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fad057542ffcd1f7cdebe825fdd0bf06ea76e231e426c37019286f20f4bd1ea"}},{"ruleId":"D1","level":"warning","message":{"text":"BodyBuilderImpl.pushQualifiedReference (cyclomatic 16): BodyBuilderImpl.pushQualifiedReference has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9772}}}],"partialFingerprints":{"codehealthFindingId/v1":"299aee6de0824cc9c1d6f062ab1398fceab95b065177b88ba189f965861019d7"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator.visitLogicalExpression (cyclomatic 16): ConstantEvaluator.visitLogicalExpression has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4610}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c887bada336cd0b91f76ace48587d74ae2c092afe831bf932208ed59d46db6c"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstantEvaluator._handleFromEnvironment (cyclomatic 16): ConstantEvaluator._handleFromEnvironment has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5109}}}],"partialFingerprints":{"codehealthFindingId/v1":"d60d7373e0c4984425117c090fc341e6e815e8cd76af2b7374fd18dce1da76e5"}},{"ruleId":"D1","level":"warning","message":{"text":"DelayedAssignment.handleAssignment (cyclomatic 16): DelayedAssignment.handleAssignment has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":6080}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4e3d567164867fc4491fe28287da2952edff0f12e4f6e6253e1783c1c6729a3"}},{"ruleId":"D1","level":"warning","message":{"text":"_Overrides.collectOverrides (cyclomatic 16): _Overrides.collectOverrides has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":2935}}}],"partialFingerprints":{"codehealthFindingId/v1":"47f9a10c809b71bd867122bff9f5f7cd250508069d902f7cf251e364643cf161"}},{"ruleId":"D1","level":"warning","message":{"text":"BuilderFactory._createMethodBuilder (cyclomatic 16): BuilderFactory._createMethodBuilder has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: BuilderFactory._createBuilder (cyclomatic 20) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":966}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a272a57a284e7a6a6546c0c8e40de5c2e231c7ce93b8eb402a97943dcd24e62"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceClassBuilder.build (cyclomatic 16): SourceClassBuilder.build has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"2af6d97e1a3273d243ce1c55c32c9ecc14955616627e1c47121924aa526ed5fb"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceLibraryBuilder.addImportsToScope (cyclomatic 16): SourceLibraryBuilder.addImportsToScope has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: SourceLibraryBuilder.checkPendingBoundsChecks (cyclomatic 33) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ca695f05af7be2af3c8f4ba5525810df8bc8ce2ba0e37e7159595393efb1be"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceLibraryBuilder.checkTypesInOutline (cyclomatic 16): SourceLibraryBuilder.checkTypesInOutline has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: SourceLibraryBuilder.checkPendingBoundsChecks (cyclomatic 33) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe00d94f507b31e396ac940527f766bb34f3e7a506e1452fc1a276203e717ec3"}},{"ruleId":"D1","level":"warning","message":{"text":"SourceLoader.tokenize (cyclomatic 16): SourceLoader.tokenize has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"21a1ab72cfd4f22853fc7242ed2435376132344d6a7ecd246f9861213fa3d304"}},{"ruleId":"D1","level":"warning","message":{"text":"_AsyncContext._checkValidReturn (cyclomatic 16): _AsyncContext._checkValidReturn has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"20609213a330c58b3160e8487ebd7169acedfacd61e4881fdc140884df8e2392"}},{"ruleId":"D1","level":"warning","message":{"text":"InferenceVisitorImpl.visitAnonymousMethodBlock (cyclomatic 16): InferenceVisitorImpl.visitAnonymousMethodBlock has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top. This is NOT this file\u0027s highest cyclomatic complexity: InferenceVisitorImpl.visitRelationalPattern (cyclomatic 38) is higher and carries no row of its own \u2014 it was excluded as a flat dispatcher (a long switch/match over independent cases: many branches, almost no nesting), which this dimension does not treat as a refactor obligation. It is named here so the ranking you see in this file is not mistaken for the whole of it; the excluded method is counted neither in this dimension\u0027s figures nor in its score."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":9366}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ec297ede80b71d3a13a43a59192919d1c6ad0f42801598b923fec9ab69a5440"}},{"ruleId":"D1","level":"warning","message":{"text":"ReferenceName.fromNamedNode (cyclomatic 16): ReferenceName.fromNamedNode has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/equivalence_helpers.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"a27779a21a0e69f1912d466a866d6c3e543f56f3cea0323c35a51d45693bcb49"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitCompilationUnit (cyclomatic 16): _Visitor.visitCompilationUnit has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/dangling_library_doc_comments.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"255ffec1a25340a6431f83e13bcdb05bc7d3251f9a4ceb0d583664fe82f75801"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitSwitchStatement (cyclomatic 16): _Visitor.visitSwitchStatement has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/exhaustive_cases.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b3fbadc2300867f66e402f7ac2f19e045ce4985ca28cbfa7d1b3e9b8a95200f"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor.visitDeclaredVariablePattern (cyclomatic 16): _Visitor.visitDeclaredVariablePattern has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_final_locals.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"53f14cbaace68f76b66361cd13a946a42d4eecf97354ce8053379aff1b130964"}},{"ruleId":"D1","level":"warning","message":{"text":"_ConstructorChecker._checkInitializer (cyclomatic 16): _ConstructorChecker._checkInitializer has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_initializing_formals.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"294219cd5238cc4509f3af166dd365abbd474dfa089adf52016c7727a7d642b8"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._checkBody (cyclomatic 16): _Visitor._checkBody has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_async.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe66887d40b0d058a40ff990e3a6001ab06be9b4474751b1c0f940b8485f393e"}},{"ruleId":"D1","level":"warning","message":{"text":"_Visitor._checkConstructor (cyclomatic 16): _Visitor._checkConstructor has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_key_in_widget_constructors.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"888ae5f8b886bb8944fca4cce6af0f773fcff2febf34925654055f6d656c1e27"}},{"ruleId":"D1","level":"warning","message":{"text":"ScriptInsetElement._refreshSourceReport (cyclomatic 16): ScriptInsetElement._refreshSourceReport has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb54a0017c274f8da22576f9e3a67c5c24c74a7e0acfea3ed3fa901e2c793dd"}},{"ruleId":"D1","level":"warning","message":{"text":"Printer.writeFunction (cyclomatic 16): Printer.writeFunction has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"931d318a42c911689748d9e17159559af38aaaf6c9b6e8fad72eb217f33fb7eb"}},{"ruleId":"D1","level":"warning","message":{"text":"WidgetCreatorTracker._getPragmaName (cyclomatic 16): WidgetCreatorTracker._getPragmaName has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"907db993a6200594f6e57ebb31256cf0959bab417e8464c716d1d407719bb8b6"}},{"ruleId":"D1","level":"warning","message":{"text":"TypesBuilder.fromStaticType (cyclomatic 16): TypesBuilder.fromStaticType has cyclomatic complexity 16 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e03654720f9fb547a30d1f46b986766dce3f80a66a19db77bf345587f6f644"}},{"ruleId":"D1","level":"warning","message":{"text":"ConcreteType.isSubtypeOfRuntimeType (cyclomatic 16): ConcreteType.isSubtypeOfRuntimeType has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1249}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f4375e944c9df98ed33acb8d1a36bc90625a96ce2eedd991327335cfead1e78"}},{"ruleId":"D1","level":"warning","message":{"text":"SimpleUnreachableCodeElimination.visitSwitchStatement (cyclomatic 16): SimpleUnreachableCodeElimination.visitSwitchStatement has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/unreachable_code_elimination.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ec56348eac88bf50100f9c2e6940a06382b4edc6fe0625b6dddba648355fc8c"}},{"ruleId":"D1","level":"warning","message":{"text":"IDLExtAttrs.__init__ (cyclomatic 16): IDLExtAttrs.__init__ has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ec02f95bb789aca2041cc2264129a27a01b126a37fab136a8a568a3df09d52"}},{"ruleId":"D1","level":"warning","message":{"text":"DartiumBackend._GenerateNativeBinding (cyclomatic 16): DartiumBackend._GenerateNativeBinding has cyclomatic complexity 16 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c12859fe314cb37cf7056ff26c947ceb45d3eced28317b3e355e756f7bd102c"}},{"ruleId":"D1","level":"warning","message":{"text":"D3SymbolTreeMap.D3SymbolTreeMap._showInfoBox (cyclomatic 16): D3SymbolTreeMap.D3SymbolTreeMap._showInfoBox has cyclomatic complexity 16 (threshold 15). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"548da039747ce20847a5fbc1a2d472f5235dd8e54a323575a801555605870de3"}},{"ruleId":"D2","level":"warning","message":{"text":"AstWriter._computeProperties (cognitive 690): AstWriter._computeProperties has cognitive complexity 690 (threshold 15). Drivers by points: if/else 75 (690 pts) (nesting depth added 615). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/utilities/ast_writer.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0940de565d7dedc5a8cf44649cced89379cd86006ad1ccc3b76b2db7a9a040a"}},{"ruleId":"D2","level":"warning","message":{"text":"RequirementsManifest.isSatisfied (cognitive 305): RequirementsManifest.isSatisfied has cognitive complexity 305 (threshold 15). Drivers by points: if/else 84 (246 pts), loops 25 (59 pts) (nesting depth added 196). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/requirements.dart"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"50915b7df3528a8d18a7b37809c8bad7796d33739eae9ae63a8fbafbc6282c1e"}},{"ruleId":"D2","level":"warning","message":{"text":"_Processor.calculate (cognitive 271): _Processor.calculate has cognitive complexity 271 (threshold 15). Drivers by points: if/else 46 (191 pts), loops 19 (68 pts), boolean chains 12 (nesting depth added 194). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"098d169be22a66eb71a7a29d35463b054b169b35ccd098dd3bc773f9a35a522e"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeUseGenerator.buildSelectorAccess (cognitive 248): TypeUseGenerator.buildSelectorAccess has cognitive complexity 248 (threshold 15). Drivers by points: if/else 48 (157 pts), ternaries 8 (33 pts), loops 4 (31 pts), match/switch 4 (16 pts), boolean chains 11 (nesting depth added 173). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":4698}}}],"partialFingerprints":{"codehealthFindingId/v1":"8846e42a5403d6005e19e2158ab3ebb81449e268c9bed13c20b6429914497044"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpParser._doParse (cognitive 242): _HttpParser._doParse has cognitive complexity 242 (threshold 15). Drivers by points: if/else 90 (203 pts), boolean chains 27, loops 3 (10 pts), match/switch 1 (2 pts) (nesting depth added 121). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"34f183b7f6e321d0cc37f438b51a18afc8db43396b49735a2b1d63032586126d"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantsTransformer.visitPatternSwitchStatement (cognitive 203): ConstantsTransformer.visitPatternSwitchStatement has cognitive complexity 203 (threshold 15). Drivers by points: if/else 40 (108 pts), loops 27 (86 pts), boolean chains 6, ternaries 1 (3 pts) (nesting depth added 129). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec575baf2a32375dc7dfd3e89a4b16278f4111873502eade6a7f564e655900c7"}},{"ruleId":"D2","level":"warning","message":{"text":"DartTypes._subtypeHelper (cognitive 196): DartTypes._subtypeHelper has cognitive complexity 196 (threshold 15). Drivers by points: if/else 51 (140 pts), loops 9 (34 pts), boolean chains 15, match/switch 1 (4 pts), ternaries 1 (3 pts) (nesting depth added 119). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1949}}}],"partialFingerprints":{"codehealthFindingId/v1":"da69296ebdb8883c6f2b6f3ea60094ddbdb6c9c47044f1e13e70388027b7b1d6"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl._binaryGcd (cognitive 181): _BigIntImpl._binaryGcd has cognitive complexity 181 (threshold 15). Drivers by points: if/else 62 (142 pts), boolean chains 24, loops 8 (14 pts), ternaries 1 (nesting depth added 86). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"f021dca607d57efb8cc8f3965a3e55f3193f80e2b578ca2f7aeb755484aa6db8"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl._binaryGcd (cognitive 181): _BigIntImpl._binaryGcd has cognitive complexity 181 (threshold 15). Drivers by points: if/else 62 (142 pts), boolean chains 24, loops 8 (14 pts), ternaries 1 (nesting depth added 86). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/bigint_patch.dart"},"region":{"startLine":1523}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5638d1982c93c1e642f3aaa93df69d46f976e3e376cbcab2dcaba2b0ee24d63"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl._binaryGcd (cognitive 180): _BigIntImpl._binaryGcd has cognitive complexity 180 (threshold 15). Drivers by points: if/else 62 (142 pts), boolean chains 24, loops 8 (14 pts) (nesting depth added 86). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":2112}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb42de840157c85e67235ae30b2e2b97be993a4c07058fc6cd4be50812a8d0b0"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.resolveAndBuildConstructorInvocation (cognitive 164): BodyBuilderImpl.resolveAndBuildConstructorInvocation has cognitive complexity 164 (threshold 15). Drivers by points: if/else 44 (108 pts), ternaries 4 (18 pts), boolean chains 16, loops 2 (11 pts), match/switch 4 (11 pts) (nesting depth added 94). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9979}}}],"partialFingerprints":{"codehealthFindingId/v1":"984a2f921f435b9dbeb67f8934a34598e621106cf0ff2d3777a354ce4553dfce"}},{"ruleId":"D2","level":"warning","message":{"text":"DartFileEditBuilderImpl._addLibraryImports (cognitive 160): DartFileEditBuilderImpl._addLibraryImports has cognitive complexity 160 (threshold 15). Drivers by points: if/else 47 (111 pts), loops 12 (28 pts), boolean chains 12, ternaries 2 (9 pts) (nesting depth added 87). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":2482}}}],"partialFingerprints":{"codehealthFindingId/v1":"0659a3f08b26f499c3a628038305bc18aeeffc4a194c92be7a7f8f77ed317179"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.processLookupResult (cognitive 152): BodyBuilderImpl.processLookupResult has cognitive complexity 152 (threshold 15). Drivers by points: if/else 45 (100 pts), boolean chains 39, ternaries 4 (13 pts) (nesting depth added 64). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9208}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d49f966d82ab78b5f2bc09327fbf211f6a0449e7f4fc5fbd127fec63a0c4ac4"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler.visitStaticInvocation (cognitive 151): LibraryCompiler.visitStaticInvocation has cognitive complexity 151 (threshold 15). Drivers by points: if/else 54 (114 pts), loops 6 (17 pts), boolean chains 13, match/switch 2 (6 pts), ternaries 1 (nesting depth added 75). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7398}}}],"partialFingerprints":{"codehealthFindingId/v1":"830441893c9c48f32f85eb9217bc818bdb099896ef871a2ee26c61294b5675c9"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseClassOrMixinOrExtensionOrEnumMemberImpl (cognitive 150): Parser.parseClassOrMixinOrExtensionOrEnumMemberImpl has cognitive complexity 150 (threshold 15). Drivers by points: if/else 50 (110 pts), boolean chains 40 (nesting depth added 60). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5273}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e216ead458409544d51e29faa5cae0418444b6817c828c1d545198a8340ab29"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler.visitStaticInvocation (cognitive 149): ProgramCompiler.visitStaticInvocation has cognitive complexity 149 (threshold 15). Drivers by points: if/else 53 (114 pts), loops 6 (17 pts), boolean chains 13, match/switch 1 (4 pts), ternaries 1 (nesting depth added 75). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6709}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce858d085d599c76228eaddff9360bdd32d08df1f63b97454835dbde8791985"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.endFormalParameters (cognitive 148): OutlineBuilder.endFormalParameters has cognitive complexity 148 (threshold 15). Drivers by points: if/else 44 (122 pts), loops 4 (15 pts), boolean chains 11 (nesting depth added 89). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":3249}}}],"partialFingerprints":{"codehealthFindingId/v1":"8943790910add50b52460db291aaf343a6411c694995c231240c931e0a5ce711"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceClassBuilder.checkSupertypes (cognitive 148): SourceClassBuilder.checkSupertypes has cognitive complexity 148 (threshold 15). Drivers by points: if/else 39 (89 pts), boolean chains 37, loops 8 (22 pts) (nesting depth added 64). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"c77638ad9e7ad40e5a2fcfc5e2a5ab0eb5f654660e2ebd9e602575796960040b"}},{"ruleId":"D2","level":"warning","message":{"text":"_MixinInferenceSolution._solveForEquality (cognitive 145): _MixinInferenceSolution._solveForEquality has cognitive complexity 145 (threshold 15). Drivers by points: if/else 44 (99 pts), loops 10 (30 pts), boolean chains 15, match/switch 1 (nesting depth added 75). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/mixin_inferrer.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bb6eb112920a571acd4334edc05a6e37b27fe1c130ea2dd36e7567010dfa31b"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader._checkSupertypeClassModifiers (cognitive 145): SourceLoader._checkSupertypeClassModifiers has cognitive complexity 145 (threshold 15). Drivers by points: if/else 39 (90 pts), boolean chains 29, ternaries 4 (20 pts), loops 2 (6 pts) (nesting depth added 71). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2210}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e698fd59209117b1eafac1d11fc40c78087ff373c4a6547015bc35d7f0d6617"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassMembersNodeBuilder.build (cognitive 144): ClassMembersNodeBuilder.build has cognitive complexity 144 (threshold 15). Drivers by points: if/else 48 (101 pts), loops 10 (23 pts), boolean chains 13, ternaries 4 (7 pts) (nesting depth added 69). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9e267502dd5a98e5cf509f06f46babc4db5212e1f9c8590edc87d42325fe2dd"}},{"ruleId":"D2","level":"warning","message":{"text":"TokensWriter.astToBinaryTokenType (cognitive 143): TokensWriter.astToBinaryTokenType has cognitive complexity 143 (threshold 15). Drivers by points: if/else 143. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/tokens_writer.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f70c3d086d77a3d013a060783ff7e00aa1fdcdb687baefb5aa14273b863ce5"}},{"ruleId":"D2","level":"warning","message":{"text":"LinearScanRegisterAllocator.resolveDataFlow (cognitive 141): LinearScanRegisterAllocator.resolveDataFlow has cognitive complexity 141 (threshold 15). Drivers by points: if/else 26 (99 pts), loops 9 (23 pts), ternaries 3 (11 pts), boolean chains 8 (nesting depth added 95). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"10b72016d01c6bd84e41cd5a7f542f57ce8d55afd74404f8dc315072a3b46e13"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseFormalParameter (cognitive 141): Parser.parseFormalParameter has cognitive complexity 141 (threshold 15). Drivers by points: if/else 59 (122 pts), boolean chains 15, match/switch 1 (4 pts) (nesting depth added 66). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":2030}}}],"partialFingerprints":{"codehealthFindingId/v1":"6051541e12f748e0f3adca2b4a11c81c06f6c8f8f8515bc7b6be8fe3cd216549"}},{"ruleId":"D2","level":"warning","message":{"text":"Types.performSubtypeCheck (cognitive 141): Types.performSubtypeCheck has cognitive complexity 141 (threshold 15). Drivers by points: if/else 42 (102 pts), loops 9 (25 pts), boolean chains 9, ternaries 2 (4 pts), match/switch 1 (nesting depth added 78). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/types.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e65cef648497403fd4a743f056cc8933c968cd3b6f675bd566d7c8b3843af4d"}},{"ruleId":"D2","level":"warning","message":{"text":"JFieldAnalysis.from (cognitive 140): JFieldAnalysis.from has cognitive complexity 140 (threshold 15). Drivers by points: if/else 43 (113 pts), boolean chains 10, loops 2 (8 pts), match/switch 1 (5 pts), ternaries 1 (4 pts) (nesting depth added 83). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de33307a8cf2130360acaa5159ba161b9f2211755f07dd848e3faa2334b6b00"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiUseSiteTransformer._visitStaticInvocation (cognitive 139): _FfiUseSiteTransformer._visitStaticInvocation has cognitive complexity 139 (threshold 15). Drivers by points: if/else 49 (100 pts), boolean chains 29, ternaries 3 (9 pts), error handling 1 (nesting depth added 57). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"36a1e8a0d0fbb8d909c7f9bb64898d9da2c83acdb2899ce3ef64668b438400e9"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator._handleInvocation (cognitive 137): ConstantEvaluator._handleInvocation has cognitive complexity 137 (threshold 15). Drivers by points: if/else 37 (87 pts), boolean chains 23, match/switch 6 (19 pts), loops 2 (8 pts) (nesting depth added 69). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4297}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee9ff2e1cc335d46a8af2e0a5b692b9697f1c8110d9126f7cbd9b869573411b"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitClassDeclaration (cognitive 133): _Visitor.visitClassDeclaration has cognitive complexity 133 (threshold 15). Drivers by points: if/else 19 (85 pts), loops 5 (24 pts), boolean chains 17, match/switch 2 (7 pts) (nesting depth added 90). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_element_model_tracking.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"393ce7083557b9a48235bb4417be264f6b7bacc7996965ad1ef8611f2ed44ed6"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser._parsePrecedenceExpressionLoop (cognitive 129): Parser._parsePrecedenceExpressionLoop has cognitive complexity 129 (threshold 15). Drivers by points: if/else 51 (119 pts), boolean chains 9, loops 1 (nesting depth added 68). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7203}}}],"partialFingerprints":{"codehealthFindingId/v1":"c915f8e241ba74f3ec4aee6cd1d10b8ebc4cd34ac09470948798b9695ce46e2f"}},{"ruleId":"D2","level":"warning","message":{"text":"Type.generate (cognitive 127): Type.generate has cognitive complexity 127 (threshold 15). Drivers by points: if/else 57 (90 pts), boolean chains 23, loops 4 (7 pts), ternaries 3 (7 pts) (nesting depth added 40). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbacacba0745dd2e8f28307068e236e685f1ef55b2f34b1ae783fb88684cd4dc"}},{"ruleId":"D2","level":"warning","message":{"text":"RuntimeTypesNeedBuilderImpl.computeRuntimeTypesNeed (cognitive 127): RuntimeTypesNeedBuilderImpl.computeRuntimeTypesNeed has cognitive complexity 127 (threshold 15). Drivers by points: if/else 50 (85 pts), loops 16 (31 pts), match/switch 2 (7 pts), boolean chains 4 (nesting depth added 55). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f821d7d0b8b79c03a408b0272e665cd48048f58a20d2af57edd931650a43c84"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolvedCorrectionProducer.inferUndefinedExpressionType (cognitive 126): ResolvedCorrectionProducer.inferUndefinedExpressionType has cognitive complexity 126 (threshold 15). Drivers by points: if/else 60 (110 pts), boolean chains 8, match/switch 1 (4 pts), ternaries 1 (4 pts) (nesting depth added 56). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab9215645c0a9b00508db897bf62c21b93cbb29b76260ad62e19eacd90ac6b4f"}},{"ruleId":"D2","level":"warning","message":{"text":"Sort._dualPivotQuicksort (cognitive 125): Sort._dualPivotQuicksort has cognitive complexity 125 (threshold 15). Drivers by points: if/else 39 (100 pts), loops 8 (24 pts), boolean chains 1 (nesting depth added 77). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/sort.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"27f362668e8e029d9193d8e2b8f5950961efc3cf5d3aa40d64a3dd833cec14d4"}},{"ruleId":"D2","level":"warning","message":{"text":"SubtypeHelper._isSubtypeOf (cognitive 125): SubtypeHelper._isSubtypeOf has cognitive complexity 125 (threshold 15). Drivers by points: if/else 47 (82 pts), boolean chains 40, loops 1 (3 pts) (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/subtype.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1555e49965a20bead5fa7d63c6b7ec17a76ba9e2e4efe69568cd1135463f2f9"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitParenthesizedExpression (cognitive 124): _Visitor.visitParenthesizedExpression has cognitive complexity 124 (threshold 15). Drivers by points: if/else 43 (74 pts), boolean chains 50 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_parenthesis.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4df86a1721a1ceb4b2f1059d5272881c7891822136e9872c9e4eb51fccf198"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.visitBinaryExpression (cognitive 123): ConstantEvaluator.visitBinaryExpression has cognitive complexity 123 (threshold 15). Drivers by points: if/else 48 (91 pts), boolean chains 27, ternaries 1 (4 pts), loops 1 (nesting depth added 46). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f96db45a5e1babe8741f9888eda77ae094657f5134184fa59e98b0a73e56be9"}},{"ruleId":"D2","level":"warning","message":{"text":"ImpactData.apply (cognitive 122): ImpactData.apply has cognitive complexity 122 (threshold 15). Drivers by points: loops 37 (74 pts), if/else 40 (42 pts), match/switch 2 (6 pts) (nesting depth added 43). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":1438}}}],"partialFingerprints":{"codehealthFindingId/v1":"0695dfcd5f7367561e00a8779ac60f5786f7de92d3ea2b1c01cf617ed949f7e3"}},{"ruleId":"D2","level":"warning","message":{"text":"InvokeDynamicSpecializer.lookupSpecializer (cognitive 121): InvokeDynamicSpecializer.lookupSpecializer has cognitive complexity 121 (threshold 15). Drivers by points: if/else 45 (121 pts) (nesting depth added 76). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"5865d09387863f4d434ba7f80b99d20adecd6c5719fb4d115bdd1ddb1ec92143"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler._initializeExperimentalInvalidation (cognitive 121): IncrementalCompiler._initializeExperimentalInvalidation has cognitive complexity 121 (threshold 15). Drivers by points: if/else 26 (77 pts), loops 15 (40 pts), boolean chains 4 (nesting depth added 76). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"e91de4f383b2fdfc7463e679967fea5521276eb74239ec99a8d4dedca42db0ce"}},{"ruleId":"D2","level":"warning","message":{"text":"ModifyParameters.apply (cognitive 118): ModifyParameters.apply has cognitive complexity 118 (threshold 15). Drivers by points: if/else 29 (67 pts), loops 8 (17 pts), ternaries 4 (16 pts), boolean chains 9, match/switch 3 (9 pts) (nesting depth added 65). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/modify_parameters.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ecd3ed582f3ae874b8eedb21a57c4215d14d3f21499b67ca0acd0c0540e3496"}},{"ruleId":"D2","level":"warning","message":{"text":"_SanitizedMember.computeMembers (cognitive 118): _SanitizedMember.computeMembers has cognitive complexity 118 (threshold 15). Drivers by points: if/else 46 (105 pts), boolean chains 13 (nesting depth added 59). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1982}}}],"partialFingerprints":{"codehealthFindingId/v1":"50cbf6b8114c7d62f7a22b29403e950bf0865fdd2c0983f96d364b0e9f62e9f4"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelTarget._finishConstruction (cognitive 114): KernelTarget._finishConstruction has cognitive complexity 114 (threshold 15). Drivers by points: if/else 30 (76 pts), boolean chains 19, loops 8 (16 pts), ternaries 1 (3 pts) (nesting depth added 56). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1542}}}],"partialFingerprints":{"codehealthFindingId/v1":"8839adb31d87821cd6aefff5918ff003b17f05b5afaf7bcedb5c5896f6df3fac"}},{"ruleId":"D2","level":"warning","message":{"text":"DartLanguageServerBenchmark._listenToStdout (cognitive 113): DartLanguageServerBenchmark._listenToStdout has cognitive complexity 113 (threshold 15). Drivers by points: if/else 26 (88 pts), boolean chains 16, ternaries 1 (5 pts), loops 2 (4 pts) (nesting depth added 68). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/language_server_benchmark.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"b55e7c3292ac70cf6c07c574be5cb5e9cba2e5d70c749edcf9ba30eaba43949e"}},{"ruleId":"D2","level":"warning","message":{"text":"V1Projection._toV1Expression (cognitive 112): V1Projection._toV1Expression has cognitive complexity 112 (threshold 15). Drivers by points: ternaries 35 (70 pts), if/else 36, boolean chains 6 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":57854}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d7ebca27a12c76154e727db80fb218e8e185c3d2da86e53013830041614c70"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator2.visitBinaryOperatorInvocation (cognitive 110): ConstantEvaluator2.visitBinaryOperatorInvocation has cognitive complexity 110 (threshold 15). Drivers by points: if/else 43 (82 pts), boolean chains 23, ternaries 1 (4 pts), loops 1 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4f2eb3db1b28a4e439be9895f1ef3b3b0ffe297ad626abc3bc9ee8d90105301"}},{"ruleId":"D2","level":"warning","message":{"text":"_WebSocketProtocolTransformer.add (cognitive 109): _WebSocketProtocolTransformer.add has cognitive complexity 109 (threshold 15). Drivers by points: if/else 32 (97 pts), boolean chains 10, loops 1, ternaries 1 (nesting depth added 65). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e01cb5d8bc4988be80b47e3f0962a28cb6917c29786a23fe8935f74af9f6338"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystemImpl.canBeSubtypeOf (cognitive 109): TypeSystemImpl.canBeSubtypeOf has cognitive complexity 109 (threshold 15). Drivers by points: if/else 33 (77 pts), loops 6 (17 pts), boolean chains 14, ternaries 1 (nesting depth added 55). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a0538d4068bc2369f7fa4c8253302d11a4a8f4dc6ccd39aa3678c961d3783f"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpDate._parseCookieDate (cognitive 108): HttpDate._parseCookieDate has cognitive complexity 108 (threshold 15). Drivers by points: if/else 31 (74 pts), boolean chains 21, loops 4 (11 pts), ternaries 1 (2 pts) (nesting depth added 51). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_date.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"f973aa128bfaa69cfbb9371b78b33f09382d6351a256959a56bb927c2e52f64c"}},{"ruleId":"D2","level":"warning","message":{"text":"_Tuple.sanitize (cognitive 106): _Tuple.sanitize has cognitive complexity 106 (threshold 15). Drivers by points: if/else 46 (81 pts), boolean chains 15, loops 4 (8 pts), ternaries 2 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"98dd7cb0240409215a32b0c508e62a95cf6fbd3c38302b24c3602ba3b32b99c9"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramBuilder._addJsInteropStubs (cognitive 105): ProgramBuilder._addJsInteropStubs has cognitive complexity 105 (threshold 15). Drivers by points: if/else 19 (71 pts), ternaries 2 (13 pts), loops 3 (11 pts), boolean chains 10 (nesting depth added 71). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"3648ab695a61dde0725d16eface91e71bbc5a64fc268bc6aba5c648f0da8734f"}},{"ruleId":"D2","level":"warning","message":{"text":"_Tuple.sanitize (cognitive 103): _Tuple.sanitize has cognitive complexity 103 (threshold 15). Drivers by points: if/else 44 (73 pts), boolean chains 24, loops 2 (4 pts), ternaries 2 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1503}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1c9b42c4aa43a2876c7d08359c3cc0c16bb78590e7757e810d3159cb1f35fb9"}},{"ruleId":"D2","level":"warning","message":{"text":"SummaryCollector.createSummary (cognitive 103): SummaryCollector.createSummary has cognitive complexity 103 (threshold 15). Drivers by points: if/else 31 (55 pts), ternaries 8 (21 pts), loops 7 (15 pts), boolean chains 10, match/switch 1 (2 pts) (nesting depth added 46). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e29d04f2ae04827ade6fe6c0dbd983680be2dd80dcad2d040323b01d2efa05"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri.resolveUri (cognitive 102): _Uri.resolveUri has cognitive complexity 102 (threshold 15). Drivers by points: if/else 36 (90 pts), ternaries 3 (7 pts), boolean chains 5 (nesting depth added 58). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":3220}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e0aab785b540a21a7764f6ffdbcb5bc6fd9dd250f5d7d6db43fdb4c27371c77"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseMethod (cognitive 102): Parser.parseMethod has cognitive complexity 102 (threshold 15). Drivers by points: if/else 48 (73 pts), boolean chains 20, ternaries 3 (6 pts), match/switch 2 (3 pts) (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5799}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeb2aca1888c62975414ab853fdc4cd875e7fc5d0b84de86974ffa397e4cb22d"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceTypeAliasBuilder._checkCyclicTypedefDependency (cognitive 102): SourceTypeAliasBuilder._checkCyclicTypedefDependency has cognitive complexity 102 (threshold 15). Drivers by points: if/else 21 (68 pts), loops 8 (29 pts), match/switch 2 (4 pts), boolean chains 1 (nesting depth added 70). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f30498a464c44606b802014132abc2b96527fe1e02051acf2b9aeffd59d774d"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseTopLevelMemberImpl (cognitive 97): Parser.parseTopLevelMemberImpl has cognitive complexity 97 (threshold 15). Drivers by points: if/else 38 (73 pts), boolean chains 24 (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4181}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a3866d495b972ac3db89d55c5aba833e4a2c1c4733e3e820d5500c0a1479b4"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitVariableDeclaration (cognitive 97): InScopeCompletionPass.visitVariableDeclaration has cognitive complexity 97 (threshold 15). Drivers by points: if/else 34 (84 pts), boolean chains 9, match/switch 1 (4 pts) (nesting depth added 53). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":3419}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1d6e51dd572b836a35b928d7575e8195aeac7c6fa6cc5d2c1bfb81c0f7b93b4"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseNumber (cognitive 96): _ChunkedJsonParser.parseNumber has cognitive complexity 96 (threshold 15). Drivers by points: if/else 35 (74 pts), ternaries 4 (14 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 52). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"494802dd46892b9223bd72bd755c4a97266e841b491768146ecaadee6385f457"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseNumber (cognitive 96): _ChunkedJsonParser.parseNumber has cognitive complexity 96 (threshold 15). Drivers by points: if/else 35 (74 pts), ternaries 4 (14 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 52). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2eb0996081decfba48d551b32cb574a2c767584b115ed4df79a143ae014b591"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseNumber (cognitive 96): _ChunkedJsonParser.parseNumber has cognitive complexity 96 (threshold 15). Drivers by points: if/else 35 (74 pts), ternaries 4 (14 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 52). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":1181}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1fd5b9559bf2fa17044cac404f1b6c36aff34c06fbe67247da27fb062d2eca4"}},{"ruleId":"D2","level":"warning","message":{"text":"DuplicateDefinitionVerifier.checkUnit (cognitive 95): DuplicateDefinitionVerifier.checkUnit has cognitive complexity 95 (threshold 15). Drivers by points: if/else 27 (78 pts), loops 13 (15 pts), match/switch 1 (2 pts) (nesting depth added 54). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"115e5c153141a211269b6fe5efd0245504b980f67630da33724bfa0d0b9a1385"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceExtensionTypeDeclarationBuilder._checkRepresentationDependency (cognitive 95): SourceExtensionTypeDeclarationBuilder._checkRepresentationDependency has cognitive complexity 95 (threshold 15). Drivers by points: if/else 21 (62 pts), loops 8 (27 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 62). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"46dfba06a896860476803e56e3f4899f08062a406d79e79e60b556b85846e1cb"}},{"ruleId":"D2","level":"warning","message":{"text":"SwitchInfo.SwitchInfo (cognitive 94): SwitchInfo.SwitchInfo has cognitive complexity 94 (threshold 15). Drivers by points: if/else 26 (57 pts), boolean chains 23, loops 4 (10 pts), ternaries 1 (4 pts) (nesting depth added 40). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":5298}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f93c739bbd596dc00ba0de62b70bc151e07b887029c00beab279b5a1ea5240e"}},{"ruleId":"D2","level":"warning","message":{"text":"Uri.parse (cognitive 94): Uri.parse has cognitive complexity 94 (threshold 15). Drivers by points: if/else 34 (75 pts), boolean chains 19 (nesting depth added 41). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":841}}}],"partialFingerprints":{"codehealthFindingId/v1":"9df500add8c6da442c6426e2e4e1043c557374a1e606c5e2a47af403120c8f10"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportElementsComputer.createEdits (cognitive 94): ImportElementsComputer.createEdits has cognitive complexity 94 (threshold 15). Drivers by points: if/else 16 (62 pts), loops 9 (30 pts), boolean chains 2 (nesting depth added 67). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/import_elements_computer.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b4485217ac66b1fbd69055103413194281822feddccbed94b452e4d5cab8efc"}},{"ruleId":"D2","level":"warning","message":{"text":"PubspecFixGenerator._addMissingDependency (cognitive 93): PubspecFixGenerator._addMissingDependency has cognitive complexity 93 (threshold 15). Drivers by points: if/else 19 (63 pts), loops 4 (16 pts), ternaries 2 (10 pts), boolean chains 4 (nesting depth added 64). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2e3bdb7834069e7ba22d9a465849a3cc18e0b0aa98de139d92203cd2d33e9b1"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.beginSwitchCase (cognitive 93): BodyBuilderImpl.beginSwitchCase has cognitive complexity 93 (threshold 15). Drivers by points: if/else 24 (62 pts), loops 8 (30 pts), ternaries 1 (nesting depth added 60). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0117c203e85f7cc8e74d6048a96bd6fc9b0ca63d0d17342474634cd996a17ae"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitArgumentList (cognitive 91): InScopeCompletionPass.visitArgumentList has cognitive complexity 91 (threshold 15). Drivers by points: if/else 27 (71 pts), boolean chains 10, loops 3 (10 pts) (nesting depth added 51). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff8f2a16ac886343e63c1b1a5abbd1ae59bde378168001c0bd25b52efe750a62"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationByElementLocator.visitNode (cognitive 91): DeclarationByElementLocator.visitNode has cognitive complexity 91 (threshold 15). Drivers by points: if/else 46 (82 pts), boolean chains 7, match/switch 1 (2 pts) (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/results.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"e654992b1c65aef0811cc1bbf4678a68eb7dca405e532dbf1faa4fa24fcf10f5"}},{"ruleId":"D2","level":"warning","message":{"text":"_Future._propagateToListeners (cognitive 90): _Future._propagateToListeners has cognitive complexity 90 (threshold 15). Drivers by points: if/else 26 (70 pts), error handling 3 (9 pts), boolean chains 8, loops 2 (3 pts) (nesting depth added 51). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/future_impl.dart"},"region":{"startLine":848}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e36af1f311b90f7b0bfd07a0524ef41ba644a8d1bb79f3df1aba2b1ca3ffc9b"}},{"ruleId":"D2","level":"warning","message":{"text":"DelayedDefaultValueCloner.cloneDefaultValues (cognitive 90): DelayedDefaultValueCloner.cloneDefaultValues has cognitive complexity 90 (threshold 15). Drivers by points: if/else 24 (72 pts), loops 6 (14 pts), boolean chains 4 (nesting depth added 56). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_helper.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"3596a4e5d4e7589c6935ffbc212cdae761ce1c337cfb364ed236619e6ee2f050"}},{"ruleId":"D2","level":"warning","message":{"text":"FrontendCompiler.compile (cognitive 88): FrontendCompiler.compile has cognitive complexity 88 (threshold 15). Drivers by points: if/else 38 (64 pts), loops 4 (9 pts), ternaries 5 (8 pts), boolean chains 7 (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e81266a5e52e4f7c2eef08ed4a383ad808115a29e5ddac0f6e69435d2fa646"}},{"ruleId":"D2","level":"warning","message":{"text":"InstrumentationLog._parseLogContent (cognitive 86): InstrumentationLog._parseLogContent has cognitive complexity 86 (threshold 15). Drivers by points: if/else 28 (85 pts), loops 1 (nesting depth added 57). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/log/log.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"a87538f964e577ed96e2f83e47b572d21f6a6186925403dbdf67af1a16a687ae"}},{"ruleId":"D2","level":"warning","message":{"text":"FeaturesDataInterpreter.isAsExpected (cognitive 86): FeaturesDataInterpreter.isAsExpected has cognitive complexity 86 (threshold 15). Drivers by points: if/else 23 (57 pts), loops 4 (22 pts), ternaries 2 (4 pts), boolean chains 3 (nesting depth added 54). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/features.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"2633de349bcd1f9502e08a188b587477aa76d0edae8477621c6d75b408571dc3"}},{"ruleId":"D2","level":"warning","message":{"text":"MixinFullResolution.transformClass (cognitive 85): MixinFullResolution.transformClass has cognitive complexity 85 (threshold 15). Drivers by points: if/else 27 (56 pts), loops 7 (16 pts), boolean chains 5, match/switch 1 (5 pts), ternaries 1 (3 pts) (nesting depth added 44). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/mixin_full_resolution.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a73840d4159e4eea95a817aecc2f93e40720b9fb75cdcba1a31ffef688dc249"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseExpressionStatementOrDeclarationAfterModifiers (cognitive 85): Parser.parseExpressionStatementOrDeclarationAfterModifiers has cognitive complexity 85 (threshold 15). Drivers by points: if/else 35 (68 pts), boolean chains 17 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9864}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e760934794cd102916fe39f69612fe9d784bc523e3cecfe9319fcc0c5befbb2"}},{"ruleId":"D2","level":"warning","message":{"text":"_Collector.collect (cognitive 85): _Collector.collect has cognitive complexity 85 (threshold 15). Drivers by points: if/else 54 (72 pts), boolean chains 7, loops 2 (4 pts), match/switch 1 (2 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc8d210a13812fb83ef286459c0f6c4e4ccd24e4e41c3fe15189cdc3c679f2a7"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeEnvironment.computeTypeShapeCheckSufficiency (cognitive 84): TypeEnvironment.computeTypeShapeCheckSufficiency has cognitive complexity 84 (threshold 15). Drivers by points: if/else 29 (59 pts), loops 6 (15 pts), boolean chains 6, ternaries 1 (4 pts) (nesting depth added 42). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"422cbb88e9c928dfb5350758033ed277a498c82223d25149ce1a567ca9d1af60"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.visitLoopInfo (cognitive 84): SsaCodeGenerator.visitLoopInfo has cognitive complexity 84 (threshold 15). Drivers by points: if/else 27 (67 pts), boolean chains 10, loops 1 (6 pts), match/switch 1 (nesting depth added 45). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1046}}}],"partialFingerprints":{"codehealthFindingId/v1":"f881e53bc9425a1907d66aad0e60ddade036a270840e84ea64caea02c9c04b30"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.getToken (cognitive 84): MiniJsParser.getToken has cognitive complexity 84 (threshold 15). Drivers by points: if/else 29 (62 pts), boolean chains 14, loops 3 (5 pts), ternaries 1 (3 pts) (nesting depth added 37). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35f8f47b6bce56fb96e86b0b24d950e76722575938442bfeb737e635dd55765"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToDeclaringParameter.compute (cognitive 83): ConvertToDeclaringParameter.compute has cognitive complexity 83 (threshold 15). Drivers by points: if/else 43 (69 pts), boolean chains 7, ternaries 2 (5 pts), loops 1 (2 pts) (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_declaring_parameter.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bac57e5c95620e77e6c79b37d81df454e0f0335355758b5984d35021d0137ce"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtensionTypeMembersNodeBuilder.build (cognitive 83): ExtensionTypeMembersNodeBuilder.build has cognitive complexity 83 (threshold 15). Drivers by points: if/else 33 (62 pts), loops 7 (11 pts), boolean chains 6, ternaries 4 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac5994440893a8cc631f4fa8694c7acfa2852a85cd39efa661fffa2ded3fc5c"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.getToken (cognitive 83): MiniJsParser.getToken has cognitive complexity 83 (threshold 15). Drivers by points: if/else 27 (58 pts), boolean chains 17, loops 3 (5 pts), ternaries 1 (3 pts) (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"625ac548fdf24654b7955c386f8da8ccc6c1bf494bba5d0f9d236b5aad9e9994"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitClassDeclaration (cognitive 83): _Visitor.visitClassDeclaration has cognitive complexity 83 (threshold 15). Drivers by points: if/else 28 (68 pts), boolean chains 8, loops 3 (6 pts), error handling 1 (nesting depth added 43). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_enums.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed7b7faaf6832e7d302cc3f8ca9ccdd6b4e8debc28cb4bf1ea6861949203ec74"}},{"ruleId":"D2","level":"warning","message":{"text":"Intrinsifier.generateStaticIntrinsic (cognitive 82): Intrinsifier.generateStaticIntrinsic has cognitive complexity 82 (threshold 15). Drivers by points: if/else 31 (51 pts), boolean chains 12, loops 5 (10 pts), match/switch 5 (9 pts) (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":1362}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfd28b77b34308103448df49dbcb33ba5463ec8a286e706aafffe8af929235e9"}},{"ruleId":"D2","level":"warning","message":{"text":"_EnumDescription._validateFields (cognitive 82): _EnumDescription._validateFields has cognitive complexity 82 (threshold 15). Drivers by points: if/else 19 (65 pts), loops 5 (10 pts), boolean chains 7 (nesting depth added 51). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":653}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd656e72828b2261e99b86515871fea5d326f7b2bb3ce8fe23dec12e44e21db3"}},{"ruleId":"D2","level":"warning","message":{"text":"LeastUpperBoundHelper._computeLeastUpperBound (cognitive 82): LeastUpperBoundHelper._computeLeastUpperBound has cognitive complexity 82 (threshold 15). Drivers by points: if/else 55 (71 pts), boolean chains 11 (nesting depth added 16). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4bcaf505170c530adce633b6e537c465931c2e4148d5187173460618470524"}},{"ruleId":"D2","level":"warning","message":{"text":"Driver._analyzeAll (cognitive 82): Driver._analyzeAll has cognitive complexity 82 (threshold 15). Drivers by points: if/else 20 (46 pts), loops 8 (22 pts), error handling 2 (8 pts), ternaries 1 (4 pts), boolean chains 2 (nesting depth added 49). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/driver.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd7d6e328231a98c60d388ba8942db717f16046da38e90a1c51f00df40840fa"}},{"ruleId":"D2","level":"warning","message":{"text":"_ClassVerifier.verify (cognitive 81): _ClassVerifier.verify has cognitive complexity 81 (threshold 15). Drivers by points: if/else 24 (60 pts), boolean chains 11, loops 4 (7 pts), ternaries 1 (3 pts) (nesting depth added 41). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"258326493214e9cf7639f3ab312ffbfd4eb1617805e9a41b68f5d3d8980f8149"}},{"ruleId":"D2","level":"warning","message":{"text":"Analysis.reverseTransitiveGraph (cognitive 80): Analysis.reverseTransitiveGraph has cognitive complexity 80 (threshold 15). Drivers by points: if/else 14 (66 pts), loops 4 (13 pts), boolean chains 1 (nesting depth added 61). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4cd2f9c0b1adc10067435ff0990735ce578bcf03e36734ba8c4017541ac8671"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportLibrary._importLibraryForElement (cognitive 79): ImportLibrary._importLibraryForElement has cognitive complexity 79 (threshold 15). Drivers by points: if/else 22 (44 pts), ternaries 10 (30 pts), boolean chains 3, loops 2 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/import_library.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"f40f04ec3c565915f5d47b61c2b97b6c102882f5dd755b06fb0ec5bf19efe1c9"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractMethodRefactoringImpl.buildChange (cognitive 79): ExtractMethodRefactoringImpl.buildChange has cognitive complexity 79 (threshold 15). Drivers by points: if/else 26 (66 pts), loops 3 (6 pts), ternaries 3 (5 pts), boolean chains 2 (nesting depth added 45). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dc7a3a5c35605ff53113febe638f0625a3b253cce69ea39b23d84c8a405c369"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionCompiler.compileExpressionToJs (cognitive 79): ExpressionCompiler.compileExpressionToJs has cognitive complexity 79 (threshold 15). Drivers by points: if/else 16 (58 pts), loops 4 (14 pts), boolean chains 4, ternaries 1 (2 pts), error handling 1 (nesting depth added 53). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"b826277b870bee993b1fd89d98b4f45722042c188519f777a615713224054fcf"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase._inferInvocation (cognitive 79): InferenceVisitorBase._inferInvocation has cognitive complexity 79 (threshold 15). Drivers by points: if/else 33 (51 pts), loops 7 (12 pts), boolean chains 10, match/switch 2 (4 pts), ternaries 1 (2 pts) (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1734}}}],"partialFingerprints":{"codehealthFindingId/v1":"a68f07309c7b0e9f81b71fe6c293b8c1b49fab3fd666418d3e7a6052a5655609"}},{"ruleId":"D2","level":"warning","message":{"text":"DispatchTable.build (cognitive 78): DispatchTable.build has cognitive complexity 78 (threshold 15). Drivers by points: if/else 31 (56 pts), loops 11 (16 pts), boolean chains 6 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dispatch_table.dart"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb64f58bde607d9225650b577f9248a0e5977e10231e647a6dfeba47a0de897d"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionHandler._getServerDartItems (cognitive 78): CompletionHandler._getServerDartItems has cognitive complexity 78 (threshold 15). Drivers by points: if/else 22 (46 pts), ternaries 4 (12 pts), boolean chains 10, error handling 4 (8 pts), loops 1 (2 pts) (nesting depth added 37). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc2a58ffb90151eb400f83f75feefef8c53bec7bed7047eabe2f5ddca4bd7fde"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToSuperParameters.compute (cognitive 78): ConvertToSuperParameters.compute has cognitive complexity 78 (threshold 15). Drivers by points: if/else 34 (66 pts), boolean chains 8, loops 3 (4 pts) (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17a7c7f203243d6bfc972afc0b7dba1f252414da8270bbe40f93532ee68bf0d"}},{"ruleId":"D2","level":"warning","message":{"text":"MessageScheduler.add (cognitive 77): MessageScheduler.add has cognitive complexity 77 (threshold 15). Drivers by points: if/else 20 (60 pts), loops 3 (11 pts), ternaries 1 (4 pts), boolean chains 2 (nesting depth added 51). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/message_scheduler.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac972a5cb969470a6d61a5b6f6ed0d6c226fdfc96d42b35daf80b2d622c40bc3"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToSwitchExpression._getSupportedSwitchType (cognitive 77): ConvertToSwitchExpression._getSupportedSwitchType has cognitive complexity 77 (threshold 15). Drivers by points: if/else 29 (67 pts), boolean chains 9, loops 1 (nesting depth added 38). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e4306299cf031d61270b6099827d4685ee1fe3365efca9aafcae40c92f5c5a1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionEvaluationHelperImpl.overwriteFindInterfaceMember (cognitive 77): ExpressionEvaluationHelperImpl.overwriteFindInterfaceMember has cognitive complexity 77 (threshold 15). Drivers by points: if/else 13 (54 pts), loops 4 (17 pts), boolean chains 6 (nesting depth added 54). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2980}}}],"partialFingerprints":{"codehealthFindingId/v1":"7934c69564c9b1e3d633fc7737c7a3f6fda90dd51aab6cd48bee7f2e2da54d6c"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedTypeBuilderImpl.findRawTypesWithInboundReferences (cognitive 77): NamedTypeBuilderImpl.findRawTypesWithInboundReferences has cognitive complexity 77 (threshold 15). Drivers by points: if/else 18 (63 pts), loops 3 (10 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 53). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":1169}}}],"partialFingerprints":{"codehealthFindingId/v1":"86641ebfac8b9885576ff610a61848e195e1f280a422b8980703ebd3ed5b30c2"}},{"ruleId":"D2","level":"warning","message":{"text":"DartScopeBuilder2._filter (cognitive 77): DartScopeBuilder2._filter has cognitive complexity 77 (threshold 15). Drivers by points: boolean chains 39, if/else 30 (37 pts), loops 1 (nesting depth added 7). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"2afdc3e7fbf98b8c3002cea4173d33c9d09275cc2d6940a4390ace8c922d5af8"}},{"ruleId":"D2","level":"warning","message":{"text":"MemberDuplicateDefinitionVerifier._checkClassMembers (cognitive 76): MemberDuplicateDefinitionVerifier._checkClassMembers has cognitive complexity 76 (threshold 15). Drivers by points: if/else 17 (53 pts), ternaries 3 (12 pts), loops 3 (6 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 49). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26a3bcf5f1bf8604cafe23a952693a2f44ee02fb286d01bf4ea66354e8d14c6"}},{"ruleId":"D2","level":"warning","message":{"text":"DillExtensionTypeDeclarationBuilder.DillExtensionTypeDeclarationBuilder (cognitive 76): DillExtensionTypeDeclarationBuilder.DillExtensionTypeDeclarationBuilder has cognitive complexity 76 (threshold 15). Drivers by points: if/else 24 (64 pts), boolean chains 6, match/switch 2 (4 pts), loops 2 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"a96c3b214116c70b5e5d014d977dd949ac83af4730037dab9a765e4bbab710f7"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.endPrimaryConstructor (cognitive 76): OutlineBuilder.endPrimaryConstructor has cognitive complexity 76 (threshold 15). Drivers by points: if/else 25 (66 pts), ternaries 1 (4 pts), boolean chains 3, loops 1 (2 pts), match/switch 1 (nesting depth added 45). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ebe7d271d535243d429b0735795f5940b26a2dfe556565d9d508a94d9aadfbe"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceExtensionTypeDeclarationBuilder.build (cognitive 76): SourceExtensionTypeDeclarationBuilder.build has cognitive complexity 76 (threshold 15). Drivers by points: if/else 23 (66 pts), loops 2 (6 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 49). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cb69437dcbfd0cecb82eb6a26c82736df93758475d7452b4a5d4d9263960742"}},{"ruleId":"D2","level":"warning","message":{"text":"_RecGroupBuilder._assignBrandTypes (cognitive 76): _RecGroupBuilder._assignBrandTypes has cognitive complexity 76 (threshold 15). Drivers by points: if/else 9 (42 pts), loops 9 (28 pts), ternaries 2 (5 pts), boolean chains 1 (nesting depth added 55). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/types.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"a86b18ec3c9a0abfe6b41a0b9315278abbffacec3695040184c0c251c2794c9b"}},{"ruleId":"D2","level":"warning","message":{"text":"Scrape._processPath (cognitive 75): Scrape._processPath has cognitive complexity 75 (threshold 15). Drivers by points: if/else 28 (73 pts), boolean chains 1, loops 1 (nesting depth added 45). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/lib/scrape.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc6dd6c0f19fc5b96ec53431756ae3d479bda6f679c9897b209938d47cf91d78"}},{"ruleId":"D2","level":"warning","message":{"text":"LinearScanRegisterAllocator.buildLiveRanges (cognitive 75): LinearScanRegisterAllocator.buildLiveRanges has cognitive complexity 75 (threshold 15). Drivers by points: if/else 16 (51 pts), loops 6 (16 pts), ternaries 2 (5 pts), boolean chains 3 (nesting depth added 48). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8508ee65960ff00affb12a4bce00b8dbc047f1165a12d92bb4ea7ada28e3f0"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplaceWithVar.compute (cognitive 75): ReplaceWithVar.compute has cognitive complexity 75 (threshold 15). Drivers by points: if/else 27 (60 pts), boolean chains 15 (nesting depth added 33). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_var.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"45d5f0f0ead2be5a0189117df10a78484d3da0a72f380beeb443e6cfaea68d60"}},{"ruleId":"D2","level":"warning","message":{"text":"FuzzyMatcher.computeScore (cognitive 75): FuzzyMatcher.computeScore has cognitive complexity 75 (threshold 15). Drivers by points: if/else 14 (43 pts), boolean chains 15, ternaries 3 (9 pts), loops 5 (8 pts) (nesting depth added 38). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/utilities/fuzzy_matcher.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cf20d85d081eed524e23bcfa4c2e630c473a7c140c7a3a5b3e8b1c3bbd3ac87"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForAugmentationFormalParameters (cognitive 73): ErrorVerifier._checkForAugmentationFormalParameters has cognitive complexity 73 (threshold 15). Drivers by points: if/else 27 (48 pts), boolean chains 13, loops 6 (9 pts), ternaries 1 (3 pts) (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":3274}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16acc4bf686b15293ed5cb5b1cb7a46b36cffe96726b98f61f0790a340a5892"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseTopLevelKeywordDeclaration (cognitive 72): Parser.parseTopLevelKeywordDeclaration has cognitive complexity 72 (threshold 15). Drivers by points: if/else 30 (66 pts), boolean chains 6 (nesting depth added 36). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"0000d3be636dda4c5e8ddeb3befa566ac41fc8f007109d157b15f5e5b55404c7"}},{"ruleId":"D2","level":"warning","message":{"text":"FlutterConvertToStatefulWidget.compute (cognitive 72): FlutterConvertToStatefulWidget.compute has cognitive complexity 72 (threshold 15). Drivers by points: if/else 28 (55 pts), loops 6 (9 pts), boolean chains 7, ternaries 1 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de7d69457a150157071a6dfaadaa5f9f506c5b4b7fdf55cfd623df3ab17d7b5"}},{"ruleId":"D2","level":"warning","message":{"text":"TypePropertyResolver.resolve (cognitive 72): TypePropertyResolver.resolve has cognitive complexity 72 (threshold 15). Drivers by points: if/else 32 (60 pts), boolean chains 12 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b637aa63e72c94de058f8de21b2e6ec4b2dc068e55665ffea132491516fafde"}},{"ruleId":"D2","level":"warning","message":{"text":"GreatestLowerBoundHelper.getGreatestLowerBound (cognitive 71): GreatestLowerBoundHelper.getGreatestLowerBound has cognitive complexity 71 (threshold 15). Drivers by points: if/else 42 (56 pts), boolean chains 15 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceed392ef62de22734f042ebfd6358b8e12dd01b693ccc66f34f029209f2e7d0"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateNativeAddressOf (cognitive 71): FfiVerifier._validateNativeAddressOf has cognitive complexity 71 (threshold 15). Drivers by points: if/else 17 (65 pts), boolean chains 3, loops 1 (2 pts), match/switch 1 (nesting depth added 49). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":2059}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc03f6aaac286b55cd4adc91b779e32395a5ca9c68b7176130216da5e81aa8a0"}},{"ruleId":"D2","level":"warning","message":{"text":"_InitializationFromUri._initializeFromDill (cognitive 71): _InitializationFromUri._initializeFromDill has cognitive complexity 71 (threshold 15). Drivers by points: if/else 14 (61 pts), loops 2 (7 pts), boolean chains 3 (nesting depth added 52). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3481}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d087e3b0b005ba6d37fd9dd920c5e243356089e755310f772cf00bd1a5b0785"}},{"ruleId":"D2","level":"warning","message":{"text":"GraphIsomorphizer.generateRootImport (cognitive 70): GraphIsomorphizer.generateRootImport has cognitive complexity 70 (threshold 15). Drivers by points: if/else 9 (41 pts), loops 9 (29 pts) (nesting depth added 52). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/graph_isomorphizer.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6f8e4b1adebc1d434b1a1b1b54eae27c52990788c842f6c13638ef65592aac"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportOrganizer._organizeDirectives (cognitive 70): ImportOrganizer._organizeDirectives has cognitive complexity 70 (threshold 15). Drivers by points: if/else 17 (47 pts), ternaries 3 (10 pts), boolean chains 5, loops 3 (5 pts), match/switch 1 (3 pts) (nesting depth added 41). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/organize_imports.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"814cb5ec0c81c300b0474315faed3de01d81f619a5f26a46cbd44b1759953411"}},{"ruleId":"D2","level":"warning","message":{"text":"BuildCliSubcommand.doBuild (cognitive 70): BuildCliSubcommand.doBuild has cognitive complexity 70 (threshold 15). Drivers by points: if/else 21 (49 pts), ternaries 4 (13 pts), loops 2 (4 pts), boolean chains 2, error handling 1 (2 pts) (nesting depth added 40). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/build.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae1dd03406fe94d8e10db4ba52c28c41615ffb6e50fd5c7a6858c5672836d2be"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorDeclarationMixin._finalizeSuperInitializingFormals (cognitive 70): _ConstructorDeclarationMixin._finalizeSuperInitializingFormals has cognitive complexity 70 (threshold 15). Drivers by points: if/else 25 (59 pts), boolean chains 7, loops 2, ternaries 1 (2 pts) (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e4aa358f23db111807b5994474bf407754bfab43e22600a400deb437cf7ac25"}},{"ruleId":"D2","level":"warning","message":{"text":"DartSnippetRequest._getContext (cognitive 69): DartSnippetRequest._getContext has cognitive complexity 69 (threshold 15). Drivers by points: if/else 22 (42 pts), boolean chains 14, ternaries 3 (9 pts), match/switch 1 (3 pts), loops 1 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/snippets/dart_snippet_request.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d60829831dd72e06908887ab8c79c84e05ad493ffe9b049b0ad6445e696ff3f"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluationEngine.computeDependencies (cognitive 69): ConstantEvaluationEngine.computeDependencies has cognitive complexity 69 (threshold 15). Drivers by points: if/else 24 (54 pts), loops 3 (9 pts), boolean chains 6 (nesting depth added 36). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe3f7548983d52c01a0d715be646348a2fc76cc3de253c872f279bfd57dc925"}},{"ruleId":"D2","level":"warning","message":{"text":"InstanceMemberInferrer._inferAccessorOrField (cognitive 69): InstanceMemberInferrer._inferAccessorOrField has cognitive complexity 69 (threshold 15). Drivers by points: if/else 33 (60 pts), boolean chains 9 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"282b296a32c3ce36868bbbbf172f47bac6704a2772356bda29c5131ebbc1363c"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._doTryInlineMethod (cognitive 69): KernelSsaGraphBuilder._doTryInlineMethod has cognitive complexity 69 (threshold 15). Drivers by points: if/else 42 (50 pts), boolean chains 17, ternaries 1 (2 pts) (nesting depth added 9). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7879}}}],"partialFingerprints":{"codehealthFindingId/v1":"696b3ee5efe910ffc5f6739502c65ba0254576b25cff42aa91a8d7886f8b701f"}},{"ruleId":"D2","level":"warning","message":{"text":"_PropertyPreBuilder.absorbFragment (cognitive 69): _PropertyPreBuilder.absorbFragment has cognitive complexity 69 (threshold 15). Drivers by points: if/else 33 (64 pts), boolean chains 4, match/switch 1 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2179}}}],"partialFingerprints":{"codehealthFindingId/v1":"d237a7edb91292b20509604157941a95e63005d5828fab76451c9b2782946cb2"}},{"ruleId":"D2","level":"warning","message":{"text":"LogPlayer.play (cognitive 68): LogPlayer.play has cognitive complexity 68 (threshold 15). Drivers by points: if/else 16 (54 pts), boolean chains 8, match/switch 1 (4 pts), loops 1 (2 pts) (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/log_player.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7220fe3244755c8d9c189c4df0cbc6fe8c8cebfe22ba7d935da083fbeb0864"}},{"ruleId":"D2","level":"warning","message":{"text":"Intrinsifier.generateInstanceIntrinsic (cognitive 68): Intrinsifier.generateInstanceIntrinsic has cognitive complexity 68 (threshold 15). Drivers by points: if/else 24 (39 pts), match/switch 7 (20 pts), boolean chains 6, ternaries 1 (3 pts) (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b5d0f623fb212312c5b6929f14ea0144cd2b3fa7aecaefbaf8d3f26e6195577"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserCreatorListener.endMethod (cognitive 68): ParserCreatorListener.endMethod has cognitive complexity 68 (threshold 15). Drivers by points: if/else 17 (40 pts), loops 5 (14 pts), boolean chains 10, ternaries 1 (4 pts) (nesting depth added 35). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/parser_ast_helper_creator.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"61910fec5afaa5ae5b8e279e543e987df097e3e0faf43530bd40d054a1c29cca"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToInitializingFormal._computeChange (cognitive 68): ConvertToInitializingFormal._computeChange has cognitive complexity 68 (threshold 15). Drivers by points: if/else 25 (48 pts), ternaries 2 (8 pts), boolean chains 5, loops 2 (4 pts), match/switch 1 (3 pts) (nesting depth added 33). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1562d9ef3f255a8f6ab7aa6492129039b222d27b11aa9c10eb62b424725278"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentEmitter.emitInstallTearOffs (cognitive 68): FragmentEmitter.emitInstallTearOffs has cognitive complexity 68 (threshold 15). Drivers by points: if/else 20 (45 pts), loops 5 (9 pts), boolean chains 7, ternaries 3 (7 pts) (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1422}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c325c3c95ea29fa8b1754493635a11eaf75763f186a54fd0bbb5f5f197be141"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 68): (anonymous) has cognitive complexity 68 (threshold 15). Drivers by points: if/else 31 (45 pts), loops 11 (15 pts), boolean chains 3, error handling 2 (3 pts), match/switch 1 (2 pts) (nesting depth added 20). Most of this is not in the body itself: 7 of the 68 points are its own statements and the rest belongs to 26 function items inside it that branch (bubbleDown, computeCurrentScript, nextEvent, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/preambles/d8.js"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a60c79d0f6ee33ff1c0575c1c83112cac35cfbb2d3fa88a26f855182aae84aa"}},{"ruleId":"D2","level":"warning","message":{"text":"AddFieldFormalParameters._computeFromPieces (cognitive 67): AddFieldFormalParameters._computeFromPieces has cognitive complexity 67 (threshold 15). Drivers by points: if/else 26 (42 pts), boolean chains 10, ternaries 5 (8 pts), loops 4 (6 pts), match/switch 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_field_formal_parameters.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"e021b338d535c7e0181b3410b432e35d0d91454340f3406bfd7e7d5e0618c630"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorInvocationEvaluator._checkInitializers (cognitive 67): _ConstructorInvocationEvaluator._checkInitializers has cognitive complexity 67 (threshold 15). Drivers by points: if/else 15 (51 pts), match/switch 2 (6 pts), ternaries 1 (6 pts), boolean chains 3, loops 1 (nesting depth added 45). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3256}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1113a7030997583cc7319932e3b46e76ccdaa3ed8cf345d03c45e1fc3cd8cff"}},{"ruleId":"D2","level":"warning","message":{"text":"KFieldAnalysis.registerInstantiatedClass (cognitive 67): KFieldAnalysis.registerInstantiatedClass has cognitive complexity 67 (threshold 15). Drivers by points: if/else 13 (53 pts), boolean chains 5, match/switch 1 (5 pts), loops 3 (4 pts) (nesting depth added 45). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ff62f486fb7320802be4bd488ae12c068193949932c215074cfa4f3e039445c"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._findAssignedField (cognitive 67): _Visitor._findAssignedField has cognitive complexity 67 (threshold 15). Drivers by points: if/else 14 (64 pts), loops 2 (3 pts) (nesting depth added 51). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_declaring_parameters.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d03aa9e2b6d79bc74f1bc5bf6ab00d7cc92bbf8ffb62dfc79fee7d9e1db43bb"}},{"ruleId":"D2","level":"warning","message":{"text":"DartDocTest.compileAndRun (cognitive 66): DartDocTest.compileAndRun has cognitive complexity 66 (threshold 15). Drivers by points: if/else 26 (44 pts), loops 7 (16 pts), boolean chains 3, match/switch 1 (3 pts) (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/dart_doctest_impl.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"5208c0905bff82cbdd389987ad54dd04c571fd3cbc565ee0df9a4a80dd79bda8"}},{"ruleId":"D2","level":"warning","message":{"text":"NoSuchMethodError.toString (cognitive 66): NoSuchMethodError.toString has cognitive complexity 66 (threshold 15). Drivers by points: if/else 24 (50 pts), loops 2 (6 pts), ternaries 2 (5 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 34). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/errors_patch.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"bffe2ca8c4569f3b8a87d1d8cc6fd0b730b1dd766b5207aaebde6633bca31332"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedTypeResolver.resolveConstructorTypeReference (cognitive 66): NamedTypeResolver.resolveConstructorTypeReference has cognitive complexity 66 (threshold 15). Drivers by points: if/else 24 (38 pts), ternaries 4 (11 pts), match/switch 3 (9 pts), boolean chains 8 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e04cdc3de0e286d86ab1d031c980b81913e64f9ea10d3a1be45a988ea97cac2"}},{"ruleId":"D2","level":"warning","message":{"text":"InterceptorStubGenerator.generateGetInterceptorMethod (cognitive 66): InterceptorStubGenerator.generateGetInterceptorMethod has cognitive complexity 66 (threshold 15). Drivers by points: if/else 42 (53 pts), boolean chains 9, ternaries 1 (3 pts), loops 1 (nesting depth added 13). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7f5a319b19e71dc53d35a367dbac32c410fabde0f7479acdae4bbf25db5b45d"}},{"ruleId":"D2","level":"warning","message":{"text":"_RawSecureSocket._tryFilter (cognitive 65): _RawSecureSocket._tryFilter has cognitive complexity 65 (threshold 15). Drivers by points: if/else 16 (57 pts), boolean chains 5, loops 1 (2 pts), error handling 1 (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/secure_socket.dart"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"e74d26bc74c6fc0a124c54ab8fab4e13111552df044790f4385ff05ada3e60a3"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalyzeCommand.run (cognitive 65): AnalyzeCommand.run has cognitive complexity 65 (threshold 15). Drivers by points: if/else 29 (41 pts), ternaries 5 (9 pts), boolean chains 8, loops 5 (7 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/analyze.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"246e4c50cd310a1a816c709fc5d7075cdbb724a1af1fb260ba6b62700607e3cb"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 65): (anonymous) has cognitive complexity 65 (threshold 15). Drivers by points: if/else 29 (42 pts), loops 11 (15 pts), error handling 3 (4 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 19). Most of this is not in the body itself: 3 of the 65 points are its own statements and the rest belongs to 27 function items inside it that branch (bubbleDown, computeCurrentScript, nextEvent, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/preambles/d8.js"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"d907e5742cb6f205ce7dfba17d3fed9b77cb1754b5670fef9d83b348119e7f5e"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parsePrimary (cognitive 64): Parser.parsePrimary has cognitive complexity 64 (threshold 15). Drivers by points: if/else 41 (57 pts), boolean chains 7 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8094}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7d943fa03c1584e135ddfde0da504653015ab1e94b09bd542a29181da4ff3ce"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseTryStatement (cognitive 64): Parser.parseTryStatement has cognitive complexity 64 (threshold 15). Drivers by points: if/else 19 (62 pts), boolean chains 1, loops 1 (nesting depth added 43). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10709}}}],"partialFingerprints":{"codehealthFindingId/v1":"07cc5e215716e65c81073e2bb6d13d653b4bc5e8a74a606c3e5f869170323f54"}},{"ruleId":"D2","level":"warning","message":{"text":"RuntimeTypesSubstitutionsMixin._computeChecks (cognitive 64): RuntimeTypesSubstitutionsMixin._computeChecks has cognitive complexity 64 (threshold 15). Drivers by points: if/else 16 (35 pts), loops 5 (12 pts), boolean chains 10, ternaries 2 (7 pts) (nesting depth added 31). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"74a68c0273637e73df383f8265547a63e3e7c9a58e492b2956de11d2030a9feb"}},{"ruleId":"D2","level":"warning","message":{"text":"RunCommand._runLocal (cognitive 64): RunCommand._runLocal has cognitive complexity 64 (threshold 15). Drivers by points: if/else 23 (45 pts), boolean chains 8, ternaries 2 (5 pts), match/switch 1 (4 pts), error handling 2 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/run.dart"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"5400ffefae3ac755c1b81b19165fd44bd26ce7df62f157caa1c4176047cccab4"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitClassSignature (cognitive 64): ProgramCompiler._emitClassSignature has cognitive complexity 64 (threshold 15). Drivers by points: if/else 20 (39 pts), ternaries 6 (12 pts), loops 3 (7 pts), boolean chains 6 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1816}}}],"partialFingerprints":{"codehealthFindingId/v1":"93e2de764ee115cf0c176a9d613358b94d23ca6750aa8dd9f0685be94049c895"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitClassSignature (cognitive 64): LibraryCompiler._emitClassSignature has cognitive complexity 64 (threshold 15). Drivers by points: if/else 20 (39 pts), ternaries 6 (12 pts), loops 3 (7 pts), boolean chains 6 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2113}}}],"partialFingerprints":{"codehealthFindingId/v1":"915cfdcbe3a6126ee5fd54ca1fbd6fd7e13ce981a1ce1e20704a86887c8631f3"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassMembersNodeBuilder.inferMethodType (cognitive 64): ClassMembersNodeBuilder.inferMethodType has cognitive complexity 64 (threshold 15). Drivers by points: if/else 18 (44 pts), loops 4 (15 pts), boolean chains 5 (nesting depth added 37). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a107bd53b4fd6af147192f24770577391c56074c93f77193cdb834a9d2086e4"}},{"ruleId":"D2","level":"warning","message":{"text":"StandardBounds._getFunctionStandardUpperBound (cognitive 64): StandardBounds._getFunctionStandardUpperBound has cognitive complexity 64 (threshold 15). Drivers by points: if/else 18 (36 pts), loops 7 (14 pts), boolean chains 8, ternaries 3 (6 pts) (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":1332}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c5fe04344f95d4934c51518e05f0078087077259a6b08f2695df54eabea8ea"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator.getFunctionDeclaration (cognitive 63): BytecodeGenerator.getFunctionDeclaration has cognitive complexity 63 (threshold 15). Drivers by points: if/else 33 (51 pts), boolean chains 9, loops 2, match/switch 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e051071ce28679bb0eeef13a79495b4aeca962f3ab7faa1a3f6e70afad7f1ba"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parse (cognitive 63): _ChunkedJsonParser.parse has cognitive complexity 63 (threshold 15). Drivers by points: if/else 25 (56 pts), loops 2 (3 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"5456b5f3844ce663248c0bd6fef42355542a681d6fc204a4e37bd3852004ce92"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisOptionsImpl.signature (cognitive 63): AnalysisOptionsImpl.signature has cognitive complexity 63 (threshold 15). Drivers by points: if/else 9 (38 pts), loops 7 (17 pts), match/switch 2 (8 pts) (nesting depth added 45). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"719f8f5af1152c99e060583170f9a690a9b4d61e50ccc2ad92a8d1a095d6f4f3"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisDriver._produceErrors (cognitive 63): AnalysisDriver._produceErrors has cognitive complexity 63 (threshold 15). Drivers by points: if/else 14 (43 pts), loops 6 (20 pts) (nesting depth added 43). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":2132}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c879820840dff447b545fc24fa56d2b695622ea0004a605267d679a923cf1a6"}},{"ruleId":"D2","level":"warning","message":{"text":"_ClassVerifier._verifyMustBeOverridden (cognitive 63): _ClassVerifier._verifyMustBeOverridden has cognitive complexity 63 (threshold 15). Drivers by points: if/else 17 (44 pts), boolean chains 11, loops 4 (7 pts), match/switch 1 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"54238967e0119d1258630c3e9728c80d9a9071fb57d3972021f149f1afacf625"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkUseOfDefaultValuesInParameters (cognitive 63): ErrorVerifier._checkUseOfDefaultValuesInParameters has cognitive complexity 63 (threshold 15). Drivers by points: if/else 27 (53 pts), ternaries 1 (7 pts), boolean chains 2, loops 1 (nesting depth added 32). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8632}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2547b4ef054e7cf9ca341c02d73e04aeff926b0ab7d804f85cff2bdc63fd809"}},{"ruleId":"D2","level":"warning","message":{"text":"_InitializerBuilder._createImplicitSuperInitializer (cognitive 63): _InitializerBuilder._createImplicitSuperInitializer has cognitive complexity 63 (threshold 15). Drivers by points: if/else 20 (42 pts), loops 3 (10 pts), match/switch 1 (5 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver_helpers.dart"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"b71f2e3bf5cb6954ba06a9d952a39267070287cb87d75fece397770959a09e46"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitClassDeclaration (cognitive 63): _Visitor.visitClassDeclaration has cognitive complexity 63 (threshold 15). Drivers by points: if/else 19 (55 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 39). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/diagnostic_describe_all_properties.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f98ccb02bac7b3a26fd34c1bd0d87ab4290b3e513c112ce18c8c5a81470b469"}},{"ruleId":"D2","level":"warning","message":{"text":"bin_to_assembly.Main (cognitive 63): bin_to_assembly.Main has cognitive complexity 63 (threshold 15). Drivers by points: if/else 38 (54 pts), loops 2 (6 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/bin_to_assembly.py"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aab468a98c5d9107f66cf547f69b42081e8fc3dec31e8a1dbfb444b02babafb"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 63): (anonymous) has cognitive complexity 63 (threshold 15). Drivers by points: if/else 28 (41 pts), loops 11 (15 pts), error handling 3 (4 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 19). Most of this is not in the body itself: 1 of the 63 points is its own statement and the rest belongs to 27 function items inside it that branch (bubbleDown, computeCurrentScript, nextEvent, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/preambles/jsshell.js"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6956587e463354dc03d366c4f76092630484d2c7f89b11b9fea5d914706d2d28"}},{"ruleId":"D2","level":"warning","message":{"text":"StackChecker.checkStackStateForAssert (cognitive 62): StackChecker.checkStackStateForAssert has cognitive complexity 62 (threshold 15). Drivers by points: if/else 27 (52 pts), boolean chains 5, loops 2 (3 pts), error handling 1 (2 pts) (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/stack_checker.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"16a733e78a467abec63ee8bc7cbb0b0a38fbbc57b97661ee95274e3d4a6c517b"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier._validateSwitchExhaustiveness (cognitive 62): ConstantVerifier._validateSwitchExhaustiveness has cognitive complexity 62 (threshold 15). Drivers by points: if/else 15 (32 pts), loops 5 (11 pts), ternaries 2 (10 pts), boolean chains 6, match/switch 1 (3 pts) (nesting depth added 33). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"77fb13f732c3a89c4ba151477bfa1323804236e05367db8e3829329faf4003fc"}},{"ruleId":"D2","level":"warning","message":{"text":"PatternConverter.dispatchPattern (cognitive 62): PatternConverter.dispatchPattern has cognitive complexity 62 (threshold 15). Drivers by points: if/else 29 (48 pts), loops 4 (8 pts), boolean chains 6 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/exhaustiveness.dart"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"a450ac9c3f39c7a9192c2f82bcabb2bc4ba507c6b15b5aa68d9282ad3664aaa0"}},{"ruleId":"D2","level":"warning","message":{"text":"ClosureDataBuilder._updateScopeBasedOnRtiNeed (cognitive 62): ClosureDataBuilder._updateScopeBasedOnRtiNeed has cognitive complexity 62 (threshold 15). Drivers by points: if/else 22 (58 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"b99c1d9f20b183097eb92b8f33a296b0dbf37f7305d4c1dc5d8d9353f2bad041"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitInvokeStatic (cognitive 62): SsaInstructionSimplifier.visitInvokeStatic has cognitive complexity 62 (threshold 15). Drivers by points: if/else 24 (61 pts), boolean chains 1 (nesting depth added 37). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2242}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbc32ba82f5f149927d56eaba43ee53eb688fcce9ecd7a95a6376f6c704201e0"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolutionWorldBuilder._getMemberUsage (cognitive 62): ResolutionWorldBuilder._getMemberUsage has cognitive complexity 62 (threshold 15). Drivers by points: if/else 17 (52 pts), boolean chains 6, loops 1 (4 pts) (nesting depth added 38). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"8749255acc47e3233504bc24f604da62021d4626c511b46d4beb112d2679cb90"}},{"ruleId":"D2","level":"warning","message":{"text":"SessionLogAnalyzer.processFile (cognitive 61): SessionLogAnalyzer.processFile has cognitive complexity 61 (threshold 15). Drivers by points: if/else 14 (38 pts), boolean chains 20, error handling 1 (2 pts), loops 1 (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/.agents/skills/improve-performance-with-session-log/scripts/analyze_session_log.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dac34ca18c2135cd337f0fa4ab9ac37b78aab785262a91a746572c6ba41702a"}},{"ruleId":"D2","level":"warning","message":{"text":"_Cookie._parseSetCookieValue (cognitive 61): _Cookie._parseSetCookieValue has cognitive complexity 61 (threshold 15). Drivers by points: if/else 24 (43 pts), ternaries 2 (6 pts), boolean chains 5, loops 3 (4 pts), match/switch 1 (3 pts) (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":1092}}}],"partialFingerprints":{"codehealthFindingId/v1":"11109c071c776a888d1382c93dae236d48fda94a7a304bfd07ac093f3f82e38a"}},{"ruleId":"D2","level":"warning","message":{"text":"NullSafetyDeadCodeVerifier.flowEnd (cognitive 61): NullSafetyDeadCodeVerifier.flowEnd has cognitive complexity 61 (threshold 15). Drivers by points: if/else 30 (53 pts), boolean chains 8 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/dead_code_verifier.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"53c0a3ecc4865e8e2f73a8e83a20c6a19b4731fdd6315214b38c020b6181cd25"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForMixinWithConflictingPrivateMember (cognitive 61): ErrorVerifier._checkForMixinWithConflictingPrivateMember has cognitive complexity 61 (threshold 15). Drivers by points: if/else 15 (48 pts), loops 4 (13 pts) (nesting depth added 42). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":6801}}}],"partialFingerprints":{"codehealthFindingId/v1":"154dfe82bdb0f57bb65bc3b1f98540a975f74aa36f85453d5d63dfbbf3833c5d"}},{"ruleId":"D2","level":"warning","message":{"text":"ConditionTargets._step (cognitive 61): ConditionTargets._step has cognitive complexity 61 (threshold 15). Drivers by points: if/else 20 (52 pts), boolean chains 4, ternaries 1 (4 pts), loops 1 (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4268}}}],"partialFingerprints":{"codehealthFindingId/v1":"49b17608e4fceffc21b28443fbb48885ff76189c723f964b393c39f49178554b"}},{"ruleId":"D2","level":"warning","message":{"text":"LibrariesSpecification.parse (cognitive 60): LibrariesSpecification.parse has cognitive complexity 60 (threshold 15). Drivers by points: if/else 28 (48 pts), loops 3 (7 pts), boolean chains 3, error handling 1, ternaries 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/libraries_specification.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9bcb73a475421719f7dc0e666d101840054a7a85fcf625b7d647f79d917cd82"}},{"ruleId":"D2","level":"warning","message":{"text":"InheritanceManager3._getInterfaceClass (cognitive 60): InheritanceManager3._getInterfaceClass has cognitive complexity 60 (threshold 15). Drivers by points: if/else 15 (31 pts), loops 8 (15 pts), ternaries 2 (10 pts), boolean chains 4 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9082d57b0a9ca6a2549b33efaa0a60ad29889a3ddbd67f747c70b79602d6ea2"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionTarget.forOffset (cognitive 60): CompletionTarget.forOffset has cognitive complexity 60 (threshold 15). Drivers by points: if/else 17 (53 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 39). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3200f3ba5bd773c2102cc59445cc8984a6a0fe0dcb69e597ff5230dc810ffb0"}},{"ruleId":"D2","level":"warning","message":{"text":"HValidator.visitBasicBlock (cognitive 60): HValidator.visitBasicBlock has cognitive complexity 60 (threshold 15). Drivers by points: if/else 25 (38 pts), boolean chains 16, loops 5 (6 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/validate.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddb725d6b977486e2167bca6a850c52ad02b8de7f17442c5d34e7095f005e372"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler._computeReusedLibraries (cognitive 60): IncrementalCompiler._computeReusedLibraries has cognitive complexity 60 (threshold 15). Drivers by points: if/else 22 (40 pts), loops 9 (14 pts), boolean chains 6 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2660}}}],"partialFingerprints":{"codehealthFindingId/v1":"704459c7ff17348885ed3384fc0ecda2397557ab58300548de1e0942825d1619"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassIdNumbering._number (cognitive 59): ClassIdNumbering._number has cognitive complexity 59 (threshold 15). Drivers by points: if/else 25 (42 pts), loops 5 (10 pts), ternaries 2 (6 pts), boolean chains 1 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/class_info.dart"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"13a3d29bcfcb455b3ae8c2d4bbd1a02234a93c4bcd92339c844b2a9235733683"}},{"ruleId":"D2","level":"warning","message":{"text":"InferrerEngine._runOverAllElements (cognitive 59): InferrerEngine._runOverAllElements has cognitive complexity 59 (threshold 15). Drivers by points: if/else 25 (47 pts), loops 6 (8 pts), boolean chains 3, ternaries 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"17fc254d78f28c3ac74a8f9ec0d35c67b9ca19df33b95682448346280ad10d13"}},{"ruleId":"D2","level":"warning","message":{"text":"InterceptorStubGenerator._fastPathForOneShotInterceptor (cognitive 59): InterceptorStubGenerator._fastPathForOneShotInterceptor has cognitive complexity 59 (threshold 15). Drivers by points: if/else 22 (44 pts), boolean chains 13, ternaries 1 (2 pts) (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2370ce4903b7da67d7cb26ee12d1031ba6a9ffd865063c20584bbcf6d972c91"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramBuilder._buildClass (cognitive 59): ProgramBuilder._buildClass has cognitive complexity 59 (threshold 15). Drivers by points: if/else 27 (43 pts), boolean chains 10, loops 3 (4 pts), ternaries 2 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"a765dc7970f2cb829c7d85b7a37e9cfda36fab00835232d77ac4a8188fc2be01"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._defineClass (cognitive 59): ProgramCompiler._defineClass has cognitive complexity 59 (threshold 15). Drivers by points: if/else 17 (32 pts), ternaries 6 (12 pts), boolean chains 8, loops 5 (7 pts) (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1462}}}],"partialFingerprints":{"codehealthFindingId/v1":"810074d5de1d08fed501ea9c9ff2b3eea9b94f1501afc24efa4bf341d1533fcd"}},{"ruleId":"D2","level":"warning","message":{"text":"ForwardingNode.finalize (cognitive 59): ForwardingNode.finalize has cognitive complexity 59 (threshold 15). Drivers by points: if/else 21 (35 pts), boolean chains 19, match/switch 1 (5 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"0daba87b52ec672b854ba8981972a1e91b6de7a11ea97a737651fa2d30c1605f"}},{"ruleId":"D2","level":"warning","message":{"text":"idlsync.copy_files (cognitive 59): idlsync.copy_files has cognitive complexity 59 (threshold 15). Drivers by points: if/else 13 (53 pts), loops 2 (3 pts), boolean chains 2, error handling 1 (nesting depth added 41). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlsync.py"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f0d75186f9fb971aeccf5fe5af47a2568cb9d5ae6b43081415c8355ccb7cbad"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parse (cognitive 58): _ChunkedJsonParser.parse has cognitive complexity 58 (threshold 15). Drivers by points: if/else 23 (52 pts), loops 2 (3 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"698df8404566d4bb42c6becfdc897f6f6dd3d40f097c0c69fb99f25f3e1c863e"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator._visitElements (cognitive 58): Evaluator._visitElements has cognitive complexity 58 (threshold 15). Drivers by points: if/else 12 (28 pts), match/switch 7 (25 pts), ternaries 1 (4 pts), loops 1 (nesting depth added 37). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd2fc0f5eeeeadee4b01faf5c217bd218fecbee106c11290da88784f33cbaf1d"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementCompletionProcessor._complete_tryStatement (cognitive 58): StatementCompletionProcessor._complete_tryStatement has cognitive complexity 58 (threshold 15). Drivers by points: if/else 21 (56 pts), boolean chains 2 (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ebc0de78f8b44d2cca4de505d8645b45f9cd5a00b5b480e89fdc0864785d30"}},{"ruleId":"D2","level":"warning","message":{"text":"AddLate.compute (cognitive 58): AddLate.compute has cognitive complexity 58 (threshold 15). Drivers by points: if/else 17 (49 pts), boolean chains 9 (nesting depth added 32). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_late.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f89c9322ee600734be9bf112d151c777c2db3bbb82946053f609fd8a227caf5"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveUnusedField.compute (cognitive 58): RemoveUnusedField.compute has cognitive complexity 58 (threshold 15). Drivers by points: if/else 17 (35 pts), boolean chains 9, match/switch 2 (8 pts), loops 3 (6 pts) (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"89b7e7fdaf6e9118ef73b2570a1df4ed9101bce5b9116ac7a3b0ded4ed2656d9"}},{"ruleId":"D2","level":"warning","message":{"text":"_SignatureUpdater.updateDeclaration (cognitive 58): _SignatureUpdater.updateDeclaration has cognitive complexity 58 (threshold 15). Drivers by points: if/else 29 (46 pts), loops 3 (4 pts), boolean chains 3, ternaries 1 (3 pts), match/switch 1 (2 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"762ef5d1513920f6987a9df23306bdc04789fe6657fee6773f96063749344d8a"}},{"ruleId":"D2","level":"warning","message":{"text":"InheritanceManager3._getInterfaceExtensionType (cognitive 58): InheritanceManager3._getInterfaceExtensionType has cognitive complexity 58 (threshold 15). Drivers by points: if/else 21 (42 pts), loops 9 (11 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be82d77939e41fb2864740f85daa3d8f32e4f76c42316a38855f3d9b9dd5b08"}},{"ruleId":"D2","level":"warning","message":{"text":"SubtypeHelper._isFunctionSubtypeOf (cognitive 58): SubtypeHelper._isFunctionSubtypeOf has cognitive complexity 58 (threshold 15). Drivers by points: if/else 24 (49 pts), match/switch 1 (4 pts), boolean chains 3, loops 2 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/subtype.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cc6512f4b6708f67de7b76d9666889a23149f928739ed27b9df771d3dd08ecd"}},{"ruleId":"D2","level":"warning","message":{"text":"UseResultVerifier._isUsed (cognitive 58): UseResultVerifier._isUsed has cognitive complexity 58 (threshold 15). Drivers by points: boolean chains 49, if/else 8 (9 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/use_result_verifier.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ca6a42c92823b0ba4dbe67279a17f21a4d95338747972f35dd837161473892d"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaSimplifyInterceptors.visitInterceptor (cognitive 58): SsaSimplifyInterceptors.visitInterceptor has cognitive complexity 58 (threshold 15). Drivers by points: if/else 18 (40 pts), boolean chains 13, loops 2 (5 pts) (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_simplifier.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e042c8c0c8c1ce7eca714d3b8790e016c1688ce33d982ba72a7b4b9c8c4fc06"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantsTransformer.visitSwitchExpression (cognitive 58): ConstantsTransformer.visitSwitchExpression has cognitive complexity 58 (threshold 15). Drivers by points: if/else 17 (39 pts), loops 6 (11 pts), boolean chains 5, ternaries 1 (3 pts) (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2001}}}],"partialFingerprints":{"codehealthFindingId/v1":"83e5f7d7a6ed9563ecc5ebcae3a860d6c39074020e0be40eafff97daa949ab86"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.handleConstructorInvocation (cognitive 58): ConstantEvaluator.handleConstructorInvocation has cognitive complexity 58 (threshold 15). Drivers by points: if/else 18 (48 pts), loops 6, match/switch 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3732}}}],"partialFingerprints":{"codehealthFindingId/v1":"acc1677674eac9bb4805c6742a35c9b594593aeb810abe02b05435c2dbf2badb"}},{"ruleId":"D2","level":"warning","message":{"text":"JsInteropChecks.visitProcedure (cognitive 57): JsInteropChecks.visitProcedure has cognitive complexity 57 (threshold 15). Drivers by points: if/else 16 (34 pts), boolean chains 23 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"11c3297551ebd514c9514bdf1cc4ec882c1c55a817d278189ed684527bf9eb9d"}},{"ruleId":"D2","level":"warning","message":{"text":"FlutterConvertToStatelessWidget.compute (cognitive 57): FlutterConvertToStatelessWidget.compute has cognitive complexity 57 (threshold 15). Drivers by points: if/else 21 (44 pts), boolean chains 7, loops 4 (6 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a561426630af5691e652fd9bdfdcd6a3cc2c8f6818114c2fcf1ec9f8f0eb1c7"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodInvocationResolver.resolveUnqualified (cognitive 57): MethodInvocationResolver.resolveUnqualified has cognitive complexity 57 (threshold 15). Drivers by points: if/else 19 (36 pts), boolean chains 18, ternaries 1 (3 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"5262493e6901fedb6638227d90fd8433e202da6982e620bc085f91e87bd0cf21"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryManifestBuilder._buildManifests (cognitive 57): LibraryManifestBuilder._buildManifests has cognitive complexity 57 (threshold 15). Drivers by points: if/else 13 (30 pts), loops 13 (26 pts), boolean chains 1 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":888}}}],"partialFingerprints":{"codehealthFindingId/v1":"db80958350411c090af0d70cceb4dfcaccea43e9737f5f9aab986fa414ca42c0"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSelection._followingSameFaultInstruction (cognitive 57): SsaInstructionSelection._followingSameFaultInstruction has cognitive complexity 57 (threshold 15). Drivers by points: if/else 18 (49 pts), ternaries 1 (5 pts), boolean chains 2, loops 1 (nesting depth added 35). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"320836aa0fabcef10b93a6503684739695847de6de0f48c765c8b03350c14e38"}},{"ruleId":"D2","level":"warning","message":{"text":"DartDebugAdapter.variablesRequest (cognitive 57): DartDebugAdapter.variablesRequest has cognitive complexity 57 (threshold 15). Drivers by points: if/else 17 (24 pts), ternaries 8 (20 pts), boolean chains 7, error handling 2 (4 pts), match/switch 1 (2 pts) (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":2264}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d49de94a530861e4c72a38bf7ec5685e567a0df544c2633261eac4233f5bb26"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.visitStaticInvocation (cognitive 57): ConstantEvaluator.visitStaticInvocation has cognitive complexity 57 (threshold 15). Drivers by points: if/else 29 (52 pts), boolean chains 5 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5181}}}],"partialFingerprints":{"codehealthFindingId/v1":"85bc6387716ee6d498ec106d72fc0b4364d3789e57a51ccc52d2de11061af45c"}},{"ruleId":"D2","level":"warning","message":{"text":"CfeTypeOperations.getFieldTypes (cognitive 57): CfeTypeOperations.getFieldTypes has cognitive complexity 57 (threshold 15). Drivers by points: if/else 15 (36 pts), loops 7 (16 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 32). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e4ef97811f6529c4e9f58707440861a424195bf5012f8a248aac4b8eb7e5638"}},{"ruleId":"D2","level":"warning","message":{"text":"minimize.minimize (cognitive 57): minimize.minimize has cognitive complexity 57 (threshold 15). Drivers by points: if/else 19 (46 pts), boolean chains 10, loops 1 (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/minimize.py"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b26042d3b2c7edd3a8cd46c6b11852fe8968ca7cc98c194b9ccbf4968566365"}},{"ruleId":"D2","level":"warning","message":{"text":"DatabaseBuilder._merge_nodes (cognitive 57): DatabaseBuilder._merge_nodes has cognitive complexity 57 (threshold 15). Drivers by points: if/else 13 (45 pts), loops 3 (7 pts), boolean chains 5 (nesting depth added 36). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"4207e7a169a7a9156c9acb4d3ef4ef633ec91c6ecc89d8a5878bab3f18ded06f"}},{"ruleId":"D2","level":"warning","message":{"text":"Primitives._generalApplyFunction (cognitive 56): Primitives._generalApplyFunction has cognitive complexity 56 (threshold 15). Drivers by points: if/else 24 (47 pts), loops 2 (6 pts), boolean chains 2, ternaries 1 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b4f3f9cf8156f5e0712ad015d061737bdfc8cd96e869fe62b04521af5cf7c99"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl.modPow (cognitive 56): _BigIntImpl.modPow has cognitive complexity 56 (threshold 15). Drivers by points: if/else 22 (33 pts), loops 8 (17 pts), boolean chains 4, ternaries 1 (2 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":1939}}}],"partialFingerprints":{"codehealthFindingId/v1":"332f0c509cd7b9a4607227363707d697a4cb5712189ab76c27308fad89ef07b4"}},{"ruleId":"D2","level":"warning","message":{"text":"MemorySet.intersectionFor (cognitive 56): MemorySet.intersectionFor has cognitive complexity 56 (threshold 15). Drivers by points: if/else 20 (53 pts), loops 2 (3 pts) (nesting depth added 34). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":5097}}}],"partialFingerprints":{"codehealthFindingId/v1":"86ffa8243847f8d45f38e6d400651b9e158e3657ad47bcdf7a4495f7f62410f4"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassHierarchyNodeBuilder.build (cognitive 56): ClassHierarchyNodeBuilder.build has cognitive complexity 56 (threshold 15). Drivers by points: if/else 15 (34 pts), loops 4 (18 pts), ternaries 1 (4 pts) (nesting depth added 36). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/hierarchy_node.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"6757c8805aa113d51ed3b29bb62b54bae2032cde5e885c8aa0687827942aa69f"}},{"ruleId":"D2","level":"warning","message":{"text":"Translator.translateStorageType (cognitive 55): Translator.translateStorageType has cognitive complexity 55 (threshold 15). Drivers by points: if/else 22 (41 pts), ternaries 3 (6 pts), boolean chains 5, loops 1 (3 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"87e0e352519d107304b752937326f7f8b66194f19595d1fed4d23b5ae69c74d5"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseArgumentOrIndexStar (cognitive 55): Parser.parseArgumentOrIndexStar has cognitive complexity 55 (threshold 15). Drivers by points: if/else 18 (51 pts), boolean chains 3, loops 1 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7995}}}],"partialFingerprints":{"codehealthFindingId/v1":"67f0250dca227640dd46a8268f0d3f060ab6d03e0c05c40ce7d5fd13717425ec"}},{"ruleId":"D2","level":"warning","message":{"text":"_AddDigitSeparators.compute (cognitive 55): _AddDigitSeparators.compute has cognitive complexity 55 (threshold 15). Drivers by points: if/else 23 (46 pts), boolean chains 6, ternaries 1 (3 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_digit_separators.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"15cbf38a2112d3db6f02929c7b4fa6b80cccb8d05d90575d65ec226ff9c057f0"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementMatcher.matches (cognitive 55): ElementMatcher.matches has cognitive complexity 55 (threshold 15). Drivers by points: if/else 15 (35 pts), loops 6 (17 pts), boolean chains 3 (nesting depth added 31). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b02b6f883b7e6f7a9ce45ef2446dd3a674b4f5424b1c3b0ca9959af86080f42"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractLocalRefactoringImpl._checkSelection (cognitive 55): ExtractLocalRefactoringImpl._checkSelection has cognitive complexity 55 (threshold 15). Drivers by points: if/else 18 (40 pts), boolean chains 14, loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b20c0191688ed0eaa83b623d736984b00827f44c7bf62e96baed4641ec3c4ed"}},{"ruleId":"D2","level":"warning","message":{"text":"LeastUpperBoundHelper._functionType (cognitive 55): LeastUpperBoundHelper._functionType has cognitive complexity 55 (threshold 15). Drivers by points: if/else 21 (44 pts), ternaries 1 (5 pts), boolean chains 3, loops 3 (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"41fccaa28c53a16423065b849c3e5f69eea9b94caddca4586dd240141e44d137"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForAllMixinErrorCodes (cognitive 55): ErrorVerifier._checkForAllMixinErrorCodes has cognitive complexity 55 (threshold 15). Drivers by points: if/else 16 (49 pts), boolean chains 5, loops 1 (nesting depth added 33). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":2967}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e31a3419ce1a00b07cc5b736d515ae43ec8bbca11a998df4db0b1db7cfdf0f"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionTarget.computeReplacementRange (cognitive 55): CompletionTarget.computeReplacementRange has cognitive complexity 55 (threshold 15). Drivers by points: if/else 14 (35 pts), boolean chains 8, loops 2 (8 pts), ternaries 2 (4 pts) (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"efea83e83c599a7823e26209cb993909421e7575becef80818dc23b3c8c756d8"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeEmitter.prepareNativeClasses (cognitive 55): NativeEmitter.prepareNativeClasses has cognitive complexity 55 (threshold 15). Drivers by points: if/else 25 (38 pts), boolean chains 10, loops 4 (7 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/native_emitter.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"d493e6ae59227d94e0bf3b5b37128c59f69ccb38cc73c67e36f673e39cde48b6"}},{"ruleId":"D2","level":"warning","message":{"text":"_FlowAnalysisImpl._getNonPromotionReasons (cognitive 54): _FlowAnalysisImpl._getNonPromotionReasons has cognitive complexity 54 (threshold 15). Drivers by points: if/else 10 (25 pts), loops 5 (20 pts), ternaries 2 (9 pts) (nesting depth added 37). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":8681}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae20aa68fe407aa911eb7f86cc7a85e85b951786540997fdea3303e32eab8d60"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeFractionPart (cognitive 54): AbstractScanner.tokenizeFractionPart has cognitive complexity 54 (threshold 15). Drivers by points: if/else 13 (33 pts), boolean chains 7, loops 3 (7 pts), ternaries 2 (7 pts) (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1695}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b5d438d9ee64a624971424c310b90928627757d0bbce8f5f0c3163e3d0c51d1"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitClassDeclaration (cognitive 54): InScopeCompletionPass.visitClassDeclaration has cognitive complexity 54 (threshold 15). Drivers by points: if/else 19 (44 pts), boolean chains 7, loops 1 (3 pts) (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"36226b21d46633a8f022f1004114225c9d52e07c5f954e21dade2a56963c5de3"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitSwitchPatternCase (cognitive 54): InScopeCompletionPass.visitSwitchPatternCase has cognitive complexity 54 (threshold 15). Drivers by points: if/else 22 (48 pts), boolean chains 3, match/switch 1 (3 pts) (nesting depth added 28). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":3155}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c1fc616d5935beb967a5d910d20fc394a8ee1bcb36e5bff7dd23dbe65fccb7"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkFixProcessor._computeChangesToPubspec (cognitive 54): BulkFixProcessor._computeChangesToPubspec has cognitive complexity 54 (threshold 15). Drivers by points: if/else 9 (27 pts), loops 6 (16 pts), ternaries 2 (7 pts), boolean chains 4 (nesting depth added 33). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"11fe1dbb6f105d178c087aae4af5e10fbdccd608b738225bb123def5b1402032"}},{"ruleId":"D2","level":"warning","message":{"text":"AddNullCheck.compute (cognitive 54): AddNullCheck.compute has cognitive complexity 54 (threshold 15). Drivers by points: if/else 27 (32 pts), boolean chains 19, ternaries 1 (3 pts) (nesting depth added 7). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_null_check.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"1967d011c248cc77effcb0a669232c0189bcda754dfa1fb79dc4ac1eeeab7095"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor.resolveArgumentsToParameters (cognitive 54): ResolverVisitor.resolveArgumentsToParameters has cognitive complexity 54 (threshold 15). Drivers by points: if/else 19 (36 pts), ternaries 3 (10 pts), boolean chains 5, loops 3 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":6183}}}],"partialFingerprints":{"codehealthFindingId/v1":"676b88c7fd79190bdfe66f9f521a54a711211e5701c9f192cfd6427d3be1ce6b"}},{"ruleId":"D2","level":"warning","message":{"text":"CodegenWorldBuilder._getMemberUsage (cognitive 54): CodegenWorldBuilder._getMemberUsage has cognitive complexity 54 (threshold 15). Drivers by points: if/else 17 (47 pts), loops 1 (4 pts), boolean chains 3 (nesting depth added 33). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc22b82f6a0967a33e3aa5af1bd444b657be8eacf2812b8330c6ef1a24ab7b41"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endSwitchCase (cognitive 54): BodyBuilderImpl.endSwitchCase has cognitive complexity 54 (threshold 15). Drivers by points: if/else 13 (31 pts), loops 6 (14 pts), boolean chains 9 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":5435}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb6086032a56cb2bdd8e9a0a460c2a37f7813d198ee5208e21cf81b03fad189d"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._tryFixingMethodInvocation (cognitive 53): _Visitor._tryFixingMethodInvocation has cognitive complexity 53 (threshold 15). Drivers by points: if/else 25 (47 pts), boolean chains 2, loops 1 (2 pts), match/switch 1 (2 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/tool/messages/use_literate_api_in_analyzer.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"0673def5bc6b491f94a2b4b0016ac33f8e71d95167f8dabfb00b7751673f7c28"}},{"ruleId":"D2","level":"warning","message":{"text":"int._parseRadix (cognitive 53): int._parseRadix has cognitive complexity 53 (threshold 15). Drivers by points: if/else 15 (36 pts), ternaries 3 (8 pts), boolean chains 5, loops 4 (nesting depth added 26). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/integers_patch.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1cbd6c907696c0029099384c3022e21774a73df7924cb053e5f4561a445c5d"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Decoder.decodeGeneral (cognitive 53): _Utf8Decoder.decodeGeneral has cognitive complexity 53 (threshold 15). Drivers by points: if/else 15 (34 pts), loops 4 (10 pts), match/switch 1 (5 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/utf.dart"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e1e65d5d31321e6fda7510f0ba720b182c097544c0c335800d7dc3c3fecb5b1"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseLiteralSetOrMapSuffix (cognitive 53): Parser.parseLiteralSetOrMapSuffix has cognitive complexity 53 (threshold 15). Drivers by points: if/else 18 (45 pts), loops 2 (4 pts), ternaries 1 (4 pts) (nesting depth added 32). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8555}}}],"partialFingerprints":{"codehealthFindingId/v1":"11679472e046a3a6507d3f466ee1bf0d1c691c8bd04bf242dc414bfccb02da82"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionResolveHandler.resolveDartCompletion (cognitive 53): CompletionResolveHandler.resolveDartCompletion has cognitive complexity 53 (threshold 15). Drivers by points: if/else 12 (33 pts), ternaries 2 (7 pts), boolean chains 6, loops 2 (5 pts), error handling 1 (2 pts) (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b3ce7b431ceb5d9f7d79d796a92a6ecea0ba5ead1af48a96a82e81f7315acf"}},{"ruleId":"D2","level":"warning","message":{"text":"ResultMerger.mergeNavigation (cognitive 53): ResultMerger.mergeNavigation has cognitive complexity 53 (threshold 15). Drivers by points: if/else 14 (38 pts), loops 7 (13 pts), boolean chains 2 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"5752859d911b30f85faed5c9ad9f5e1b4794766c90bd66cf3e61880e65454220"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertNullCheckToNullAwareElementOrEntry.compute (cognitive 53): ConvertNullCheckToNullAwareElementOrEntry.compute has cognitive complexity 53 (threshold 15). Drivers by points: if/else 16 (35 pts), ternaries 3 (12 pts), match/switch 1 (4 pts), boolean chains 2 (nesting depth added 31). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_null_check_to_null_aware_element_or_entry.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"85ddb64b7e3768d0a9a79f2ccbe80e6941a4716d66235bcf811d5b4959483a51"}},{"ruleId":"D2","level":"warning","message":{"text":"InlineTypedef.compute (cognitive 53): InlineTypedef.compute has cognitive complexity 53 (threshold 15). Drivers by points: if/else 24 (49 pts), boolean chains 3, loops 1 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/inline_typedef.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"652b777092b77848d95d01f7c7c44f7d43058a493c61bc72f811d9cd86bd5276"}},{"ruleId":"D2","level":"warning","message":{"text":"DillLibraryBuilder.ensureLoaded (cognitive 53): DillLibraryBuilder.ensureLoaded has cognitive complexity 53 (threshold 15). Drivers by points: if/else 23 (33 pts), boolean chains 8, loops 7, ternaries 1 (3 pts), match/switch 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_library_builder.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f1e6d1f2c09a4fd7c81c196e8046c5ff2bc685765449184b84d7c2df1632bcf"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitRecordLiteral (cognitive 53): InferenceVisitorImpl.visitRecordLiteral has cognitive complexity 53 (threshold 15). Drivers by points: if/else 15 (33 pts), loops 5 (10 pts), boolean chains 5, match/switch 2 (5 pts) (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":11054}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3fb10b5b3a87210ccbcda469714f6062e8da4bc3ac8d25f932b7ef4d0e28229"}},{"ruleId":"D2","level":"warning","message":{"text":"InstanceViewElement._createMembers (cognitive 53): InstanceViewElement._createMembers has cognitive complexity 53 (threshold 15). Drivers by points: if/else 31 (39 pts), ternaries 4 (8 pts), boolean chains 6 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0f0fe0d0a51a5f1e457e6b688a2020b1e8fbb9949e49dce6c60c65414b0c0a8"}},{"ruleId":"D2","level":"warning","message":{"text":"Base64Codec.normalize (cognitive 52): Base64Codec.normalize has cognitive complexity 52 (threshold 15). Drivers by points: if/else 19 (44 pts), loops 2 (4 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/base64.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d41fefd0fbbb4e336cdc1ea368e240a76c64aa0b282dc2a5a1da34c91fc58b9"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner._spacesAtStartOfLogicalLineOf (cognitive 52): AbstractScanner._spacesAtStartOfLogicalLineOf has cognitive complexity 52 (threshold 15). Drivers by points: if/else 16 (37 pts), boolean chains 11, loops 2 (4 pts) (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"e65a3abdc7d34ed1ff9d22a2a1e8b2c3ee83467b4de1baa371fbbbd810994ce8"}},{"ruleId":"D2","level":"warning","message":{"text":"Features.getText (cognitive 52): Features.getText has cognitive complexity 52 (threshold 15). Drivers by points: if/else 19 (48 pts), loops 2 (4 pts) (nesting depth added 31). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/features.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"82adbe935d007a8f34a7f87a18889e05826eea184f3588efe4c6e709461f5fb6"}},{"ruleId":"D2","level":"warning","message":{"text":"Features.fromText (cognitive 52): Features.fromText has cognitive complexity 52 (threshold 15). Drivers by points: if/else 21 (44 pts), boolean chains 4, loops 2 (4 pts) (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/features.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a2157f0c724e39a5b74eb6f9672760c2f99cf68a1c06177f1853e4d03383d28"}},{"ruleId":"D2","level":"warning","message":{"text":"DartUnitHoverComputer.compute (cognitive 52): DartUnitHoverComputer.compute has cognitive complexity 52 (threshold 15). Drivers by points: boolean chains 25, if/else 11 (24 pts), loops 1 (3 pts) (nesting depth added 15). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_hover.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"f05ecc03532b0ad1bb286b6e34877a432684ae21ed1edc0fd8b6cdef3b81554a"}},{"ruleId":"D2","level":"warning","message":{"text":"_MinimalEditComputer.computeMinimalEdits (cognitive 52): _MinimalEditComputer.computeMinimalEdits has cognitive complexity 52 (threshold 15). Drivers by points: if/else 14 (39 pts), loops 4 (7 pts), boolean chains 6 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/source_edits.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"c46c4e930e649de6ede87f159c87004c96dae7edcdc8632e513eab59c99de3e4"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToNamedArguments.compute (cognitive 52): ConvertToNamedArguments.compute has cognitive complexity 52 (threshold 15). Drivers by points: if/else 16 (40 pts), loops 4 (10 pts), boolean chains 2 (nesting depth added 30). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_named_arguments.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"a04b9d2a2242764d14b92930c5d4ba82b21fd0c120d0f150b5fc4219fd168eb0"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveUnusedParameter.compute (cognitive 52): RemoveUnusedParameter.compute has cognitive complexity 52 (threshold 15). Drivers by points: if/else 25 (44 pts), boolean chains 6, ternaries 1 (2 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused_parameter.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"16ec0316d7434fead6e091a6781815cce42b043d4ed92a39511bed2dd3ce2219"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementUsageDetector.checkUsage (cognitive 52): ElementUsageDetector.checkUsage has cognitive complexity 52 (threshold 15). Drivers by points: if/else 30 (43 pts), boolean chains 5, loops 3 (4 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eec1891b7951d09b0851e6bd75803092556b5c135963548c5476ad983f56af0"}},{"ruleId":"D2","level":"warning","message":{"text":"_Finder._visit (cognitive 52): _Finder._visit has cognitive complexity 52 (threshold 15). Drivers by points: if/else 20 (50 pts), loops 1 (2 pts) (nesting depth added 31). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/type_alias.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"da4d315347b9cdd204c98b5a258d412cd3f1ee643bde2982c63e2588b28e6d07"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaPhiConditioning.handlePhi (cognitive 52): SsaPhiConditioning.handlePhi has cognitive complexity 52 (threshold 15). Drivers by points: if/else 15 (36 pts), loops 6 (13 pts), boolean chains 3 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1485}}}],"partialFingerprints":{"codehealthFindingId/v1":"19345a53e6ab9fb6c2361050750faa3f3d97b29c426354d5f4a0d213f04fc6aa"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolutionWorldBuilder._processMemberInUsedClass (cognitive 52): ResolutionWorldBuilder._processMemberInUsedClass has cognitive complexity 52 (threshold 15). Drivers by points: if/else 17 (45 pts), loops 1 (4 pts), boolean chains 3 (nesting depth added 31). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a723f3737b1725d6519fdf9f05e9deacbef040223b4ce0363f70588f6c0fc38"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeFractionPart (cognitive 51): AbstractScanner.tokenizeFractionPart has cognitive complexity 51 (threshold 15). Drivers by points: if/else 16 (39 pts), loops 3 (7 pts), boolean chains 4, ternaries 1 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"44104a3b1acc21bbe79299c4a0d794dd41790cf185101180f9da3001bc07d1d4"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Decoder._convertChunkInternal (cognitive 51): _Utf8Decoder._convertChunkInternal has cognitive complexity 51 (threshold 15). Drivers by points: if/else 17 (31 pts), ternaries 4 (13 pts), boolean chains 4, match/switch 1 (2 pts), loops 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2398}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e0aec0eb2e0ffff54a0ec8bdea3f41be837a38b618f315f2eaeb21264d18059"}},{"ruleId":"D2","level":"warning","message":{"text":"Stdin.readLineSync (cognitive 51): Stdin.readLineSync has cognitive complexity 51 (threshold 15). Drivers by points: if/else 13 (36 pts), loops 4 (10 pts), boolean chains 5 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/stdio.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d65611249c69277199a42a89b9f9f7c2db60884d9208c069b9f30068c581b9c"}},{"ruleId":"D2","level":"warning","message":{"text":"ColorComputer._getDartUiColor (cognitive 51): ColorComputer._getDartUiColor has cognitive complexity 51 (threshold 15). Drivers by points: ternaries 15 (32 pts), boolean chains 9, if/else 5, match/switch 1 (3 pts), loops 1 (2 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_color.dart"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8577761bb5954f738c6b2c34a2110fa1f9ccb0ff8a5bb94cd653d69965d9545"}},{"ruleId":"D2","level":"warning","message":{"text":"FlutterOutlineComputer._createOutline (cognitive 51): FlutterOutlineComputer._createOutline has cognitive complexity 51 (threshold 15). Drivers by points: if/else 21 (41 pts), loops 2 (7 pts), boolean chains 3 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"a18aeff76359330cc5eee122441dc9607c786a1b460a97fd11108914730448ba"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToFunctionDeclaration.compute (cognitive 51): ConvertToFunctionDeclaration.compute has cognitive complexity 51 (threshold 15). Drivers by points: if/else 30 (47 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_function_declaration.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f0bcdbe4c151b2e40270d3c1fada9afab227d23fa163c7019af2fada2586242"}},{"ruleId":"D2","level":"warning","message":{"text":"IgnoreValidator._reportUnnecessaryOrRemovedOrDeprecatedIgnores (cognitive 51): IgnoreValidator._reportUnnecessaryOrRemovedOrDeprecatedIgnores has cognitive complexity 51 (threshold 15). Drivers by points: if/else 15 (39 pts), ternaries 2 (8 pts), loops 2 (4 pts) (nesting depth added 32). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/ignore_validator.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"2179ce743effda4e86e90077f4c79a8b1610b808dbde83239c5cbbd3f1d55e55"}},{"ruleId":"D2","level":"warning","message":{"text":"ReturnTypeVerifier._checkReturnExpression (cognitive 51): ReturnTypeVerifier._checkReturnExpression has cognitive complexity 51 (threshold 15). Drivers by points: if/else 24 (47 pts), boolean chains 4 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/return_type_verifier.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aaa0c33be933914e2576e41d12b1531d992db175b3db6730f4db0409bbd1b2a"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForConflictingInitializerErrorCodes (cognitive 51): ErrorVerifier._checkForConflictingInitializerErrorCodes has cognitive complexity 51 (threshold 15). Drivers by points: if/else 17 (45 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":4420}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db10c5c1c05e503d326791cf8a320259bf94d50933f9c52a38d70b63073b429"}},{"ruleId":"D2","level":"warning","message":{"text":"Linker._computeRedirectingConstructorCycles (cognitive 51): Linker._computeRedirectingConstructorCycles has cognitive complexity 51 (threshold 15). Drivers by points: if/else 6 (32 pts), loops 5 (18 pts), boolean chains 1 (nesting depth added 39). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/link.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"22260d76ce37ed01f4fd2d42404dbf352e2010b1b4140b925e175de8b781f622"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassHierarchyImpl.commonSubclasses (cognitive 51): ClassHierarchyImpl.commonSubclasses has cognitive complexity 51 (threshold 15). Drivers by points: if/else 27 (47 pts), boolean chains 4 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"66459a3718742b944c4e7c1c09e4e0d940cfd358ebfa774461c0238cbaaf8034"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLibraryBuilder.computeFieldPromotability (cognitive 51): SourceLibraryBuilder.computeFieldPromotability has cognitive complexity 51 (threshold 15). Drivers by points: if/else 10 (31 pts), loops 6 (9 pts), ternaries 2 (8 pts), boolean chains 3 (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ddf211cfbf5f1ac3e6e2ba033a00ddf86f8e48a2b23b668fad5bf48d8c5f7e4"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceTypeAliasBuilder.buildTypedefTearOffs (cognitive 51): SourceTypeAliasBuilder.buildTypedefTearOffs has cognitive complexity 51 (threshold 15). Drivers by points: if/else 9 (37 pts), boolean chains 7, loops 2 (6 pts), match/switch 1 (nesting depth added 32). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c3de9cf55cfb98b7d63483c1b3e6cbf0d30c6b55fe697bc85ae8b9f5662a303"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase.inferLocalFunction (cognitive 51): InferenceVisitorBase.inferLocalFunction has cognitive complexity 51 (threshold 15). Drivers by points: if/else 16 (30 pts), loops 10 (14 pts), boolean chains 7 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2225}}}],"partialFingerprints":{"codehealthFindingId/v1":"6555501eb5dd84a380148b3b57fbbcf2e957ece757a86c7ffd26b2ecc932a430"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.getInvalidJsInteropTypeTest (cognitive 51): _Visitor.getInvalidJsInteropTypeTest has cognitive complexity 51 (threshold 15). Drivers by points: if/else 17 (38 pts), boolean chains 13 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d20ee6c8bd0b428d762be3479ed1adbbd67b3f6e9b9efa5d9503c1ce8c2147"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiDefinitionTransformer._findFields (cognitive 50): _FfiDefinitionTransformer._findFields has cognitive complexity 50 (threshold 15). Drivers by points: if/else 18 (41 pts), boolean chains 6, loops 2, ternaries 1 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"babb8e14c99b3997a61d7a25cb029dc90a373abcce0d1687eb7d916b8ce64986"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseTypedef (cognitive 50): Parser.parseTypedef has cognitive complexity 50 (threshold 15). Drivers by points: if/else 20 (42 pts), boolean chains 8 (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1449}}}],"partialFingerprints":{"codehealthFindingId/v1":"42efc9c1fede62fd2b1605807cfb777ee9175aafbeab2f77b98b3cf2438cc4d6"}},{"ruleId":"D2","level":"warning","message":{"text":"ComplexTypeInfo.computeRecordType (cognitive 50): ComplexTypeInfo.computeRecordType has cognitive complexity 50 (threshold 15). Drivers by points: boolean chains 28, if/else 12 (22 pts) (nesting depth added 10). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"df8b1a575e009169bcd3cb7d8c03f4d5c0a4799a40368e3bd4bc7d0e1fe863a8"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeConstraintGenerator._handleNonGenericFunctionTypes (cognitive 50): TypeConstraintGenerator._handleNonGenericFunctionTypes has cognitive complexity 50 (threshold 15). Drivers by points: if/else 17 (36 pts), boolean chains 8, loops 3 (6 pts) (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":2574}}}],"partialFingerprints":{"codehealthFindingId/v1":"a06af3194e75258bcf6d5c6bef606732a71b6c4070c5f4b229f0d40549b24df4"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForFinalSupertypeOutsideOfLibrary (cognitive 50): ErrorVerifier._checkForFinalSupertypeOutsideOfLibrary has cognitive complexity 50 (threshold 15). Drivers by points: if/else 10 (29 pts), boolean chains 13, loops 3 (8 pts) (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5758}}}],"partialFingerprints":{"codehealthFindingId/v1":"d60482523738b3292b26f105c760295f897068330f8f4e182b85217c03fafce7"}},{"ruleId":"D2","level":"warning","message":{"text":"ProtocolConverter.convertVmInstanceToVariablesList (cognitive 50): ProtocolConverter.convertVmInstanceToVariablesList has cognitive complexity 50 (threshold 15). Drivers by points: if/else 12 (16 pts), ternaries 7 (16 pts), boolean chains 15, error handling 1 (3 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfeae1a58591e84153c5c1eb5c75eb1a6b5defe3f2d6a157d987324a64e212cf"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._defineClass (cognitive 50): LibraryCompiler._defineClass has cognitive complexity 50 (threshold 15). Drivers by points: if/else 13 (27 pts), ternaries 5 (11 pts), loops 5 (7 pts), boolean chains 5 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1792}}}],"partialFingerprints":{"codehealthFindingId/v1":"11c9acb462909fedd3d297405b517a3edd5bb6d03731a133869b11c3761f7422"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordTypeBuilderImpl.buildAliased (cognitive 50): RecordTypeBuilderImpl.buildAliased has cognitive complexity 50 (threshold 15). Drivers by points: if/else 16 (42 pts), loops 2 (4 pts), boolean chains 3, ternaries 1 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/record_type_builder.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"876a0996e74b2a91d9ed3454b69cd6c6d842ed1c9493183aaa96ccd51ccef1ea"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase._findExtensionMember (cognitive 50): InferenceVisitorBase._findExtensionMember has cognitive complexity 50 (threshold 15). Drivers by points: if/else 24 (41 pts), loops 2 (5 pts), boolean chains 4 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"c76ba7df03c0f1f40d81f2d2302f7100ee6ac1887b16e1b47b39a5f95f93318d"}},{"ruleId":"D2","level":"warning","message":{"text":"_DirectInvocation._processFunction (cognitive 50): _DirectInvocation._processFunction has cognitive complexity 50 (threshold 15). Drivers by points: if/else 15 (33 pts), boolean chains 9, loops 1 (5 pts), ternaries 1 (3 pts) (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c2ded673231320b55bb0af072cf92d78b11918bb6e6041bec7cb7dde3528ecf"}},{"ruleId":"D2","level":"warning","message":{"text":"_Transform.transformMemberSignature (cognitive 50): _Transform.transformMemberSignature has cognitive complexity 50 (threshold 15). Drivers by points: if/else 22 (44 pts), loops 4, boolean chains 2 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/signature_shaking.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4fcf49b8bb05073c6643edc1de0ee8177ab510c2f02f597dd81151e1ef48c64"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlDartInterfaceGenerator.GenerateInterface (cognitive 50): HtmlDartInterfaceGenerator.GenerateInterface has cognitive complexity 50 (threshold 15). Drivers by points: if/else 28 (35 pts), boolean chains 12, loops 2, ternaries 1 (nesting depth added 7). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c7af5d22a6352665d5e99fc5b12a2392a3a35ca6d984b13555dfc93ac15e1c3"}},{"ruleId":"D2","level":"warning","message":{"text":"Configuration.parse (cognitive 49): Configuration.parse has cognitive complexity 49 (threshold 15). Drivers by points: if/else 34 (42 pts), boolean chains 4, loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e7a710755a3038801d3f1d7c3c7b11cd51036635d7265a7b5cfba37cf80462"}},{"ruleId":"D2","level":"warning","message":{"text":"_WebSocketOutgoingTransformer.createFrame (cognitive 49): _WebSocketOutgoingTransformer.createFrame has cognitive complexity 49 (threshold 15). Drivers by points: if/else 14 (27 pts), loops 5 (17 pts), ternaries 3, boolean chains 2 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":1089}}}],"partialFingerprints":{"codehealthFindingId/v1":"123537b47e5abe552f1df50c7eb8fce5c3fe137385441aba94e0dd52eba9090e"}},{"ruleId":"D2","level":"warning","message":{"text":"Future.wait (cognitive 49): Future.wait has cognitive complexity 49 (threshold 15). Drivers by points: if/else 14 (33 pts), loops 3 (10 pts), boolean chains 5, error handling 1 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/future.dart"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a98edb4a87d2f7f232e6da0971c96e77483bfcfb98e4f58f4cda7713b4e7bc5"}},{"ruleId":"D2","level":"warning","message":{"text":"_Algorithm._filterUserConstraints (cognitive 49): _Algorithm._filterUserConstraints has cognitive complexity 49 (threshold 15). Drivers by points: if/else 15 (38 pts), loops 6 (9 pts), boolean chains 2 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/deferred_load/partition.dart"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6824f329348e35395b26d6c5e3d8c2acd65908a2a1daa048c4d976c1e485f9"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseArgumentsRest (cognitive 49): Parser.parseArgumentsRest has cognitive complexity 49 (threshold 15). Drivers by points: if/else 17 (44 pts), boolean chains 4, loops 1 (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9511}}}],"partialFingerprints":{"codehealthFindingId/v1":"4618b71002b282d1a13bd95133d500c3a1e8ebeed52db1132cfa80a3f0f5e56f"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.bigSwitch (cognitive 49): AbstractScanner.bigSwitch has cognitive complexity 49 (threshold 15). Drivers by points: if/else 39 (41 pts), boolean chains 8 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1093}}}],"partialFingerprints":{"codehealthFindingId/v1":"274c906f19089c6155a84d4e6d50fe83b3ce25e917c6ec5971d05bcc977a4564"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitExpressionStatement (cognitive 49): InScopeCompletionPass.visitExpressionStatement has cognitive complexity 49 (threshold 15). Drivers by points: if/else 30 (43 pts), boolean chains 3, match/switch 1 (3 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3335ce33c4b51948e3f6da6e4d4e214f3e806bef16e676806037bdc02ce87a"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver._resolveTargetInterfaceElement (cognitive 49): PropertyElementResolver._resolveTargetInterfaceElement has cognitive complexity 49 (threshold 15). Drivers by points: if/else 21 (43 pts), ternaries 1 (4 pts), boolean chains 2 (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":2243}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce7c451abbe4d4588bdb1636dad43b82597d892eb1a613b143fc40cbaae7b3d1"}},{"ruleId":"D2","level":"warning","message":{"text":"_IRInterpreter.run (cognitive 49): _IRInterpreter.run has cognitive complexity 49 (threshold 15). Drivers by points: if/else 14 (32 pts), loops 4 (10 pts), match/switch 2 (6 pts), boolean chains 1 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/interpreter.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cb1ebf7a2fca83d746c3364c39411a6ca5af3c3554e5e5f4c2d180770b02dd8"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaAssignmentChaining.tryChainAssignment (cognitive 49): SsaAssignmentChaining.tryChainAssignment has cognitive complexity 49 (threshold 15). Drivers by points: if/else 19 (38 pts), boolean chains 10, loops 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"d093e52d2bf198a157ad346596b62ff2604c9cec165cbaf96958dace07a44580"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitBinaryOperator (cognitive 49): ProgramCompiler._emitBinaryOperator has cognitive complexity 49 (threshold 15). Drivers by points: if/else 10 (29 pts), ternaries 3 (12 pts), boolean chains 5, match/switch 1 (3 pts) (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6341}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcfc5290285ce164fe12008a4629a66691977c37b87144447faa5e0b0459f933"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitBinaryOperator (cognitive 49): LibraryCompiler._emitBinaryOperator has cognitive complexity 49 (threshold 15). Drivers by points: if/else 10 (29 pts), ternaries 3 (12 pts), boolean chains 5, match/switch 1 (3 pts) (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7030}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e5620a20dd2db76ec976b5e33035afbaf4c44ce13460d2c8d6badc2b76de68"}},{"ruleId":"D2","level":"warning","message":{"text":"_LibraryVirtualFieldModel.build (cognitive 49): _LibraryVirtualFieldModel.build has cognitive complexity 49 (threshold 15). Drivers by points: if/else 10 (32 pts), boolean chains 10, loops 5 (7 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/property_model.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87ff866c7e1648b86fa6746167b4eba53641b2bd087ca2ce4d69705e4033d90"}},{"ruleId":"D2","level":"warning","message":{"text":"_CodeGenerator.extractIdl (cognitive 48): _CodeGenerator.extractIdl has cognitive complexity 48 (threshold 15). Drivers by points: if/else 13 (31 pts), loops 4 (10 pts), boolean chains 7 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb34650067d208c3fed1a4c0fdcf3920089d43933517ce267f5fe5b933fa78b5"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator._genPrologue (cognitive 48): BytecodeGenerator._genPrologue has cognitive complexity 48 (threshold 15). Drivers by points: if/else 18 (29 pts), loops 4 (10 pts), boolean chains 5, ternaries 2 (4 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":2152}}}],"partialFingerprints":{"codehealthFindingId/v1":"acc61e24327a8fc6480a030fee1338d4818f8c27e0b630825298e95695dcce20"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Decoder._decodeGeneral (cognitive 48): _Utf8Decoder._decodeGeneral has cognitive complexity 48 (threshold 15). Drivers by points: if/else 13 (30 pts), loops 4 (9 pts), match/switch 1 (5 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2725}}}],"partialFingerprints":{"codehealthFindingId/v1":"52cc6d90f15c02fc3a49492aac901f1f918e6d58e8411080b622e368335f900e"}},{"ruleId":"D2","level":"warning","message":{"text":"Uri.parseIPv6Address (cognitive 48): Uri.parseIPv6Address has cognitive complexity 48 (threshold 15). Drivers by points: if/else 21 (45 pts), ternaries 1 (2 pts), loops 1 (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":1611}}}],"partialFingerprints":{"codehealthFindingId/v1":"364f69c65e271d9cc9e63a5d59ebb5b25b3cce62f674fa7d01cc79557b1a8f21"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseStatementX (cognitive 48): Parser.parseStatementX has cognitive complexity 48 (threshold 15). Drivers by points: if/else 31 (42 pts), boolean chains 4, match/switch 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6720}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea86b1e08ced5ec0095718acf5a024041b32110438f7cb1fc7c089d04a5b62a2"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementCompletionProcessor.compute (cognitive 48): StatementCompletionProcessor.compute has cognitive complexity 48 (threshold 15). Drivers by points: if/else 16 (28 pts), boolean chains 17, ternaries 1 (2 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"c11253ff4c0d33525762b9abf3768dd24d8240c8ab19ba22bf61a8f13b502cce"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder.build (cognitive 48): KernelSsaGraphBuilder.build has cognitive complexity 48 (threshold 15). Drivers by points: if/else 20 (42 pts), boolean chains 5, match/switch 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb4150040a72fa00a26f4cb6a4c4f5f05f4503963740bf69b8c5a9004e367631"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaConditionMerger.visitBasicBlock (cognitive 48): SsaConditionMerger.visitBasicBlock has cognitive complexity 48 (threshold 15). Drivers by points: if/else 24 (42 pts), boolean chains 4, loops 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"b35962ac3692e156ab71133135ad9989f566bde6c83a709d0f05406faf79519e"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler.updateNeededDillLibrariesWithHierarchy (cognitive 48): IncrementalCompiler.updateNeededDillLibrariesWithHierarchy has cognitive complexity 48 (threshold 15). Drivers by points: if/else 11 (32 pts), loops 5 (12 pts), boolean chains 4 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1605}}}],"partialFingerprints":{"codehealthFindingId/v1":"309ff4d5549ece2960b9c62abe5ad2ee634d3498bdf781196cd873b6a5437655"}},{"ruleId":"D2","level":"warning","message":{"text":"NameSection.deserialize (cognitive 48): NameSection.deserialize has cognitive complexity 48 (threshold 15). Drivers by points: loops 9 (31 pts), if/else 6 (15 pts), match/switch 1 (2 pts) (nesting depth added 32). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"dad39d604fdd574b731c54b1612d856f9071e7b21fc3e9ea5edfb7114c3240b8"}},{"ruleId":"D2","level":"warning","message":{"text":"WidgetCreatorTracker._resolveWellKnownClasses (cognitive 48): WidgetCreatorTracker._resolveWellKnownClasses has cognitive complexity 48 (threshold 15). Drivers by points: if/else 11 (30 pts), loops 4 (13 pts), boolean chains 5 (nesting depth added 28). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc59fc4e254ac9655b8512972e45b4dd7e9432612da4afeb6cf31df57b23e843"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parsePartialNumber (cognitive 47): _ChunkedJsonParser.parsePartialNumber has cognitive complexity 47 (threshold 15). Drivers by points: if/else 24 (43 pts), loops 3, boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfc00c14109de0aa127973fbe9a8e54f06849c184b2551ef339ab1f985f3ce7e"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parsePartialNumber (cognitive 47): _ChunkedJsonParser.parsePartialNumber has cognitive complexity 47 (threshold 15). Drivers by points: if/else 24 (43 pts), loops 3, boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"87fbe9e944d68f1280236349630ba101dbed530f9491598457430b289215ad7f"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parsePartialNumber (cognitive 47): _ChunkedJsonParser.parsePartialNumber has cognitive complexity 47 (threshold 15). Drivers by points: if/else 24 (43 pts), loops 3, boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"928323f1f57d702737a5cfd304994025dae8f3c27e6f4e18f0a3050c686b4477"}},{"ruleId":"D2","level":"warning","message":{"text":"SharedInteropTransformer._createIsACheck (cognitive 47): SharedInteropTransformer._createIsACheck has cognitive complexity 47 (threshold 15). Drivers by points: if/else 17 (25 pts), ternaries 11 (18 pts), loops 1 (2 pts), boolean chains 1, match/switch 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"767019a6551eff5035d538496cf123ce6264d62bb3e5be2d8556a69d97d19c88"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor.visitAnonymousMethodInvocation (cognitive 47): ResolverVisitor.visitAnonymousMethodInvocation has cognitive complexity 47 (threshold 15). Drivers by points: if/else 15 (32 pts), ternaries 3 (8 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":2123}}}],"partialFingerprints":{"codehealthFindingId/v1":"54681f7b0c054dfe7c152a054e2953eddcc5ddb25b433755c8187b7628cab349"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeBehavior.processSpecString (cognitive 47): NativeBehavior.processSpecString has cognitive complexity 47 (threshold 15). Drivers by points: if/else 30 (41 pts), boolean chains 4, loops 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"112806743d3c8bfde9e42e2dc01637da5f3eba5a724946a1b1c36509648f5b07"}},{"ruleId":"D2","level":"warning","message":{"text":"CompileWasmCommand.run (cognitive 47): CompileWasmCommand.run has cognitive complexity 47 (threshold 15). Drivers by points: if/else 30 (37 pts), boolean chains 5, ternaries 2 (3 pts), error handling 1, loops 1 (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"e22c4f5ea10c10f3aff099ed4e2e19c1443a1bfa0dfb998aff139b0de20e6b8f"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler._computeTransitiveClosure (cognitive 47): IncrementalCompiler._computeTransitiveClosure has cognitive complexity 47 (threshold 15). Drivers by points: if/else 14 (30 pts), loops 8 (15 pts), boolean chains 2 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1773}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a0d63eb3aaeccc684c57af670d63c7e43213a904f2c7d7b55ee3e9242e81c18"}},{"ruleId":"D2","level":"warning","message":{"text":"_InitializationFromExperimentalCache.loadLibrariesFromCache (cognitive 47): _InitializationFromExperimentalCache.loadLibrariesFromCache has cognitive complexity 47 (threshold 15). Drivers by points: if/else 14 (28 pts), loops 7 (16 pts), error handling 1 (2 pts), boolean chains 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3663}}}],"partialFingerprints":{"codehealthFindingId/v1":"630f18eabdde213c01888166279cb3bbbbfa657175a43650dff944500d2e8073"}},{"ruleId":"D2","level":"warning","message":{"text":"_DispatchableInvocation.process (cognitive 47): _DispatchableInvocation.process has cognitive complexity 47 (threshold 15). Drivers by points: if/else 23 (45 pts), boolean chains 2 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f5feb5129fb3009b92954aa5086c0f7d4f20a639cd68ee36ed8be85d3a47307"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 47): (anonymous) has cognitive complexity 47 (threshold 15). Drivers by points: if/else 27 (33 pts), boolean chains 7, loops 4, ternaries 3 (nesting depth added 6). Most of this is not in the body itself: 4 of the 47 points are its own statements and the rest belongs to 28 function items inside it that branch (addScriptsToQueue, processAfterLoadOrErrorEvent, getScriptUrl, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1888e40c9bc06647f14e5ba7aa4a70c154bcd1cbef895b654d5a8090bd2fe0e"}},{"ruleId":"D2","level":"warning","message":{"text":"JSNumber._binaryGcd (cognitive 46): JSNumber._binaryGcd has cognitive complexity 46 (threshold 15). Drivers by points: if/else 18 (36 pts), loops 4 (7 pts), boolean chains 3 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85af19e742739cf9def80cabbcee234043ed042e41ba5f3f2eedc255e5f8d2b"}},{"ruleId":"D2","level":"warning","message":{"text":"JSInt._binaryGcd (cognitive 46): JSInt._binaryGcd has cognitive complexity 46 (threshold 15). Drivers by points: if/else 18 (36 pts), loops 4 (7 pts), boolean chains 3 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_number.dart"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d8ca6c0e7fac12dad4ae85ff06e52dd16c85699e5251a83984a0483caa92d52"}},{"ruleId":"D2","level":"warning","message":{"text":"_IntegerImplementation._binaryGcd (cognitive 46): _IntegerImplementation._binaryGcd has cognitive complexity 46 (threshold 15). Drivers by points: if/else 18 (36 pts), loops 4 (7 pts), boolean chains 3 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6ddacca81b7e9c8319f6d00e04e24868468b1b99ad9c3708772c1247fb31618"}},{"ruleId":"D2","level":"warning","message":{"text":"BoxedInt._binaryGcd (cognitive 46): BoxedInt._binaryGcd has cognitive complexity 46 (threshold 15). Drivers by points: if/else 18 (36 pts), loops 4 (7 pts), boolean chains 3 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/boxed_int.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a9d68ead51fd956963c227621ea11009e27e1da59dd38d333b83755392e9da6"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parse (cognitive 46): _ChunkedJsonParser.parse has cognitive complexity 46 (threshold 15). Drivers by points: if/else 20 (43 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"932488d248737c8cf7983e217dfb46ca080e9dc94df9d0cf36d1d6b12f864e13"}},{"ruleId":"D2","level":"warning","message":{"text":"AstToIr._translateConstructorInitializers (cognitive 46): AstToIr._translateConstructorInitializers has cognitive complexity 46 (threshold 15). Drivers by points: if/else 12 (43 pts), loops 2 (3 pts) (nesting depth added 32). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c312c4bebd846c4169e45967fcc4853971e6e47cc9c0a022827a2e093b14b1"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._addStaticMembers (cognitive 46): DeclarationHelper._addStaticMembers has cognitive complexity 46 (threshold 15). Drivers by points: if/else 9 (21 pts), boolean chains 18, loops 5 (7 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1633}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2ab05790c7c2933ac6fcad78b1662705260f638acdb418956411bf704a7f4bb"}},{"ruleId":"D2","level":"warning","message":{"text":"AddAsync.compute (cognitive 46): AddAsync.compute has cognitive complexity 46 (threshold 15). Drivers by points: if/else 18 (40 pts), boolean chains 3, match/switch 2 (3 pts) (nesting depth added 23). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_async.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba670120c4760468738907a9463a874445e894c4501d439b721f7559e3d8d09d"}},{"ruleId":"D2","level":"warning","message":{"text":"AddMissingRequiredArgument.compute (cognitive 46): AddMissingRequiredArgument.compute has cognitive complexity 46 (threshold 15). Drivers by points: if/else 25 (39 pts), boolean chains 6, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4413c80574b98c7b5d5308c40afc776e219f588a0160e3e7c6a3c5ce650a8699"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstLiteralVerifier.verify (cognitive 46): _ConstLiteralVerifier.verify has cognitive complexity 46 (threshold 15). Drivers by points: if/else 23 (42 pts), boolean chains 4 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1243}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce8cce82aaf246efef89964ef08dcf91917c68d6b8dbd2d80d73db33be97b889"}},{"ruleId":"D2","level":"warning","message":{"text":"BaseOrFinalTypeVerifier._reportRestrictionError (cognitive 46): BaseOrFinalTypeVerifier._reportRestrictionError has cognitive complexity 46 (threshold 15). Drivers by points: if/else 13 (20 pts), ternaries 5 (15 pts), boolean chains 11 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/base_or_final_type_verifier.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"3892536670113ee77c25c124296f5174e68d673d33c440de209627a4bad720a1"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultTypesBuilder._findRawTypePathsToDeclaration (cognitive 46): DefaultTypesBuilder._findRawTypePathsToDeclaration has cognitive complexity 46 (threshold 15). Drivers by points: if/else 11 (28 pts), loops 5 (18 pts) (nesting depth added 30). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/default_types_builder.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ee192f7519c6456ba69e16641094d8c02c561b9031ebb316b50f08badc0892"}},{"ruleId":"D2","level":"warning","message":{"text":"DillClassBuilder.DillClassBuilder (cognitive 46): DillClassBuilder.DillClassBuilder has cognitive complexity 46 (threshold 15). Drivers by points: if/else 15 (36 pts), boolean chains 4, loops 4, match/switch 1 (2 pts) (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0e664cd3ec4663c9f6075b9a2e6fa9f49e1fdfdbd6ae52ec216aece4e99943"}},{"ruleId":"D2","level":"warning","message":{"text":"DartScopeBuilder2._looksLikeLateLoweredField (cognitive 46): DartScopeBuilder2._looksLikeLateLoweredField has cognitive complexity 46 (threshold 15). Drivers by points: boolean chains 23, if/else 7 (15 pts), loops 3 (8 pts) (nesting depth added 13). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"010bd14e337c328bf559c496edbfa7f01e8e2201dc919f189e3f86374660304d"}},{"ruleId":"D2","level":"warning","message":{"text":"_Overrides.collectOverrides (cognitive 46): _Overrides.collectOverrides has cognitive complexity 46 (threshold 15). Drivers by points: if/else 12 (33 pts), loops 2 (10 pts), boolean chains 3 (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":2935}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f3f2fbcaa1bb2495a6c08564da166ee6c7f12bc6dcea197c6a3614080d8254"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.endMethod (cognitive 46): OutlineBuilder.endMethod has cognitive complexity 46 (threshold 15). Drivers by points: if/else 22 (35 pts), boolean chains 4, loops 1 (4 pts), match/switch 1 (3 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2373}}}],"partialFingerprints":{"codehealthFindingId/v1":"04fc1fcd0ff49bdc32f5e9f8c676490635f5d486dbd3310a1412c88cee909644"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._visitVariableDeclarationList (cognitive 46): _Visitor._visitVariableDeclarationList has cognitive complexity 46 (threshold 15). Drivers by points: if/else 12 (32 pts), loops 3 (9 pts), match/switch 1 (4 pts), boolean chains 1 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/specify_nonobvious_property_types.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdca28b7e01b01065a5a25dc99a7772523e99fb35129c6524d9fcef4af1008fe"}},{"ruleId":"D2","level":"warning","message":{"text":"VarianceChecker.check (cognitive 46): VarianceChecker.check has cognitive complexity 46 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 5 (15 pts), match/switch 2 (5 pts), boolean chains 2 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/util/variance_checker.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"1070359673d758c3658a1c1147ab7855be5ef53bf715c33901f9ec07a22d2089"}},{"ruleId":"D2","level":"warning","message":{"text":"OperationInfo.ParametersAsListOfVariables (cognitive 46): OperationInfo.ParametersAsListOfVariables has cognitive complexity 46 (threshold 15). Drivers by points: if/else 14 (36 pts), loops 2 (7 pts), boolean chains 3 (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f403cd4648cb67e756f8b8c03c4d67312106c0767f44c6caac3eb05827bf4c"}},{"ruleId":"D2","level":"warning","message":{"text":"Class.test (cognitive 45): Class.test has cognitive complexity 45 (threshold 15). Drivers by points: loops 45. To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/for_in.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"502a37002e7061cb2e8fef8a09c9a379520e78d759ad0514387c0ebfa828438c"}},{"ruleId":"D2","level":"warning","message":{"text":"DeeplyImmutableValidator._validateDeeplyImmutable (cognitive 45): DeeplyImmutableValidator._validateDeeplyImmutable has cognitive complexity 45 (threshold 15). Drivers by points: if/else 13 (26 pts), boolean chains 12, loops 4 (7 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/deeply_immutable.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"201494b360191d0fc973c08b342df17772eb7383bb58f204cfc99b222f0c3f51"}},{"ruleId":"D2","level":"warning","message":{"text":"CheckNameResponse.computeRenameRanges2 (cognitive 45): CheckNameResponse.computeRenameRanges2 has cognitive complexity 45 (threshold 15). Drivers by points: if/else 12 (28 pts), loops 5 (12 pts), ternaries 1 (4 pts), boolean chains 1 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/rename.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"b371a3af8171b02e56d6f3e7cbaea5d307aa9bd600ba93fc9651cb603748770b"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._addExtensionMembers (cognitive 45): DeclarationHelper._addExtensionMembers has cognitive complexity 45 (threshold 15). Drivers by points: if/else 10 (32 pts), loops 4 (9 pts), boolean chains 3, ternaries 1 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":857}}}],"partialFingerprints":{"codehealthFindingId/v1":"79192a71f54149df45819c2ce0d8eb9fb7bded2f6b9ff11574dc63948fe49599"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveAsync.compute (cognitive 45): RemoveAsync.compute has cognitive complexity 45 (threshold 15). Drivers by points: if/else 23 (35 pts), boolean chains 6, match/switch 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_async.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0a08e084dd0182d75499bb95d9de824b2b3374145ccd1ed71cb51705f2659a6"}},{"ruleId":"D2","level":"warning","message":{"text":"_ReferenceProcessor._process (cognitive 45): _ReferenceProcessor._process has cognitive complexity 45 (threshold 15). Drivers by points: if/else 18 (45 pts) (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"22e6184f9f81c4d851c7ff9aebaa9ff4ba04ecfd80303226a5fafcbfc195df1d"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluationEngine.computeConstantValue (cognitive 45): ConstantEvaluationEngine.computeConstantValue has cognitive complexity 45 (threshold 15). Drivers by points: if/else 20 (43 pts), boolean chains 2 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"12f77ab5a49b0fb4989f960074e7133d2bda0c54e1657b9c77af07e5c3c77e88"}},{"ruleId":"D2","level":"warning","message":{"text":"GreatestLowerBoundHelper._functionType (cognitive 45): GreatestLowerBoundHelper._functionType has cognitive complexity 45 (threshold 15). Drivers by points: if/else 16 (29 pts), ternaries 2 (9 pts), boolean chains 4, loops 3 (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"025d36e9b0e917b257da3cd1f5ae6f423c7809633c6b573c765eb8ab5767b7b0"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationResolver._resolve (cognitive 45): AnnotationResolver._resolve has cognitive complexity 45 (threshold 15). Drivers by points: if/else 23 (42 pts), boolean chains 3 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d1004feb5a93ddb0ce960b2a5ee47e1a9d40cc04dbc8e96f04bf181f56df5e7"}},{"ruleId":"D2","level":"warning","message":{"text":"FullInvocationInferrer.resolveInvocation (cognitive 45): FullInvocationInferrer.resolveInvocation has cognitive complexity 45 (threshold 15). Drivers by points: if/else 16 (32 pts), loops 2 (6 pts), boolean chains 5, ternaries 2 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec50632b834a864053bb4a7e8f992db5453241ace1403c4748c8b4be93a7cdea"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodInvocationResolver._resolveInstanceInvocation (cognitive 45): MethodInvocationResolver._resolveInstanceInvocation has cognitive complexity 45 (threshold 15). Drivers by points: if/else 19 (27 pts), boolean chains 15, ternaries 1 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcfaa36ce12f08f605431589dd4776870516d5e88f5ec27b28de96c81e315ea6"}},{"ruleId":"D2","level":"warning","message":{"text":"DynamicCallSiteTypeInformation.handleIntrinsifiedSelector (cognitive 45): DynamicCallSiteTypeInformation.handleIntrinsifiedSelector has cognitive complexity 45 (threshold 15). Drivers by points: if/else 20 (35 pts), boolean chains 6, ternaries 2 (3 pts), match/switch 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":1321}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb2e0ee7b4ad62b7dbd33262aca58623c07de082a53504f973fc66bbbf90697c"}},{"ruleId":"D2","level":"warning","message":{"text":"DynamicCallSiteTypeInformation.computeType (cognitive 45): DynamicCallSiteTypeInformation.computeType has cognitive complexity 45 (threshold 15). Drivers by points: if/else 16 (40 pts), boolean chains 5 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":1431}}}],"partialFingerprints":{"codehealthFindingId/v1":"3888a2f4772934e08cdf40e798395de135937b0d5bfd5cb71388887cde7e84e8"}},{"ruleId":"D2","level":"warning","message":{"text":"DillLibraryBuilder.finalizeExports (cognitive 45): DillLibraryBuilder.finalizeExports has cognitive complexity 45 (threshold 15). Drivers by points: if/else 21 (33 pts), boolean chains 11, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_library_builder.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"11fb639863894730e7efd549b80103405a53193c595eaab108ffc00b78f75a47"}},{"ruleId":"D2","level":"warning","message":{"text":"Resolver._finishFunction (cognitive 45): Resolver._finishFunction has cognitive complexity 45 (threshold 15). Drivers by points: if/else 18 (35 pts), loops 3 (5 pts), boolean chains 3, ternaries 1 (2 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":1413}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b9da5585e518ec8f579c35e110ed31b12feb12b56ac3c1dd07f0b6cb2e8071c"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceClassBuilder.checkOverride (cognitive 45): SourceClassBuilder.checkOverride has cognitive complexity 45 (threshold 15). Drivers by points: if/else 14 (27 pts), boolean chains 18 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"63d3971b266288e7d3b1352842d4383cdbc1c2c141d6e4e385ce72c55c54e043"}},{"ruleId":"D2","level":"warning","message":{"text":"StandardBounds._getLegacyLeastUpperBound (cognitive 45): StandardBounds._getLegacyLeastUpperBound has cognitive complexity 45 (threshold 15). Drivers by points: if/else 15 (30 pts), loops 4 (9 pts), boolean chains 6 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc935b900c540d95115735189b271f34dbdaf2f5ef47c5ba0df5fa336315c9ab"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._check (cognitive 45): _Visitor._check has cognitive complexity 45 (threshold 15). Drivers by points: if/else 22 (34 pts), boolean chains 11 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_is_empty.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"c75b4320cb4b719dca6c3443cda7ddd88f25710765790aea8446530d121f0c06"}},{"ruleId":"D2","level":"warning","message":{"text":"NameSection.serializeContents (cognitive 45): NameSection.serializeContents has cognitive complexity 45 (threshold 15). Drivers by points: if/else 14 (28 pts), loops 7 (16 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"34f1590f0ac7780709b1f3e0fbc4d0c2dad72fe17f0e8e22294ad7b9bed3558e"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotateKernel._convertType (cognitive 45): AnnotateKernel._convertType has cognitive complexity 45 (threshold 15). Drivers by points: if/else 15 (30 pts), boolean chains 10, ternaries 1 (3 pts), loops 1 (2 pts) (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a88a651ccc987c778ed864d785da30d85a0fe39a2ed71e40974e871ee8db02"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.bigSwitch (cognitive 44): AbstractScanner.bigSwitch has cognitive complexity 44 (threshold 15). Drivers by points: if/else 38 (39 pts), boolean chains 5 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"54290306444f25639705f82115a8921b5b5523045d069b0f5d12503e54956ff6"}},{"ruleId":"D2","level":"warning","message":{"text":"RelevanceMetricsComputer._computeInContext (cognitive 44): RelevanceMetricsComputer._computeInContext has cognitive complexity 44 (threshold 15). Drivers by points: if/else 9 (29 pts), loops 3 (12 pts), error handling 1 (3 pts) (nesting depth added 31). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2420}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7cfbd04816d8c50acfe5fe8d58e624566305fee183077eb0ea11e954b7bbfcb"}},{"ruleId":"D2","level":"warning","message":{"text":"MutationRunner._runChain (cognitive 44): MutationRunner._runChain has cognitive complexity 44 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 8 (11 pts), ternaries 3 (9 pts), boolean chains 2 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/fine/ab_mutate.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"49ac4402362f9a3dae9728b93dd6d0d059c175cad384fe2489c3201a6e0a5fcd"}},{"ruleId":"D2","level":"warning","message":{"text":"AstCodeGenerator.visitSwitchStatement (cognitive 44): AstCodeGenerator.visitSwitchStatement has cognitive complexity 44 (threshold 15). Drivers by points: if/else 11 (17 pts), ternaries 9 (16 pts), loops 5 (9 pts), boolean chains 2 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":1443}}}],"partialFingerprints":{"codehealthFindingId/v1":"6545d2410a0d229e6edcbc6cb485424272c7514d1f215f7cc96d9a16935d7383"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantCreator._makeWasmArrayLiteral (cognitive 44): ConstantCreator._makeWasmArrayLiteral has cognitive complexity 44 (threshold 15). Drivers by points: if/else 11 (21 pts), loops 8 (20 pts), boolean chains 3 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e1f456f8708d9e030790776fb84f6d938595fa88eba5a9c5303a5d223e12d3"}},{"ruleId":"D2","level":"warning","message":{"text":"Analysis.transitiveGraph (cognitive 44): Analysis.transitiveGraph has cognitive complexity 44 (threshold 15). Drivers by points: if/else 9 (32 pts), boolean chains 6, loops 3 (6 pts) (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee3dd780e9856395e8d97e7f41541800b37b1262a9a5b1dbc5c63d8a007ae93"}},{"ruleId":"D2","level":"warning","message":{"text":"StatusFile._parse (cognitive 44): StatusFile._parse has cognitive complexity 44 (threshold 15). Drivers by points: if/else 19 (29 pts), boolean chains 7, error handling 2 (6 pts), loops 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/status_file/lib/canonical_status_file.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c5c6b1a52b649cac985a202082ace4b190aa85f0e9114acd050a2723aa913d2"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiBinaryLoader.load (cognitive 44): MultiBinaryLoader.load has cognitive complexity 44 (threshold 15). Drivers by points: if/else 8 (29 pts), loops 8 (13 pts), boolean chains 2 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/multi_binary_loader.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"55132393025e153a041e3f722fc80f7901c520c2375f47c87a146b86a51d6585"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseDeclarationHeaderRecoveryInternal (cognitive 44): Parser.parseDeclarationHeaderRecoveryInternal has cognitive complexity 44 (threshold 15). Drivers by points: if/else 14 (34 pts), match/switch 3 (7 pts), boolean chains 2, loops 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":3172}}}],"partialFingerprints":{"codehealthFindingId/v1":"95659eb77888ca88ab9a68022022388b98e9261ca493287b4d9c09ce0155c451"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseExtensionDeclaration (cognitive 44): Parser.parseExtensionDeclaration has cognitive complexity 44 (threshold 15). Drivers by points: if/else 19 (34 pts), boolean chains 7, loops 1 (3 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":3641}}}],"partialFingerprints":{"codehealthFindingId/v1":"f388870f2046cb0b0176b16faf4b6b5f25845149055fdeafe316648ef81e198a"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticInteropMockValidator.validateCreateStaticInteropMock (cognitive 44): StaticInteropMockValidator.validateCreateStaticInteropMock has cognitive complexity 44 (threshold 15). Drivers by points: if/else 9 (21 pts), ternaries 3 (15 pts), loops 2 (5 pts), boolean chains 3 (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/static_interop_mock_validator.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"276a03c1ca90390e8e82f895c061f32105a250624b0a0a2d1bc174442c48747f"}},{"ruleId":"D2","level":"warning","message":{"text":"ResultMerger.mergeRefactoringFeedbacks (cognitive 44): ResultMerger.mergeRefactoringFeedbacks has cognitive complexity 44 (threshold 15). Drivers by points: if/else 15 (27 pts), loops 5 (12 pts), ternaries 2 (4 pts), boolean chains 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6d9ec12774872206b2c308c14b42168310b777323c902948aa97274cf83d8f4"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._visitStatements (cognitive 44): DeclarationHelper._visitStatements has cognitive complexity 44 (threshold 15). Drivers by points: if/else 11 (39 pts), loops 2 (5 pts) (nesting depth added 31). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":3124}}}],"partialFingerprints":{"codehealthFindingId/v1":"6776940dddf55071eeab2cd70d3882d7d233a5c22e28783fa86a9e468a57d18d"}},{"ruleId":"D2","level":"warning","message":{"text":"_EnumDescription.applyChanges (cognitive 44): _EnumDescription.applyChanges has cognitive complexity 44 (threshold 15). Drivers by points: if/else 22 (37 pts), loops 3 (4 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"59b9e75253cea5ae397fce328a4a3869422125ec2b35861d3bbeff98cbd0fa46"}},{"ruleId":"D2","level":"warning","message":{"text":"_ParsedPluginsData.parse (cognitive 44): _ParsedPluginsData.parse has cognitive complexity 44 (threshold 15). Drivers by points: if/else 14 (37 pts), loops 2 (5 pts), match/switch 1 (2 pts) (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1526}}}],"partialFingerprints":{"codehealthFindingId/v1":"631b45b4a9e0827bf9f8edcda649e68856fbd6485a2b5576490117f69238c64c"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForMissingEnumConstantInSwitch (cognitive 44): ErrorVerifier._checkForMissingEnumConstantInSwitch has cognitive complexity 44 (threshold 15). Drivers by points: if/else 12 (37 pts), loops 2 (6 pts), boolean chains 1 (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":6469}}}],"partialFingerprints":{"codehealthFindingId/v1":"205853d52939b134b8e37b5c41ffe777d12d0aca1bf9d9042776b1f8f8211b9f"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._checkFfiNativeFunction (cognitive 44): FfiVerifier._checkFfiNativeFunction has cognitive complexity 44 (threshold 15). Drivers by points: if/else 17 (29 pts), boolean chains 9, match/switch 2 (5 pts), loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":839}}}],"partialFingerprints":{"codehealthFindingId/v1":"d97ac5c49b95eb1f1bc388a3aef6ba32357fecb49f28554ecab6e61d742b56db"}},{"ruleId":"D2","level":"warning","message":{"text":"ListTracerVisitor.visitDynamicCallSiteTypeInformation (cognitive 44): ListTracerVisitor.visitDynamicCallSiteTypeInformation has cognitive complexity 44 (threshold 15). Drivers by points: if/else 17 (39 pts), boolean chains 5 (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/list_tracer.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dad2ded20737b99d3008028410f22fa252136d7b99897fe92fa71303a5c3395"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceFile.getLocationMessage (cognitive 44): SourceFile.getLocationMessage has cognitive complexity 44 (threshold 15). Drivers by points: if/else 10 (29 pts), loops 3 (12 pts), boolean chains 2, error handling 1 (nesting depth added 28). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/source_file.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce93193ac1ac8290e047494eab0da167a8f11b8240d289c637bf83d566ea4cc0"}},{"ruleId":"D2","level":"warning","message":{"text":"ExecutableCompiler._compileToSnapshot (cognitive 44): ExecutableCompiler._compileToSnapshot has cognitive complexity 44 (threshold 15). Drivers by points: if/else 12 (22 pts), error handling 5 (11 pts), loops 2 (5 pts), boolean chains 4, ternaries 2 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/executable_compiler.dart"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"54418afb2d2750d1b6e336b8c59d5294c690510f487ea44e4ff0e2530b34b0d3"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.parseStatement (cognitive 44): MiniJsParser.parseStatement has cognitive complexity 44 (threshold 15). Drivers by points: if/else 24 (43 pts), boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1421}}}],"partialFingerprints":{"codehealthFindingId/v1":"72de4ea53475115cfec398f94b398a90370dc617857b0c2cd4f29dad540fd5d3"}},{"ruleId":"D2","level":"warning","message":{"text":"CompilerOptions.equivalent (cognitive 44): CompilerOptions.equivalent has cognitive complexity 44 (threshold 15). Drivers by points: if/else 35 (44 pts) (nesting depth added 9). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/compiler_options.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"a800fa179fce7c0bc770c99ad432b73bd0ffc7045b50fcfc2dbb7169f0b8d091"}},{"ruleId":"D2","level":"warning","message":{"text":"ChainContext.run (cognitive 44): ChainContext.run has cognitive complexity 44 (threshold 15). Drivers by points: if/else 15 (27 pts), boolean chains 9, loops 3 (5 pts), error handling 1 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/testing/lib/src/chain.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ff310e83548508d3ae5ffc063dc70bddb659020c69b2e97a032d43058bbee69"}},{"ruleId":"D2","level":"warning","message":{"text":"Instructions.printTo (cognitive 44): Instructions.printTo has cognitive complexity 44 (threshold 15). Drivers by points: if/else 9 (22 pts), boolean chains 20, loops 1, ternaries 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/instructions.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"00e26f18f4d062f485956a343c992f55931983586f976d6c9c3ff51f587ffd02"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlDartGenerator._GenerateOverloadDispatcher (cognitive 44): HtmlDartGenerator._GenerateOverloadDispatcher has cognitive complexity 44 (threshold 15). Drivers by points: if/else 8 (28 pts), loops 6 (16 pts) (nesting depth added 30). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"523b4d8be3106bea449b43d72cc688e21d5eb0dd14f18647bf7de10589899e18"}},{"ruleId":"D2","level":"warning","message":{"text":"IDLNode._find_all (cognitive 44): IDLNode._find_all has cognitive complexity 44 (threshold 15). Drivers by points: if/else 11 (27 pts), loops 3 (12 pts), boolean chains 5 (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c867aa53fbbc93af67cb02c506f37d60888b3fa05542ed3158e1e16eb9ff7df"}},{"ruleId":"D2","level":"warning","message":{"text":"IDLFile.__init__ (cognitive 44): IDLFile.__init__ has cognitive complexity 44 (threshold 15). Drivers by points: if/else 10 (23 pts), loops 7 (18 pts), boolean chains 3 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"931998c2114ce8a683c622896e150a5de837a5855bf9c4666395cb794cce8c2a"}},{"ruleId":"D2","level":"warning","message":{"text":"VmServiceInterfaceApi.generate (cognitive 43): VmServiceInterfaceApi.generate has cognitive complexity 43 (threshold 15). Drivers by points: if/else 12 (32 pts), loops 3 (7 pts), ternaries 1 (4 pts) (nesting depth added 27). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_interface.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6af1f4ef50419b310093929cec07b0b401429d8c25959b9eadb8b4e879537ec"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._makeHttpUri (cognitive 43): _Uri._makeHttpUri has cognitive complexity 43 (threshold 15). Drivers by points: if/else 10 (29 pts), loops 3 (7 pts), boolean chains 4, ternaries 1 (3 pts) (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2053}}}],"partialFingerprints":{"codehealthFindingId/v1":"86ff3f48255789db3e4a90d5752458d4e67e071038336b4a3cfefe8df1221d26"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator._visitElement (cognitive 43): Evaluator._visitElement has cognitive complexity 43 (threshold 15). Drivers by points: if/else 13 (22 pts), match/switch 7 (18 pts), ternaries 1 (3 pts) (nesting depth added 22). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"8deb3772f9ca22139d515989345cfbb2383e9dd990053831abf20c2f6eb3140a"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseUnaryExpression (cognitive 43): Parser.parseUnaryExpression has cognitive complexity 43 (threshold 15). Drivers by points: if/else 16 (37 pts), boolean chains 4, ternaries 1 (2 pts) (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7872}}}],"partialFingerprints":{"codehealthFindingId/v1":"13a31ce13fa0decc7ecf8481a56279979dfd0f877b822d81ba34b7aa047ce1dc"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._suggestStaticField (cognitive 43): DeclarationHelper._suggestStaticField has cognitive complexity 43 (threshold 15). Drivers by points: if/else 12 (35 pts), boolean chains 8 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2729}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90c8d480b00a497779afbe48cea97cb6f3e5019f05f5245d9359829e9d3a376"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyDescription._changeCode (cognitive 43): PropertyDescription._changeCode has cognitive complexity 43 (threshold 15). Drivers by points: if/else 14 (37 pts), boolean chains 3, loops 1 (3 pts) (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/property.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"de2eac354b959d2e9b3d0258d95d3342ff4cb2facc097a46c6b8085693f3c92c"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystemImpl._refineNumericInvocationTypeNullSafe (cognitive 43): TypeSystemImpl._refineNumericInvocationTypeNullSafe has cognitive complexity 43 (threshold 15). Drivers by points: if/else 12 (33 pts), boolean chains 10 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":2056}}}],"partialFingerprints":{"codehealthFindingId/v1":"2588c9586943cbc95fa6ccc98e7f16d8579397bc866eeb227175b4b228dbff44"}},{"ruleId":"D2","level":"warning","message":{"text":"_TodoFinder.moveNext (cognitive 43): _TodoFinder.moveNext has cognitive complexity 43 (threshold 15). Drivers by points: if/else 9 (24 pts), boolean chains 18, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/todo_finder.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f443635146ec9137a5c052ff7b69fa375fed25b3695cc5ccaa733af54869413"}},{"ruleId":"D2","level":"warning","message":{"text":"UnusedLocalElementsVerifier._isUsedElement (cognitive 43): UnusedLocalElementsVerifier._isUsedElement has cognitive complexity 43 (threshold 15). Drivers by points: if/else 16 (37 pts), boolean chains 6 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"52c80c75f88e789bbfb7c412610e9bd5b8c9839ee0f993cbd0a08dd6e2571941"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForConflictingClassMembers (cognitive 43): ErrorVerifier._checkForConflictingClassMembers has cognitive complexity 43 (threshold 15). Drivers by points: if/else 14 (34 pts), loops 4 (5 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":4015}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f2cd008b1a85ab68303170a359cc0883c35f3dca47a5a9e8caf8e05d41d99a"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForMixinClassErrorCodes (cognitive 43): ErrorVerifier._checkForMixinClassErrorCodes has cognitive complexity 43 (threshold 15). Drivers by points: if/else 15 (38 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":6566}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ebafbb62d90963c48b368b46b521eef4385ba0aa24c991aea7a6bb45661b97"}},{"ruleId":"D2","level":"warning","message":{"text":"_OpTypeAstVisitor.visitArgumentList (cognitive 43): _OpTypeAstVisitor.visitArgumentList has cognitive complexity 43 (threshold 15). Drivers by points: if/else 25 (41 pts), boolean chains 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba85a41a0a8d8be40d36378a25e36922dfe4de8441d5ecfecea48bef39b7f65a"}},{"ruleId":"D2","level":"warning","message":{"text":"DillExtensionBuilder.DillExtensionBuilder (cognitive 43): DillExtensionBuilder.DillExtensionBuilder has cognitive complexity 43 (threshold 15). Drivers by points: if/else 14 (36 pts), boolean chains 4, match/switch 1 (2 pts), loops 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_extension_builder.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ae0fc4430f645ccd65ffdbe3131e3c811c7670763f2f9894b0518e1b6b684c"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncStateVisitor.visitBinaryExpression (cognitive 43): AsyncStateVisitor.visitBinaryExpression has cognitive complexity 43 (threshold 15). Drivers by points: if/else 17 (31 pts), boolean chains 6, match/switch 3 (6 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b9ee8ba901eced81a47f2a343976299db1ff1b4b6e061cbbdaf9962ece50fc"}},{"ruleId":"D2","level":"warning","message":{"text":"SessionLogAnalyzer.printReport (cognitive 42): SessionLogAnalyzer.printReport has cognitive complexity 42 (threshold 15). Drivers by points: if/else 12 (16 pts), ternaries 6 (15 pts), boolean chains 7, loops 2 (4 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/.agents/skills/improve-performance-with-session-log/scripts/analyze_session_log.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f957380ee9ed19ce23e702a2c3f9b3edd87a0f3c1de5e2d5af3a71cfc6aece"}},{"ruleId":"D2","level":"warning","message":{"text":"_ClosureArgumentsToVtableEntryDispatcherGenerator._handleOptionalNamedCase (cognitive 42): _ClosureArgumentsToVtableEntryDispatcherGenerator._handleOptionalNamedCase has cognitive complexity 42 (threshold 15). Drivers by points: if/else 13 (33 pts), loops 3 (7 pts), boolean chains 1, ternaries 1 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":3271}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab39d0c3589aff7c4f52f1e385fd6b62369f3908db92cfd6d74423ff3a75b01"}},{"ruleId":"D2","level":"warning","message":{"text":"ClosedWorldClassHierarchy._getLegacyLeastUpperBoundInternal (cognitive 42): ClosedWorldClassHierarchy._getLegacyLeastUpperBoundInternal has cognitive complexity 42 (threshold 15). Drivers by points: if/else 15 (31 pts), ternaries 2 (8 pts), boolean chains 2, loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":961}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f93963fb3801ad8ac4078c2ebfe84524fda52ae3d4a16ed573fa55eeb5154b1"}},{"ruleId":"D2","level":"warning","message":{"text":"FormatException.toString (cognitive 42): FormatException.toString has cognitive complexity 42 (threshold 15). Drivers by points: if/else 17 (33 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/exceptions.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"45a49a4b5d37781bf45c7a0722febca1324a64f4ab6261e18b95d03c424d6ead"}},{"ruleId":"D2","level":"warning","message":{"text":"AstToIr._buildPrologue (cognitive 42): AstToIr._buildPrologue has cognitive complexity 42 (threshold 15). Drivers by points: if/else 13 (33 pts), loops 3 (4 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"a84b0884836c1f8e05dffc7e3b90e6c38f1d2f6f72095ed308624da09b3bfab1"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiTransformer.convertNativeTypeToDartType (cognitive 42): FfiTransformer.convertNativeTypeToDartType has cognitive complexity 42 (threshold 15). Drivers by points: if/else 22 (27 pts), match/switch 3 (8 pts), boolean chains 4, ternaries 1 (2 pts), loops 1 (nesting depth added 11). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/common.dart"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef984cf0cebb723cec85704f440e193b4e3d67f3b8829d55cc2b4db1ae7f03fe"}},{"ruleId":"D2","level":"warning","message":{"text":"ReorderBlocks.run (cognitive 42): ReorderBlocks.run has cognitive complexity 42 (threshold 15). Drivers by points: if/else 12 (28 pts), loops 3 (10 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/reorder_blocks.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"e432da8e0b5bc9256b4dba32f0b07c7679a4fc89d28163f91fb65137fb5f64a9"}},{"ruleId":"D2","level":"warning","message":{"text":"ComplexTypeParamOrArgInfo.compute (cognitive 42): ComplexTypeParamOrArgInfo.compute has cognitive complexity 42 (threshold 15). Drivers by points: if/else 13 (33 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1345}}}],"partialFingerprints":{"codehealthFindingId/v1":"060c3a16f665e863789787bc26ab22db2bcb4ecec329f13bc2973380bff78939"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitForStatement (cognitive 42): InScopeCompletionPass.visitForStatement has cognitive complexity 42 (threshold 15). Drivers by points: if/else 11 (31 pts), boolean chains 9, match/switch 1 (2 pts) (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1602}}}],"partialFingerprints":{"codehealthFindingId/v1":"f30404c28a632a215903ad23021c96c9eee89b03be43ba890e837823fdfc1a55"}},{"ruleId":"D2","level":"warning","message":{"text":"UriHelper._addFileSuggestions (cognitive 42): UriHelper._addFileSuggestions has cognitive complexity 42 (threshold 15). Drivers by points: if/else 15 (32 pts), boolean chains 4, loops 1 (3 pts), error handling 1 (2 pts), ternaries 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/uri_helper.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bba8f6ec3a16f34ba859497504b0f1a96b8afaa388647147a7757165c2dfd6a"}},{"ruleId":"D2","level":"warning","message":{"text":"YamlCompletionGenerator._siblingsOnPath (cognitive 42): YamlCompletionGenerator._siblingsOnPath has cognitive complexity 42 (threshold 15). Drivers by points: if/else 13 (30 pts), loops 3 (6 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/yaml_completion_generator.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"455ae7869dfb67b6bab10b6071f31b3195fae59be65e2d2b3dfe56bcf180f534"}},{"ruleId":"D2","level":"warning","message":{"text":"AddSuperParameter._addToConstructor (cognitive 42): AddSuperParameter._addToConstructor has cognitive complexity 42 (threshold 15). Drivers by points: if/else 17 (32 pts), ternaries 2 (5 pts), boolean chains 3, loops 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_super_parameter.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"df9c1406fb4e35353b5d9eeae855736dc8eff512721fc6da6e1bed98a0bf3b3e"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToCascade.compute (cognitive 42): ConvertToCascade.compute has cognitive complexity 42 (threshold 15). Drivers by points: if/else 22 (37 pts), boolean chains 2, ternaries 1 (2 pts), loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_cascade.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fddfbe63b618854e5715b0e2712afe8f15c222a78595b15b5beb798224fac55"}},{"ruleId":"D2","level":"warning","message":{"text":"_EdgeInsetsProperty.changeValue (cognitive 42): _EdgeInsetsProperty.changeValue has cognitive complexity 42 (threshold 15). Drivers by points: if/else 20 (38 pts), boolean chains 4 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/property.dart"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"27dad9c545360b80953f3fcd004695398e8d76dd74986c722e296d03a3b09b36"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractWidgetRefactoringImpl._initializeParameters (cognitive 42): ExtractWidgetRefactoringImpl._initializeParameters has cognitive complexity 42 (threshold 15). Drivers by points: if/else 11 (24 pts), loops 6 (12 pts), ternaries 1 (5 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"e277852b5204f6f9cee479a189f7a5c85cac2a82266a7111a2031357906b64d2"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameRefactoring.getElementToRename (cognitive 42): RenameRefactoring.getElementToRename has cognitive complexity 42 (threshold 15). Drivers by points: if/else 39 (42 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"4348e272114e9be4eabb6191d1afe9c91b1c837ee073cf85f4198f94f95d4c6f"}},{"ruleId":"D2","level":"warning","message":{"text":"FixProcessor._addFromProducers (cognitive 42): FixProcessor._addFromProducers has cognitive complexity 42 (threshold 15). Drivers by points: if/else 11 (18 pts), ternaries 4 (13 pts), loops 4 (9 pts), boolean chains 2 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/correction/fix_processor.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9beb6422f3db28262d31511d6915e470db5182f2b57c90f6a052136f91f0d89"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier._reportError (cognitive 42): ConstantVerifier._reportError has cognitive complexity 42 (threshold 15). Drivers by points: boolean chains 39, if/else 3. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f81c884d8af6db8f879a300cee50d4dd5000fe1b31437c041412977849a1a91"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVisitor._buildListConstant (cognitive 42): ConstantVisitor._buildListConstant has cognitive complexity 42 (threshold 15). Drivers by points: if/else 8 (26 pts), match/switch 5 (14 pts), boolean chains 1, loops 1 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (ConstantVisitor._buildSetConstant) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1499}}}],"partialFingerprints":{"codehealthFindingId/v1":"c76f9e9f507359a4caca6d6383d7cd2ad89c38eb7cb20f390bd4b06244533396"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVisitor._buildSetConstant (cognitive 42): ConstantVisitor._buildSetConstant has cognitive complexity 42 (threshold 15). Drivers by points: if/else 8 (26 pts), match/switch 5 (14 pts), boolean chains 1, loops 1 (nesting depth added 27). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (ConstantVisitor._buildListConstant) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1741}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef00435a19edfe656cbaa1ba8800f6daf429172f09511cb088e71e41df651f0c"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver.resolveCascadeIndex (cognitive 42): PropertyElementResolver.resolveCascadeIndex has cognitive complexity 42 (threshold 15). Drivers by points: ternaries 10 (18 pts), if/else 11 (17 pts), boolean chains 6, match/switch 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52c84c512ee9bb1035d9ce0fa9f915d1485a3655627a0293aed387a1ffa434b"}},{"ruleId":"D2","level":"warning","message":{"text":"LanguageVersionOverrideVerifier._findLanguageVersionOverrideComment (cognitive 42): LanguageVersionOverrideVerifier._findLanguageVersionOverrideComment has cognitive complexity 42 (threshold 15). Drivers by points: if/else 21 (23 pts), boolean chains 14, loops 5 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/language_version_override_verifier.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"272283c6b73bbf949d2b28d95e3310eb04acf8046eb577f07adaf1c39e4c74da"}},{"ruleId":"D2","level":"warning","message":{"text":"_TodoFinder._check (cognitive 42): _TodoFinder._check has cognitive complexity 42 (threshold 15). Drivers by points: if/else 12 (21 pts), boolean chains 16, loops 3 (5 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/todo_finder.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"511fb174c44202cae6e4a1192d209a5c933021c47ba98ae8995946c7b2b5755c"}},{"ruleId":"D2","level":"warning","message":{"text":"InferrerEngine.analyze (cognitive 42): InferrerEngine.analyze has cognitive complexity 42 (threshold 15). Drivers by points: if/else 16 (37 pts), boolean chains 5 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"590e63218de17c04b386980e9348b9662a6a7b5d13f29382691a91097257f4ff"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitParameterValue (cognitive 42): SsaInstructionSimplifier.visitParameterValue has cognitive complexity 42 (threshold 15). Drivers by points: if/else 12 (33 pts), loops 3 (6 pts), boolean chains 3 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed247f3614a6063e5536f4b61612bf6b1fb9847d89cf07415a1215a86696c29"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase.createPropertyGet (cognitive 42): InferenceVisitorBase.createPropertyGet has cognitive complexity 42 (threshold 15). Drivers by points: if/else 18 (31 pts), match/switch 3 (5 pts), boolean chains 4, ternaries 1 (2 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":5357}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cb412b9cccf1ce562b78a7b668df5804924cae95a1b043f9bd0b3b0eb334b8c"}},{"ruleId":"D2","level":"warning","message":{"text":"ModulePrinter.enqueueElementSegment (cognitive 42): ModulePrinter.enqueueElementSegment has cognitive complexity 42 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 4 (16 pts), ternaries 1 (6 pts), match/switch 1 (2 pts) (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/printer.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f90f7b9f4e6ae41d660c17dfa8437bcb85b1dfe78806daeaa851761d0da5034"}},{"ruleId":"D2","level":"warning","message":{"text":"_Transform.transformCall (cognitive 42): _Transform.transformCall has cognitive complexity 42 (threshold 15). Drivers by points: if/else 15 (27 pts), boolean chains 11, loops 4 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/signature_shaking.dart"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"deb867c0275849263174b43b45d5d159b74f66b502c796596f2492c088126c11"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous) (cognitive 42): (anonymous) has cognitive complexity 42 (threshold 15). Drivers by points: if/else 28 (33 pts), loops 6, boolean chains 2, error handling 1 (nesting depth added 5). Most of this is not in the body itself: 1 of the 42 points is its own statement and the rest belongs to 53 function items inside it that branch (defineLibrary, hotReloadEnd, _runMain::runMainAndHandleErrors, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":1344}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7a1cdbca5d6386c16369b49daba7b4defa4372708f8bc200fc9d96ad7ca3be6"}},{"ruleId":"D2","level":"warning","message":{"text":"_ErrorCodeDocumentationParser.processCodeBlock (cognitive 41): _ErrorCodeDocumentationParser.processCodeBlock has cognitive complexity 41 (threshold 15). Drivers by points: if/else 17 (39 pts), boolean chains 1, loops 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/messages/error_code_documentation_info.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"48c0e349a8356e8a04fd47f5f197126ffacb6bf19c4fbf8069d3aabc0e8a8a55"}},{"ruleId":"D2","level":"warning","message":{"text":"Intrinsifier.generateMemberIntrinsic (cognitive 41): Intrinsifier.generateMemberIntrinsic has cognitive complexity 41 (threshold 15). Drivers by points: if/else 13 (34 pts), loops 2 (4 pts), ternaries 1 (2 pts), match/switch 1 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":3594}}}],"partialFingerprints":{"codehealthFindingId/v1":"1895a48fb8c526049c90220972a51bf28ec0eff470ea247464d6e634d6d275fa"}},{"ruleId":"D2","level":"warning","message":{"text":"MixinApplicationCloner._findSuperMember (cognitive 41): MixinApplicationCloner._findSuperMember has cognitive complexity 41 (threshold 15). Drivers by points: if/else 12 (34 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/clone.dart"},"region":{"startLine":1764}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a635df17eb9a2ebb41e99056f7ddc419fc045e7178c8557af6b4191a553aea9"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpClientResponse._authenticate (cognitive 41): _HttpClientResponse._authenticate has cognitive complexity 41 (threshold 15). Drivers by points: if/else 17 (34 pts), boolean chains 4, ternaries 2, error handling 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3e69202dc388917f66564eca2bf08781d0f2e438264d7ae6a0bc3ad38dfb0c8"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._makeWindowsFileUrl (cognitive 41): _Uri._makeWindowsFileUrl has cognitive complexity 41 (threshold 15). Drivers by points: if/else 15 (26 pts), boolean chains 9, ternaries 2 (6 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2208}}}],"partialFingerprints":{"codehealthFindingId/v1":"9665c05a5fac6a62c142de64fd4a70c3c003571765d3d1b427bc8310fb174e50"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._normalizeRegName (cognitive 41): _Uri._normalizeRegName has cognitive complexity 41 (threshold 15). Drivers by points: if/else 16 (36 pts), boolean chains 4, loops 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2550}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc72e47c89189b2549b3cf828c34e829552cceb121825569f858e5897eeebedf"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementCompletionProcessor._complete_forStatement (cognitive 41): StatementCompletionProcessor._complete_forStatement has cognitive complexity 41 (threshold 15). Drivers by points: if/else 19 (38 pts), boolean chains 3 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bee2916e734814c1ddfb99b0265a023013fe017d16f1881ae7c9e56d8ca7fef"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementDescriptor._matchesMethod (cognitive 41): ElementDescriptor._matchesMethod has cognitive complexity 41 (threshold 15). Drivers by points: if/else 10 (35 pts), loops 1 (5 pts), boolean chains 1 (nesting depth added 29). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"551f25187e1c8f553dec604a43b3caca8c5094047997b4bbe2546595b6dccec9"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisDriver._analyzeFileImpl (cognitive 41): AnalysisDriver._analyzeFileImpl has cognitive complexity 41 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 5 (12 pts), ternaries 1 (3 pts), boolean chains 1, error handling 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":1340}}}],"partialFingerprints":{"codehealthFindingId/v1":"eac31db8470a89cb29648d05e8a637f8ebcd58bcef3ad7e8d006406fa2e888e3"}},{"ruleId":"D2","level":"warning","message":{"text":"TopMergeHelper.topMerge (cognitive 41): TopMergeHelper.topMerge has cognitive complexity 41 (threshold 15). Drivers by points: boolean chains 23, if/else 17 (18 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/top_merge.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4fcf6e4464129bc4a248303ae281e05bae6138905e41d94c891136a3c2b3bb0"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForExtensionTypeRepresentationErrorCodes (cognitive 41): ErrorVerifier._checkForExtensionTypeRepresentationErrorCodes has cognitive complexity 41 (threshold 15). Drivers by points: if/else 21 (40 pts), boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5511}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c29c2f169f551390e36922f38e4302befcdda88bce5714e200b2bcd10058469"}},{"ruleId":"D2","level":"warning","message":{"text":"DartEditBuilderImpl._writeType (cognitive 41): DartEditBuilderImpl._writeType has cognitive complexity 41 (threshold 15). Drivers by points: if/else 19 (31 pts), loops 2 (5 pts), boolean chains 4, match/switch 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bead77d8dfb40a422d230947ffc420cc0e7ba4e6ba16af47fcf69d81a42275a"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._pushDynamicInvocation (cognitive 41): KernelSsaGraphBuilder._pushDynamicInvocation has cognitive complexity 41 (threshold 15). Drivers by points: if/else 24 (27 pts), boolean chains 13, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6830}}}],"partialFingerprints":{"codehealthFindingId/v1":"403428eb424e07a58870c3a13c3ba6ec4263194fc6905702e69d89829a5166f1"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.handleInterceptedCall (cognitive 41): SsaInstructionSimplifier.handleInterceptedCall has cognitive complexity 41 (threshold 15). Drivers by points: if/else 18 (35 pts), boolean chains 6 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd7863f2744c1feb3275854a2ea74790ec89d18edb3352894ca72844ba12f85"}},{"ruleId":"D2","level":"warning","message":{"text":"PatternConverter.dispatchPattern (cognitive 41): PatternConverter.dispatchPattern has cognitive complexity 41 (threshold 15). Drivers by points: if/else 21 (27 pts), loops 4 (8 pts), boolean chains 3, match/switch 1 (3 pts) (nesting depth added 12). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5c59b13ead75a4f78901e68c5aa37dcd9509f19950af5c7976221ca2495fb0"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtensionTypeHierarchyNodeBuilder.build (cognitive 41): ExtensionTypeHierarchyNodeBuilder.build has cognitive complexity 41 (threshold 15). Drivers by points: if/else 7 (21 pts), loops 5 (20 pts) (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/hierarchy_node.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eae6309df8f41e1404b6517614ad0cc34ca14b8accea4e7548bcb62886be1b4"}},{"ruleId":"D2","level":"warning","message":{"text":"Covariance.== (cognitive 41): Covariance.== has cognitive complexity 41 (threshold 15). Drivers by points: if/else 11 (29 pts), loops 3 (9 pts), boolean chains 3 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/member_covariance.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"eab38274242143e7f2e64a5637bd24fcbb7b5350f3f3220ab03222837581f68c"}},{"ruleId":"D2","level":"warning","message":{"text":"Covariance.toString (cognitive 41): Covariance.toString has cognitive complexity 41 (threshold 15). Drivers by points: if/else 10 (22 pts), match/switch 2 (10 pts), loops 3 (9 pts) (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/member_covariance.dart"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ba131e28676d4bc8e91a3d52942f2c04f03c8bb24ac75d4024217611a913cd"}},{"ruleId":"D2","level":"warning","message":{"text":"_ObjectAccessDescriptor._findNonExtensionTargetInternal (cognitive 41): _ObjectAccessDescriptor._findNonExtensionTargetInternal has cognitive complexity 41 (threshold 15). Drivers by points: if/else 14 (20 pts), ternaries 4 (11 pts), boolean chains 6, loops 1 (2 pts), match/switch 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":6343}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ea2a667f47c50606f96cf17e7e655b1527996fdae4f12ef96fbe88c4c0023c"}},{"ruleId":"D2","level":"warning","message":{"text":"PragmaEntryPointsVisitor.visitProcedure (cognitive 41): PragmaEntryPointsVisitor.visitProcedure has cognitive complexity 41 (threshold 15). Drivers by points: if/else 16 (37 pts), match/switch 1 (2 pts), loops 1, ternaries 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/native_code.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d4c32c00aa55f3627729e3ce6e040cdb868475241aba050031e9b78f666e74"}},{"ruleId":"D2","level":"warning","message":{"text":"SummaryCollector._visitCondition (cognitive 41): SummaryCollector._visitCondition has cognitive complexity 41 (threshold 15). Drivers by points: if/else 13 (20 pts), boolean chains 13, match/switch 3 (6 pts), ternaries 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":1619}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d44c154452a5c7b62b4c11b9f6fef1af7343ec65500934454d6a6d76536cd9e"}},{"ruleId":"D2","level":"warning","message":{"text":"UnboxingInfoManager.analyzeComponent (cognitive 41): UnboxingInfoManager.analyzeComponent has cognitive complexity 41 (threshold 15). Drivers by points: loops 9 (19 pts), if/else 5 (11 pts), boolean chains 6, ternaries 4 (5 pts) (nesting depth added 17). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/unboxing_info.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeb671d6330b024a07bffff6fde098f175a9debaa1395b920117201a82d47535"}},{"ruleId":"D2","level":"warning","message":{"text":"IDLExtAttrs.__init__ (cognitive 41): IDLExtAttrs.__init__ has cognitive complexity 41 (threshold 15). Drivers by points: if/else 13 (31 pts), loops 3 (8 pts), boolean chains 2 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"669ecb3eb05f9899435798046d1ec488a9afec6e399c21ec7f7b0327068109eb"}},{"ruleId":"D2","level":"warning","message":{"text":"JsInteropChecks.visitClass (cognitive 40): JsInteropChecks.visitClass has cognitive complexity 40 (threshold 15). Drivers by points: if/else 17 (30 pts), boolean chains 6, loops 2 (4 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"df7e43ce8cbf0dc26571281eb91624b0c0bae5b9e7484d96c0a1b961a45b7a44"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator._genConstructorInitializers (cognitive 40): BytecodeGenerator._genConstructorInitializers has cognitive complexity 40 (threshold 15). Drivers by points: if/else 12 (33 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ae15f3674fb59d552b3883fbf2ffc8aed42ec7dd55fce64cafdf3562e6c8c2"}},{"ruleId":"D2","level":"warning","message":{"text":"SelectorInfo._computeSignature (cognitive 40): SelectorInfo._computeSignature has cognitive complexity 40 (threshold 15). Drivers by points: if/else 11 (18 pts), loops 6 (15 pts), ternaries 2 (5 pts), boolean chains 2 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dispatch_table.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"7903e67cbd30a0fe3654a160fdda044df1e8afdcfac61ecb70d9c24e0bcd1d5e"}},{"ruleId":"D2","level":"warning","message":{"text":"DartdevRunner.runCommand (cognitive 40): DartdevRunner.runCommand has cognitive complexity 40 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 11, error handling 5 (8 pts), ternaries 1 (3 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/dartdev.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bee10da3fcbb0eb223a252bad027b8171bfef794cc0719b2ab3ccd71c2387cd"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpDate._parse (cognitive 40): HttpDate._parse has cognitive complexity 40 (threshold 15). Drivers by points: if/else 16 (31 pts), boolean chains 6, loops 3 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_date.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82d0a95712f229429284b7c24c2f7bc22c948c09d0180faae3dc043cd9d1077"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parsePrimaryConstructorOpt (cognitive 40): Parser.parsePrimaryConstructorOpt has cognitive complexity 40 (threshold 15). Drivers by points: if/else 15 (28 pts), match/switch 3 (9 pts), boolean chains 3 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":3782}}}],"partialFingerprints":{"codehealthFindingId/v1":"a10fa63da10ce171f5b4fd789cb53cfc2ee5c38a97c9482e46b3c4b225aac3c8"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseSwitchBlock (cognitive 40): Parser.parseSwitchBlock has cognitive complexity 40 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 5 (15 pts), boolean chains 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10893}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cea4effa8ec15d0e3342b7642e0b2105f731adcaf004616ac55c9a79ea28598"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseSwitchExpression (cognitive 40): Parser.parseSwitchExpression has cognitive complexity 40 (threshold 15). Drivers by points: if/else 15 (37 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":12411}}}],"partialFingerprints":{"codehealthFindingId/v1":"009f56b707502643e6e3fd54b43e92d36d03d3d1ec212f6be01cc702dda10695"}},{"ruleId":"D2","level":"warning","message":{"text":"ComplexTypeParamOrArgInfo.parseUnexpectedEnd (cognitive 40): ComplexTypeParamOrArgInfo.parseUnexpectedEnd has cognitive complexity 40 (threshold 15). Drivers by points: if/else 17 (28 pts), boolean chains 8, loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1607}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5cf3f5ab46e460148e231448e302492bf95c7420fcdaf0cc9d9ce2094ea376b"}},{"ruleId":"D2","level":"warning","message":{"text":"DartCodeActionsProducer.getRefactorActions (cognitive 40): DartCodeActionsProducer.getRefactorActions has cognitive complexity 40 (threshold 15). Drivers by points: if/else 14 (33 pts), boolean chains 3, ternaries 1 (3 pts), error handling 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/dart.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"d10f22294d6506920346c2aaad6222248b2c4ad8edf435d9d714ad5054b89cb5"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkFixProcessor._fixSingleDiagnostic (cognitive 40): BulkFixProcessor._fixSingleDiagnostic has cognitive complexity 40 (threshold 15). Drivers by points: if/else 7 (21 pts), loops 4 (18 pts), error handling 1 (nesting depth added 28). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"f68c73f9ec85114370edd3333676a8848612b5c2d387b398ad127bc14cb42754"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToDeclaringParameter._getRefactorData (cognitive 40): ConvertToDeclaringParameter._getRefactorData has cognitive complexity 40 (threshold 15). Drivers by points: if/else 16 (34 pts), boolean chains 3, loops 1 (3 pts) (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_declaring_parameter.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b269fca5901a4ba0fdbdd0b9a37ff4c63591eabac07c58afab849f631824b51"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToInBodyConstructor._convertPrimaryConstructorInBlockBody (cognitive 40): ConvertToInBodyConstructor._convertPrimaryConstructorInBlockBody has cognitive complexity 40 (threshold 15). Drivers by points: if/else 16 (32 pts), ternaries 2 (5 pts), boolean chains 2, loops 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_in_body_constructor.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbf62e8311e5c4648d0357cf39a27cd178503ae6ae838ce0d2acc657326b45e5"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplacedBy._rangeWithTarget (cognitive 40): ReplacedBy._rangeWithTarget has cognitive complexity 40 (threshold 15). Drivers by points: if/else 15 (29 pts), boolean chains 9, ternaries 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e2aee2cc4501060bea72322cb80ac8d44db87812eafed43b4cdf2508e38b414"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericInferrer.tryChooseFinalTypes (cognitive 40): GenericInferrer.tryChooseFinalTypes has cognitive complexity 40 (threshold 15). Drivers by points: if/else 14 (33 pts), boolean chains 4, loops 3 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/generic_inferrer.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4086667a5ddf7a07f925776aa7132b0d7b1a358a353d92ca2aac1cae140319"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorTearOffResolver.resolve (cognitive 40): ConstructorTearOffResolver.resolve has cognitive complexity 40 (threshold 15). Drivers by points: if/else 9 (16 pts), ternaries 4 (12 pts), match/switch 2 (8 pts), boolean chains 4 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/constructor_tear_off_resolver.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87aef45d95f3e3e0464dfca3719924a0124c8ac305f36baa216d20a50d4dfd5"}},{"ruleId":"D2","level":"warning","message":{"text":"_ClassVerifier._reportConcreteClassWithAbstractMember (cognitive 40): _ClassVerifier._reportConcreteClassWithAbstractMember has cognitive complexity 40 (threshold 15). Drivers by points: if/else 12 (33 pts), loops 2 (4 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a116ec5f6287c78d0fcfed00ac9bb2ca8de08f71ed5d76954fe470832482546"}},{"ruleId":"D2","level":"warning","message":{"text":"GatherUsedLocalElementsVisitor._useNamedReadResolution (cognitive 40): GatherUsedLocalElementsVisitor._useNamedReadResolution has cognitive complexity 40 (threshold 15). Drivers by points: if/else 12 (30 pts), boolean chains 5, loops 1 (5 pts) (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"4043a72e069207dd5b002de2ffce595da17e302985b9cf6aa9ccf5c4fd51e928"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateFieldsInCompound (cognitive 40): FfiVerifier._validateFieldsInCompound has cognitive complexity 40 (threshold 15). Drivers by points: if/else 19 (38 pts), boolean chains 2 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1815}}}],"partialFingerprints":{"codehealthFindingId/v1":"344b9c42ca4268a1cace68a3f959a6e3afcb5f3321cc9b4446ed750419cb8737"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestParser._parseAttribute (cognitive 40): ManifestParser._parseAttribute has cognitive complexity 40 (threshold 15). Drivers by points: if/else 16 (31 pts), loops 3 (5 pts), boolean chains 3, ternaries 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/manifest/manifest_validator.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"e95da2f88796ddc99bb0b3f92105a81f3b2b418ba1bcb43d2184760d9e810a56"}},{"ruleId":"D2","level":"warning","message":{"text":"_Builder.build (cognitive 40): _Builder.build has cognitive complexity 40 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 9 (19 pts), boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/program_split_constraints/builder.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9bd4745b534bf8902aa521d5c2e8a09b494e6f206bfc1747e50e819b5a575a9"}},{"ruleId":"D2","level":"warning","message":{"text":"DominatedUses._compute (cognitive 40): DominatedUses._compute has cognitive complexity 40 (threshold 15). Drivers by points: if/else 12 (30 pts), loops 5 (9 pts), boolean chains 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1655}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2ff3d24e70769991192d96188895259ebfc804f6bcd47bd8390fb4f6546c559"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassPropertyModel.build (cognitive 40): ClassPropertyModel.build has cognitive complexity 40 (threshold 15). Drivers by points: if/else 8 (21 pts), boolean chains 11, loops 3 (4 pts), ternaries 1 (4 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/property_model.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"039da5b4afc138b3ccfbaa18cb925dcc6f822924f9e2ced2f39dece61a44c6d6"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl._validateTypeParameterUseInternal (cognitive 40): BodyBuilderImpl._validateTypeParameterUseInternal has cognitive complexity 40 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 5 (15 pts), boolean chains 5, match/switch 1 (nesting depth added 21). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":11415}}}],"partialFingerprints":{"codehealthFindingId/v1":"db8d09f70e42b929ec58555f5751ac77839d541d2b9fdbec9a2df852d85caefb"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitPatternSwitchStatement (cognitive 40): InferenceVisitorImpl.visitPatternSwitchStatement has cognitive complexity 40 (threshold 15). Drivers by points: if/else 8 (23 pts), loops 6 (15 pts), boolean chains 2 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":10330}}}],"partialFingerprints":{"codehealthFindingId/v1":"179f917b3b3ba8f74ab2f72df829be15b874003dc9e86dd06d1016674be72cf4"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.parseStatement (cognitive 40): MiniJsParser.parseStatement has cognitive complexity 40 (threshold 15). Drivers by points: if/else 22 (39 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":1236}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1ce5f6ad78563c7cefdf3aba6e5dd17c7bf5cff8fa16ed4ff6839429abc4ece"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotateKernel._annotateMember (cognitive 40): AnnotateKernel._annotateMember has cognitive complexity 40 (threshold 15). Drivers by points: if/else 12 (25 pts), loops 3 (9 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5be6a6e3e6a1222cfcef5ac142ad0a26f2a63156fb9637a93aee74838a80faf"}},{"ruleId":"D2","level":"warning","message":{"text":"Dart2JSBackend.EmitAttribute (cognitive 40): Dart2JSBackend.EmitAttribute has cognitive complexity 40 (threshold 15). Drivers by points: if/else 16 (27 pts), boolean chains 7, ternaries 2 (6 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1509}}}],"partialFingerprints":{"codehealthFindingId/v1":"e25801a8443c87e1d0f3e524b588909f3078e41bda19f1d5b4f29130d92c9cf1"}},{"ruleId":"D2","level":"warning","message":{"text":"createTreemapTile (cognitive 40): createTreemapTile has cognitive complexity 40 (threshold 15). Drivers by points: if/else 19 (32 pts), loops 3 (5 pts), boolean chains 3 (nesting depth added 15). Of this number, 34 points are the body\u0027s own statements and 6 belong to 4 function items inside it that branch. To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1279}}}],"partialFingerprints":{"codehealthFindingId/v1":"58726525ef191e81db379e7a09e0e82a069317bd0018042310877c53ebd8b43d"}},{"ruleId":"D2","level":"warning","message":{"text":"LogPage._writeEntry (cognitive 39): LogPage._writeEntry has cognitive complexity 39 (threshold 15). Drivers by points: if/else 23 (38 pts), ternaries 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/page/log_page.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce9525abb9ed65da86b4e96791decd828cb6550c7882d1eff2ca39b42cef4d3f"}},{"ruleId":"D2","level":"warning","message":{"text":"AstNodeImplGenerator._generateBeginToken (cognitive 39): AstNodeImplGenerator._generateBeginToken has cognitive complexity 39 (threshold 15). Drivers by points: if/else 14 (32 pts), loops 2 (5 pts), match/switch 1 (2 pts) (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b99c3cce401cffea3fa20099aec3d0c6c5c54cba8115eb75aaba46d28a467a6"}},{"ruleId":"D2","level":"warning","message":{"text":"_ScopeBuilder._visitFunction (cognitive 39): _ScopeBuilder._visitFunction has cognitive complexity 39 (threshold 15). Drivers by points: if/else 15 (29 pts), boolean chains 7, loops 1 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/local_vars.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"a05e2f77e21b1bce9f8674dabb330dc10ecb683a47e13bcbbfd315d924aa59af"}},{"ruleId":"D2","level":"warning","message":{"text":"_Recorder.record (cognitive 39): _Recorder.record has cognitive complexity 39 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 5 (12 pts), error handling 3 (9 pts), boolean chains 2 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/perf_witness/lib/recorder.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"126f7947e5972f274e9d769f8a10488c4889fa1fe97238368d86c4a0e1e0c0ab"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpClientConnection.send (cognitive 39): _HttpClientConnection.send has cognitive complexity 39 (threshold 15). Drivers by points: if/else 21 (29 pts), boolean chains 10 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":2274}}}],"partialFingerprints":{"codehealthFindingId/v1":"70397889392f1c9d2324aa2aa66101231070a25b2588a72f22ff8e358e4ffe59"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl._divRem (cognitive 39): _BigIntImpl._divRem has cognitive complexity 39 (threshold 15). Drivers by points: if/else 13 (25 pts), loops 3 (9 pts), boolean chains 5 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":1477}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb1e606685cd111f7f33b184f39de86d27747b502f6f6909485998aa47bad96"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64CodeGenerator.visitBinaryIntOp (cognitive 39): Arm64CodeGenerator.visitBinaryIntOp has cognitive complexity 39 (threshold 15). Drivers by points: if/else 15 (23 pts), match/switch 5 (12 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 17). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2536}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d1b0115f5020b79f87f0b25e8dc8dd87772baef027dcd82b0edece6b93f3aac"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._normalize (cognitive 39): _Uri._normalize has cognitive complexity 39 (threshold 15). Drivers by points: if/else 14 (35 pts), boolean chains 3, loops 1 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2885}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1defab5b68518acf53718328e8e7312f1587e32a8584d228c51034150070225"}},{"ruleId":"D2","level":"warning","message":{"text":"PromotionModel._tryPromoteToTypeOfInterest (cognitive 39): PromotionModel._tryPromoteToTypeOfInterest has cognitive complexity 39 (threshold 15). Drivers by points: if/else 18 (32 pts), loops 3 (6 pts), ternaries 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":4911}}}],"partialFingerprints":{"codehealthFindingId/v1":"07272a155c621f28e267d9eb6186b42b0d7437bebd7b8c0b391ad0d81929463a"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseTopLevelDeclarationImpl (cognitive 39): Parser.parseTopLevelDeclarationImpl has cognitive complexity 39 (threshold 15). Drivers by points: if/else 15 (19 pts), boolean chains 18, loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"91d7f91b43415471b6db2d5202bfd4fa8ac0890739e51248ccabcaec3c849f38"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeConstraintGenerator.performSubtypeConstraintGenerationInternal (cognitive 39): TypeConstraintGenerator.performSubtypeConstraintGenerationInternal has cognitive complexity 39 (threshold 15). Drivers by points: if/else 28 (35 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":2173}}}],"partialFingerprints":{"codehealthFindingId/v1":"47927bba79b8d63ad0cc04c1fb6ec3ceb23a12a1d282f8b67a26c5810dc244d9"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractNotificationManager.setSubscriptions (cognitive 39): AbstractNotificationManager.setSubscriptions has cognitive complexity 39 (threshold 15). Drivers by points: if/else 7 (21 pts), loops 5 (17 pts), match/switch 1 (nesting depth added 26). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/notification_manager.dart"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"b159e3a1a2f99ae0d03cad71fdfdae5568e73121ff92294b687451d4654499a1"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginWatcher._addPlugins (cognitive 39): PluginWatcher._addPlugins has cognitive complexity 39 (threshold 15). Drivers by points: loops 8 (20 pts), if/else 6 (13 pts), ternaries 2 (4 pts), boolean chains 2 (nesting depth added 21). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_watcher.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f51404c9b57c4059abb73c961d9d5e4e5081fee0e03d88948878c3b81e3d2e"}},{"ruleId":"D2","level":"warning","message":{"text":"KeywordHelper.addExpressionKeywords (cognitive 39): KeywordHelper.addExpressionKeywords has cognitive complexity 39 (threshold 15). Drivers by points: if/else 22 (26 pts), boolean chains 13 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a50f71c9bf37d3d475a9398b33d7e8841ae4d76830cbdc40854010672618a2"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToFlutterStyleTodo.compute (cognitive 39): ConvertToFlutterStyleTodo.compute has cognitive complexity 39 (threshold 15). Drivers by points: if/else 19 (28 pts), loops 3 (6 pts), boolean chains 4, ternaries 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_flutter_style_todo.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4b825cdf2f2218920932af1116c971c4fe7aaafebf83a6692d2b13925a71fd"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveLeadingUnderscore.compute (cognitive 39): RemoveLeadingUnderscore.compute has cognitive complexity 39 (threshold 15). Drivers by points: if/else 19 (31 pts), loops 3 (5 pts), boolean chains 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_leading_underscore.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"295bb51d260ed1a5746069f9555022cf2fd841edab7de61552a71d296517bd1e"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplaceWithDecoratedBox.compute (cognitive 39): ReplaceWithDecoratedBox.compute has cognitive complexity 39 (threshold 15). Drivers by points: if/else 9 (20 pts), loops 5 (8 pts), boolean chains 6, ternaries 2 (5 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_decorated_box.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"d289afe2de0bc66c02573b7d231e1699161fe0c24596f11ac382f981229f6123"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplaceWithIsEmpty._analyzeBinaryExpression (cognitive 39): ReplaceWithIsEmpty._analyzeBinaryExpression has cognitive complexity 39 (threshold 15). Drivers by points: if/else 18 (35 pts), boolean chains 4 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_is_empty.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"1839b205f91adad9756ac751446433d8710e325b21b44dd2ec359aca5137784c"}},{"ruleId":"D2","level":"warning","message":{"text":"RefactoringManager._createRefactoringFromKind (cognitive 39): RefactoringManager._createRefactoringFromKind has cognitive complexity 39 (threshold 15). Drivers by points: if/else 21 (38 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring_manager.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e71ee14e97411ff71c29a9ae4ef8bd127078c542fc5f6668e8dff2370ed6157"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginsPage._emitIsolateInfo (cognitive 39): PluginsPage._emitIsolateInfo has cognitive complexity 39 (threshold 15). Drivers by points: if/else 17 (30 pts), loops 4 (7 pts), boolean chains 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/plugins_page.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c525458eec92401670d6cf6bcbc2b4cf3f3d10a393c5e0e1c97302820834b3f"}},{"ruleId":"D2","level":"warning","message":{"text":"_ParsedLinterData._parseLocalRules (cognitive 39): _ParsedLinterData._parseLocalRules has cognitive complexity 39 (threshold 15). Drivers by points: if/else 21 (26 pts), boolean chains 5, loops 3 (5 pts), ternaries 1 (2 pts), match/switch 1 (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1219}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0975a04a707e22c0832fcd77f4f11ef3aada07cd3ee71f81d6fc4a3d05159ad"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVisitor._buildMapConstant (cognitive 39): ConstantVisitor._buildMapConstant has cognitive complexity 39 (threshold 15). Drivers by points: if/else 7 (22 pts), match/switch 5 (15 pts), boolean chains 1, loops 1 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1621}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed46aa1bad9741eb7d70a47d588fab173c54fabc5e0ac91ba8ca93ec8c9559f8"}},{"ruleId":"D2","level":"warning","message":{"text":"GetterSetterTypesVerifier.checkInterface (cognitive 39): GetterSetterTypesVerifier.checkInterface has cognitive complexity 39 (threshold 15). Drivers by points: if/else 12 (36 pts), boolean chains 2, loops 1 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/getter_setter_types_verifier.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b3fb0b936db1157ab8b81869eaedde8140107989c2ee7dbac6daf4e458c565f"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolutionEnqueuerListener._processClass (cognitive 39): ResolutionEnqueuerListener._processClass has cognitive complexity 39 (threshold 15). Drivers by points: if/else 26, boolean chains 13. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"091142a1a2572f530c9f38b1363a88b76c8728cce37de016f30dcd03913276e9"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._buildConstructor (cognitive 39): KernelSsaGraphBuilder._buildConstructor has cognitive complexity 39 (threshold 15). Drivers by points: if/else 18 (29 pts), loops 3 (6 pts), boolean chains 4 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"92a6fad4ce49fac1aa1e028b051093cf77c9d93e21830652a26a7756c565d998"}},{"ruleId":"D2","level":"warning","message":{"text":"Debugger._pauseHandler (cognitive 39): Debugger._pauseHandler has cognitive complexity 39 (threshold 15). Drivers by points: if/else 15 (32 pts), boolean chains 4, ternaries 1 (2 pts), error handling 1 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"d34e45ec44b4849f074d2d2ef55ded4cc5e9271a358d9912bca102fdd728bfdc"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endFormalParameter (cognitive 39): BodyBuilderImpl.endFormalParameter has cognitive complexity 39 (threshold 15). Drivers by points: if/else 21 (31 pts), boolean chains 6, match/switch 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3745}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b3883820611683a0d2e622d17ac4a95ecd8d55780c2f2024adf4fa9e7faf47"}},{"ruleId":"D2","level":"warning","message":{"text":"ForwardingNode._createForwardingImplIfNeeded (cognitive 39): ForwardingNode._createForwardingImplIfNeeded has cognitive complexity 39 (threshold 15). Drivers by points: if/else 19 (35 pts), boolean chains 2, match/switch 1, ternaries 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d8a713da4f3ab85c643be31068686d92ecec89262acbf2c9f5911e8c798ac1"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader._checkMainMethods (cognitive 39): SourceLoader._checkMainMethods has cognitive complexity 39 (threshold 15). Drivers by points: if/else 19 (39 pts) (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":3090}}}],"partialFingerprints":{"codehealthFindingId/v1":"dddea9d82e9e1b945a045ded45e26ba33b1d12ca1790d06d42dfd77f86cdf8e8"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionType.equals (cognitive 39): FunctionType.equals has cognitive complexity 39 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 5 (13 pts), boolean chains 3 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1414}}}],"partialFingerprints":{"codehealthFindingId/v1":"18acd24db93280797c457975111a99c8648d758a409b50c6beed0d8aa0921c58"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitCompilationUnit (cognitive 39): _Visitor.visitCompilationUnit has cognitive complexity 39 (threshold 15). Drivers by points: if/else 10 (28 pts), loops 6 (7 pts), boolean chains 4 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unreachable_from_main.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf67ddb8954855663c568dba1daab3a2877fd4b1a34bfd82532f059e5dcd76f"}},{"ruleId":"D2","level":"warning","message":{"text":"TreeMap._createTreemapTile (cognitive 39): TreeMap._createTreemapTile has cognitive complexity 39 (threshold 15). Drivers by points: if/else 17 (30 pts), loops 4 (6 pts), boolean chains 3 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/tree_map.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7935591a40886dcd5db74929366f6ec6a5ba93ab44c023feecf2c82ab88dcbb"}},{"ruleId":"D2","level":"warning","message":{"text":"Instance.toJson (cognitive 39): Instance.toJson has cognitive complexity 39 (threshold 15). Drivers by points: if/else 39. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":5751}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcce6f1f8e27010a1e744c21cd46f0ed6fbd39223c6b55ba8a982e94091f1a83"}},{"ruleId":"D2","level":"warning","message":{"text":"gn.ProcessOptions (cognitive 39): gn.ProcessOptions has cognitive complexity 39 (threshold 15). Drivers by points: if/else 18 (32 pts), boolean chains 4, loops 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/gn.py"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"88adbf4375618abf7c9a0a7dea6f57672424923afa3e8ae363d36cd706aacf87"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeMultiLineComment (cognitive 38): AbstractScanner.tokenizeMultiLineComment has cognitive complexity 38 (threshold 15). Drivers by points: if/else 15 (37 pts), loops 1 (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1513}}}],"partialFingerprints":{"codehealthFindingId/v1":"a96a0f460693078b442ee72f867a107dc76eb2ec91937e4754ebfa6b446e8b24"}},{"ruleId":"D2","level":"warning","message":{"text":"_SimpleUri._simpleMerge (cognitive 38): _SimpleUri._simpleMerge has cognitive complexity 38 (threshold 15). Drivers by points: if/else 19 (28 pts), loops 4 (6 pts), boolean chains 4 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":4869}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f3eedf5748e39259d35ec207b3d266a6f0bcb05de0b3eb4bf37685d734d3ec"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseImportRecovery (cognitive 38): Parser.parseImportRecovery has cognitive complexity 38 (threshold 15). Drivers by points: if/else 17 (34 pts), boolean chains 3, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":994}}}],"partialFingerprints":{"codehealthFindingId/v1":"a324f8276d3981867250decd3ce1bde2f5a7c7d29023558bbe6de1d8610b95b2"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseFields (cognitive 38): Parser.parseFields has cognitive complexity 38 (threshold 15). Drivers by points: if/else 17 (26 pts), boolean chains 9, loops 1, match/switch 1, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4438}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e91e01cfa318a149c2613ba5270300f5dbaa797a3e973750997d4f3793d818c"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeMultiLineComment (cognitive 38): AbstractScanner.tokenizeMultiLineComment has cognitive complexity 38 (threshold 15). Drivers by points: if/else 15 (37 pts), loops 1 (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1965}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee9352221d3a73a95639d91b446554eba7c6ace34e2d0e8d9e3e1cf56d5ed5ef"}},{"ruleId":"D2","level":"warning","message":{"text":"MakeFinal.compute (cognitive 38): MakeFinal.compute has cognitive complexity 38 (threshold 15). Drivers by points: if/else 21 (32 pts), boolean chains 4, match/switch 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/make_final.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"805863f440a25fc821c45d1e1824274ad59c581b226a47fd876f5bf26ce851b4"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryAnalyzer._checkForInconsistentLanguageVersionOverride (cognitive 38): LibraryAnalyzer._checkForInconsistentLanguageVersionOverride has cognitive complexity 38 (threshold 15). Drivers by points: if/else 10 (35 pts), loops 2, boolean chains 1 (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc0c24aaf2a99a6ce5c8b18295db6dd06f66fbf9293a2f0a45b854c459a8c476"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassElementImpl.directSubtypesOfSealed (cognitive 38): ClassElementImpl.directSubtypesOfSealed has cognitive complexity 38 (threshold 15). Drivers by points: if/else 8 (26 pts), loops 4 (11 pts), boolean chains 1 (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f5821661bbc242abebd32b8a41082b32603d7e6b66556aa576eae46709a49a6"}},{"ruleId":"D2","level":"warning","message":{"text":"GatherUsedLocalElementsVisitor.visitSimpleIdentifier (cognitive 38): GatherUsedLocalElementsVisitor.visitSimpleIdentifier has cognitive complexity 38 (threshold 15). Drivers by points: if/else 15 (28 pts), boolean chains 7, loops 1 (3 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8ec80ff9c32b47f10ef5616524d4b04204523d4a66871633adf154b05b3b6f4"}},{"ruleId":"D2","level":"warning","message":{"text":"_LibraryMatch.compareStructures (cognitive 38): _LibraryMatch.compareStructures has cognitive complexity 38 (threshold 15). Drivers by points: if/else 12 (35 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1760}}}],"partialFingerprints":{"codehealthFindingId/v1":"63360500ccaa09f5d2c28ca9c2e27654fe9157615dcbfdb7352fe61b7b4f0154"}},{"ruleId":"D2","level":"warning","message":{"text":"FormattingDiagnosticHandler.report (cognitive 38): FormattingDiagnosticHandler.report has cognitive complexity 38 (threshold 15). Drivers by points: if/else 20 (25 pts), boolean chains 10, ternaries 1 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/source_file_provider.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fd9acb576fc4e56987cbfc50d890d1ed7562365b105ee5d841718f86892bbad"}},{"ruleId":"D2","level":"warning","message":{"text":"CodegenWorldBuilder.generateParameterStubs (cognitive 38): CodegenWorldBuilder.generateParameterStubs has cognitive complexity 38 (threshold 15). Drivers by points: if/else 18 (30 pts), boolean chains 4, loops 2, ternaries 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b26cdff11d3848dd7e2b363c59a91e54057ab7b0a6aa3afe902737a53ca5456"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._directCastMethod (cognitive 38): ProgramCompiler._directCastMethod has cognitive complexity 38 (threshold 15). Drivers by points: if/else 14 (37 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7827}}}],"partialFingerprints":{"codehealthFindingId/v1":"949655dc786e52c8c283e97efd8ccdd34909577ca1ab215de449d8015c4a5e96"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._directCastMethod (cognitive 38): LibraryCompiler._directCastMethod has cognitive complexity 38 (threshold 15). Drivers by points: if/else 14 (37 pts), boolean chains 1 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8695}}}],"partialFingerprints":{"codehealthFindingId/v1":"f26faa485600fd0ae84dae6e5af82f9666a880ddc5fffb378ab6573cc8775ee2"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler._computeExpressionCompilationScopeData (cognitive 38): IncrementalCompiler._computeExpressionCompilationScopeData has cognitive complexity 38 (threshold 15). Drivers by points: if/else 14 (23 pts), boolean chains 13, loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2476}}}],"partialFingerprints":{"codehealthFindingId/v1":"33996fd5cb42ac64696dfa5121ad81ab257ff92f4b4708767254bce11c8276c1"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAliasBuilderImpl.unaliasDeclaration (cognitive 38): TypeAliasBuilderImpl.unaliasDeclaration has cognitive complexity 38 (threshold 15). Drivers by points: if/else 10 (28 pts), loops 3 (10 pts) (nesting depth added 25). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_alias_builder.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf32893ecdb51194657dfb2b7872e84919cb47c08faf61ded14b49f7be6c812"}},{"ruleId":"D2","level":"warning","message":{"text":"FactoryEncoding.resolveRedirectingFactory (cognitive 38): FactoryEncoding.resolveRedirectingFactory has cognitive complexity 38 (threshold 15). Drivers by points: if/else 17 (32 pts), boolean chains 6 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"69724852047dd7267a416254136ceaa4721f1d6d60a77af0eb4e642b94688b4b"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceExtensionTypeDeclarationBuilder.checkSupertypes (cognitive 38): SourceExtensionTypeDeclarationBuilder.checkSupertypes has cognitive complexity 38 (threshold 15). Drivers by points: if/else 9 (27 pts), loops 2 (5 pts), match/switch 1 (5 pts), boolean chains 1 (nesting depth added 25). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"248e1e31d5117bd2f87ee283a0e13b6d4024c7a505f67774d0c481f0af41b776"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLibraryBuilder._buildOutlineNodes (cognitive 38): SourceLibraryBuilder._buildOutlineNodes has cognitive complexity 38 (threshold 15). Drivers by points: if/else 18 (31 pts), loops 2 (7 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49fcf8c09ce368c0a87c84e36bc102b0616ee7022336738202d5a552aa764c6"}},{"ruleId":"D2","level":"warning","message":{"text":"StandardBounds._getFunctionStandardLowerBound (cognitive 38): StandardBounds._getFunctionStandardLowerBound has cognitive complexity 38 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 8 (12 pts), boolean chains 7, ternaries 2 (5 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":1098}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7bc7afd9e7506fc3e0382ee514292c07e23d2752b7e10be003bec5035f0ed91"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitSwitchStatement (cognitive 38): _Visitor.visitSwitchStatement has cognitive complexity 38 (threshold 15). Drivers by points: if/else 13 (34 pts), loops 2 (4 pts) (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/exhaustive_cases.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"acda6b7fea021edad57fe3863267be88ceba586bb06c5e74b217746c60b999ed"}},{"ruleId":"D2","level":"warning","message":{"text":"_DeclarationGatherer._addMembers (cognitive 38): _DeclarationGatherer._addMembers has cognitive complexity 38 (threshold 15). Drivers by points: if/else 8 (22 pts), boolean chains 10, loops 2 (4 pts), match/switch 1 (2 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unreachable_from_main.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3b62b176f79f8b3727ee6960048b8c7d93bb5b3f393cc1e5bc1f920785b7c9e"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._checkForConvertiblePositionalParams (cognitive 38): _Visitor._checkForConvertiblePositionalParams has cognitive complexity 38 (threshold 15). Drivers by points: if/else 13 (33 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_super_parameters.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c97f852ad47ee669fbd39843e4f09afa6316ee08a2d3f301c99d33177c87a1a"}},{"ruleId":"D2","level":"warning","message":{"text":"_KernelFromParsedType.visitNamedType (cognitive 38): _KernelFromParsedType.visitNamedType has cognitive complexity 38 (threshold 15). Drivers by points: if/else 20 (26 pts), boolean chains 4, loops 2 (4 pts), ternaries 2 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/testing/type_parser_environment.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb8bce5026d011555d4d11c5c7ad11f2609e294e01ab486918431ef228be4623"}},{"ruleId":"D2","level":"warning","message":{"text":"DevToolsServer.serveDevTools (cognitive 37): DevToolsServer.serveDevTools has cognitive complexity 37 (threshold 15). Drivers by points: if/else 17 (28 pts), boolean chains 4, error handling 2 (4 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4ae31b7e4f04c8680ffc605d28e8c10b642577480d8dc2e0d614ccb11987904"}},{"ruleId":"D2","level":"warning","message":{"text":"Expect._deepEquals (cognitive 37): Expect._deepEquals has cognitive complexity 37 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 5 (10 pts), ternaries 2 (5 pts), boolean chains 3 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"f92f16bff8ad6a17565c08a666d1a4a1ea28c90f636725ddcd6af2b5f795db33"}},{"ruleId":"D2","level":"warning","message":{"text":"_SplayTree._splay (cognitive 37): _SplayTree._splay has cognitive complexity 37 (threshold 15). Drivers by points: if/else 17 (36 pts), loops 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/splay_tree.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e093a8b7ff3ee8df8d6407108808967ae9ae8d17144e9feb120e11197365ccb"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAnalyzer._finishJoinedPatternVariables (cognitive 37): TypeAnalyzer._finishJoinedPatternVariables has cognitive complexity 37 (threshold 15). Drivers by points: if/else 8 (24 pts), boolean chains 5, loops 3 (4 pts), ternaries 1 (4 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":3223}}}],"partialFingerprints":{"codehealthFindingId/v1":"198a8d6be0ba4aac976a1bde503e46b37233c83a085e1b169ccbd38703ca55fd"}},{"ruleId":"D2","level":"warning","message":{"text":"ParsedOptions.parse (cognitive 37): ParsedOptions.parse has cognitive complexity 37 (threshold 15). Drivers by points: if/else 13 (30 pts), loops 3 (4 pts), boolean chains 3 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/options.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7c6fda69901a8f13fdf0aa1838c8056a334e93bbda229f0c69ece3d824d487b"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticInteropMockValidator._computeImplementableExtensionMembers (cognitive 37): StaticInteropMockValidator._computeImplementableExtensionMembers has cognitive complexity 37 (threshold 15). Drivers by points: if/else 7 (20 pts), loops 3 (9 pts), ternaries 1 (5 pts), boolean chains 3 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/static_interop_mock_validator.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a4bf4a79c76de323da0f1d9ee55d85d3772bb6ffce6ea29194527933d33d5d"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._suggestMethod (cognitive 37): DeclarationHelper._suggestMethod has cognitive complexity 37 (threshold 15). Drivers by points: if/else 10 (26 pts), boolean chains 11 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2390}}}],"partialFingerprints":{"codehealthFindingId/v1":"46817f2365b79104d9f1f65ec4fc61dc8326fbaa77c7c457b585dca123e657c7"}},{"ruleId":"D2","level":"warning","message":{"text":"_ContextTypeVisitor.visitArgumentList (cognitive 37): _ContextTypeVisitor.visitArgumentList has cognitive complexity 37 (threshold 15). Drivers by points: if/else 11 (34 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"48cf89c1939bc454433119916ccfb5dc393e8897917cc90cf0c6b2b501ae7703"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitRegularFormalParameter (cognitive 37): InScopeCompletionPass.visitRegularFormalParameter has cognitive complexity 37 (threshold 15). Drivers by points: if/else 13 (28 pts), boolean chains 9 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2888}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dcf82e12566fccaf1d3ff7251b0a8782a8577dcaed343a8f3f02b18ce652f62"}},{"ruleId":"D2","level":"warning","message":{"text":"_EnumDescription._removeUnnamedConstructor (cognitive 37): _EnumDescription._removeUnnamedConstructor has cognitive complexity 37 (threshold 15). Drivers by points: if/else 15 (31 pts), ternaries 2 (4 pts), boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dfc4eb5858cc6cdd68d24247ce218b9bda1864d2b502c2c6f3db0bba7ceff5c"}},{"ruleId":"D2","level":"warning","message":{"text":"_CreateClass.compute (cognitive 37): _CreateClass.compute has cognitive complexity 37 (threshold 15). Drivers by points: if/else 14 (22 pts), boolean chains 6, error handling 1 (5 pts), loops 1 (2 pts), ternaries 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_class.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b8bcd54cce8bb56da06cc652028b194064d4a90c9b801415d74b1f7a6bbbf80"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveTypeAnnotation._removeFromDeclarationList (cognitive 37): RemoveTypeAnnotation._removeFromDeclarationList has cognitive complexity 37 (threshold 15). Drivers by points: if/else 19 (32 pts), boolean chains 5 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff8638a95cb0c2142825316b812bbf5d5c631988814b5e89e59fa844b68b0a40"}},{"ruleId":"D2","level":"warning","message":{"text":"TransformSetParser._translateElement (cognitive 37): TransformSetParser._translateElement has cognitive complexity 37 (threshold 15). Drivers by points: if/else 16 (37 pts) (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fcc4e012f35f529a5cd191c3926bc8fdeabe9d0a0203add796ec200ffd26ef8"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVisitor._getConstantValue (cognitive 37): ConstantVisitor._getConstantValue has cognitive complexity 37 (threshold 15). Drivers by points: if/else 18 (28 pts), boolean chains 5, match/switch 1 (3 pts), ternaries 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2011}}}],"partialFingerprints":{"codehealthFindingId/v1":"376b62f57f366763a505df5d45a39111bc63b1048e0b619e9385eeadd82c0060"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryFragmentImpl.shouldIgnoreUndefined (cognitive 37): LibraryFragmentImpl.shouldIgnoreUndefined has cognitive complexity 37 (threshold 15). Drivers by points: if/else 6 (22 pts), loops 4 (10 pts), boolean chains 5 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":8123}}}],"partialFingerprints":{"codehealthFindingId/v1":"37239f77baf5e202366ea2f8d0a43abe146e093b3b24e4d766c7a2c2afaa5ce4"}},{"ruleId":"D2","level":"warning","message":{"text":"AstRewriter.methodInvocation (cognitive 37): AstRewriter.methodInvocation has cognitive complexity 37 (threshold 15). Drivers by points: if/else 20 (34 pts), boolean chains 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"26a73382369fc547e5f3dfd9b4beb4cee1e5a911c3d5e3a0fa94e395c22e21fa"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier.visitTopLevelVariableDeclaration (cognitive 37): ErrorVerifier.visitTopLevelVariableDeclaration has cognitive complexity 37 (threshold 15). Drivers by points: if/else 11 (29 pts), loops 4 (6 pts), boolean chains 2 (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":2485}}}],"partialFingerprints":{"codehealthFindingId/v1":"669334875985efa3380f0594dce9d1e2e16ef94ff631d0308210a6a6810e8657"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForUnnecessaryNullAware (cognitive 37): ErrorVerifier._checkForUnnecessaryNullAware has cognitive complexity 37 (threshold 15). Drivers by points: if/else 24 (33 pts), boolean chains 3, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":7919}}}],"partialFingerprints":{"codehealthFindingId/v1":"9674dae56c9876fb042263c4ecdb5817590f206b05d0cff1e055ee62d5af028d"}},{"ruleId":"D2","level":"warning","message":{"text":"AstBinaryFlags.encode (cognitive 37): AstBinaryFlags.encode has cognitive complexity 37 (threshold 15). Drivers by points: if/else 37. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_flags.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"eefa33d20089b16b7a6e5b756b19022feb65c61b21ca80691aa8001b24d69e80"}},{"ruleId":"D2","level":"warning","message":{"text":"JsKernelToElementMap._ensureSupertypes (cognitive 37): JsKernelToElementMap._ensureSupertypes has cognitive complexity 37 (threshold 15). Drivers by points: if/else 12 (26 pts), loops 3 (10 pts), boolean chains 1 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c1539b7c3ee6db8d588e4a3f15d39e194bda644a7da4ff0e78ea0daa497fd3"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaLoadElimination.visitBasicBlock (cognitive 37): SsaLoadElimination.visitBasicBlock has cognitive complexity 37 (threshold 15). Drivers by points: if/else 14 (26 pts), loops 4 (7 pts), boolean chains 4 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4439}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d5db4635663bba94bd38465a35716a85c835169cf0c97d55753d77747fb316"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader.checkClassSupertypes (cognitive 37): SourceLoader.checkClassSupertypes has cognitive complexity 37 (threshold 15). Drivers by points: if/else 9 (19 pts), ternaries 3 (11 pts), boolean chains 4, match/switch 1 (2 pts), loops 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2061}}}],"partialFingerprints":{"codehealthFindingId/v1":"030fc0541a140f1debd92125dbda5a8d00706b991257e605d8f082d47188af36"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentFrontendServer._generateCompilerOptions (cognitive 37): ResidentFrontendServer._generateCompilerOptions has cognitive complexity 37 (threshold 15). Drivers by points: if/else 22 (25 pts), loops 6 (11 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/resident_frontend_server.dart"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e31efc7cccd6d22aeb6b55327ffb130bf4460f374a547c5ee6ea3f78b1ee7c9"}},{"ruleId":"D2","level":"warning","message":{"text":"DartTypeEquivalence.visitFunctionType (cognitive 37): DartTypeEquivalence.visitFunctionType has cognitive complexity 37 (threshold 15). Drivers by points: if/else 12 (25 pts), loops 4 (8 pts), boolean chains 4 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/dart_type_equivalence.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fea8f1891cdc20f9331c8068abd883f8650caf46489a06e96acbca25a8918ee"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptInsetElement._refreshSourceReport (cognitive 37): ScriptInsetElement._refreshSourceReport has cognitive complexity 37 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 4 (11 pts), boolean chains 2 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"09281d23dd0045a1aa0306bd49f36d413eba0d98551fdb193e52b834a8c9f39a"}},{"ruleId":"D2","level":"warning","message":{"text":"Module.printAsWat (cognitive 37): Module.printAsWat has cognitive complexity 37 (threshold 15). Drivers by points: loops 10 (24 pts), if/else 7 (13 pts) (nesting depth added 20). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/module.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d67acad221977cb671f03c1f6cf402e4c3aa96a49809636e0d5730fe4a8de66"}},{"ruleId":"D2","level":"warning","message":{"text":"DatabaseBuilder._mark_usage (cognitive 37): DatabaseBuilder._mark_usage has cognitive complexity 37 (threshold 15). Drivers by points: if/else 7 (26 pts), loops 3 (8 pts), boolean chains 2, ternaries 1 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e38e593c897e4896c127d85620630f0464cf638db821b0ba4cf69fe55b74a8e"}},{"ruleId":"D2","level":"warning","message":{"text":"DynamicForwarderCodeGenerator._generateDynamicMethodForwarder (cognitive 36): DynamicForwarderCodeGenerator._generateDynamicMethodForwarder has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 5 (10 pts), ternaries 2 (6 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":3902}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e364d847fc8246956cb9b1081674c4e500dea928b4048bf74c9dcba5b20378"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringToBuffer (cognitive 36): _ChunkedJsonParser.parseStringToBuffer has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (32 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"db25775586daa60766aebfe3dfcd61185c41483bafffa32d3fa7605410cb389d"}},{"ruleId":"D2","level":"warning","message":{"text":"LinearScanRegisterAllocator.allocateBlockedRegister (cognitive 36): LinearScanRegisterAllocator.allocateBlockedRegister has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (32 pts), loops 2, boolean chains 1, ternaries 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8fd28f5624f55abc67a38316418a05a82ac5f9e7743b465aab7857d86f0eaa0"}},{"ruleId":"D2","level":"warning","message":{"text":"_JsonStringifier.writeStringContent (cognitive 36): _JsonStringifier.writeStringContent has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (26 pts), boolean chains 6, match/switch 1 (3 pts), loops 1 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/json.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7006358a576c5d081107769517493cbaf1a67c6d078d48cad0226fe3a9db57e"}},{"ruleId":"D2","level":"warning","message":{"text":"UriData._parse (cognitive 36): UriData._parse has cognitive complexity 36 (threshold 15). Drivers by points: if/else 13 (26 pts), boolean chains 6, loops 3 (4 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":4254}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb4eca4490baf3cab770a4965435a8045a21cad9d8a3ad8b2efc62526d5aaf60"}},{"ruleId":"D2","level":"warning","message":{"text":"AstToIr._translateConditionForValue (cognitive 36): AstToIr._translateConditionForValue has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (25 pts), match/switch 3 (9 pts), loops 2 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":2043}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff5fbb068d810964852685beb26fb6b3c997c7b1c44946a77b1038991f4fd4aa"}},{"ruleId":"D2","level":"warning","message":{"text":"_ScopeBuilder.allocateContexts (cognitive 36): _ScopeBuilder.allocateContexts has cognitive complexity 36 (threshold 15). Drivers by points: if/else 6 (23 pts), loops 5 (11 pts), boolean chains 2 (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/computed_scopes.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"252098cfd61b4f22e6798cf8868135919582a6c4a8b572ce61a9effd7011078d"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantPragmaAnnotationParser.parsePragma (cognitive 36): ConstantPragmaAnnotationParser.parsePragma has cognitive complexity 36 (threshold 15). Drivers by points: if/else 20 (29 pts), boolean chains 4, ternaries 1 (2 pts), match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/pragma.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"95d78f792bf5e123324a8e4fd3b356f5bb4a9019d72402de71ad0944a254d28b"}},{"ruleId":"D2","level":"warning","message":{"text":"ColorComputer.getExpressionColorObject (cognitive 36): ColorComputer.getExpressionColorObject has cognitive complexity 36 (threshold 15). Drivers by points: if/else 16 (22 pts), match/switch 3 (7 pts), boolean chains 4, ternaries 1 (2 pts), error handling 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_color.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b6a53753289ee67e2b78220d0263c21e7866d8aaa0f89692bae28f13af124a8"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameHandler.handle (cognitive 36): RenameHandler.handle has cognitive complexity 36 (threshold 15). Drivers by points: if/else 21 (30 pts), boolean chains 6 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"80eca81b34d64ac05a77edc8f706fffaa63a60179d0b967bbab269c562a06203"}},{"ruleId":"D2","level":"warning","message":{"text":"MessageScheduler._processDocumentChange (cognitive 36): MessageScheduler._processDocumentChange has cognitive complexity 36 (threshold 15). Drivers by points: if/else 17 (29 pts), boolean chains 4, loops 2, ternaries 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/message_scheduler.dart"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2a68676953f8a5ad27c00f8185d18fca1eb63226f31c326d96b0006a2f9099"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitMethodInvocation (cognitive 36): InScopeCompletionPass.visitMethodInvocation has cognitive complexity 36 (threshold 15). Drivers by points: if/else 12 (24 pts), boolean chains 10, ternaries 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2121}}}],"partialFingerprints":{"codehealthFindingId/v1":"8169ca96c689093dbfc71b235c99300594e427b80f6fac5e08b22a0ab6ee230b"}},{"ruleId":"D2","level":"warning","message":{"text":"AddExplicitCast.compute (cognitive 36): AddExplicitCast.compute has cognitive complexity 36 (threshold 15). Drivers by points: if/else 15 (27 pts), boolean chains 9 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"660a325cf1628813a705b0cf9a78164733b8631c5afff6878b00a9d35a682bb2"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveIfNullOperator.compute (cognitive 36): RemoveIfNullOperator.compute has cognitive complexity 36 (threshold 15). Drivers by points: if/else 13 (23 pts), loops 3 (6 pts), boolean chains 4, ternaries 1 (3 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_if_null_operator.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc7361b6bf7dfc5008fef7c6982035495ca75901037819ba84ef504555350970"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractMethodRefactoringImpl._checkSelection (cognitive 36): ExtractMethodRefactoringImpl._checkSelection has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (31 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"c596e9ed88328d12d8834f174e2a0e25c471b5213480cba9e52edd26e10b2ea1"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementWriter._computeProperties (cognitive 36): ElementWriter._computeProperties has cognitive complexity 36 (threshold 15). Drivers by points: if/else 23 (35 pts), match/switch 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/utilities/element_writer.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82f7688012e52466f1f1171f3c7031628579f5003d55e08d2a39b5371d9dbe6"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericInferrer._reportInferenceFailure (cognitive 36): GenericInferrer._reportInferenceFailure has cognitive complexity 36 (threshold 15). Drivers by points: if/else 15 (25 pts), boolean chains 5, ternaries 1 (4 pts), match/switch 1 (2 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/generic_inferrer.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc9fa1d1e5eac9f850aad32f08dbc352081202b15ba946bc77d12747876c80e6"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier.visitClassDeclaration (cognitive 36): FfiVerifier.visitClassDeclaration has cognitive complexity 36 (threshold 15). Drivers by points: if/else 15 (28 pts), boolean chains 4, loops 2 (4 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ce76a3920184bc3a46a47c72866ea5d9d58416191d3a252bdb8ed78c45fe963"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor._reportNotEnoughPositionalArguments (cognitive 36): ResolverVisitor._reportNotEnoughPositionalArguments has cognitive complexity 36 (threshold 15). Drivers by points: if/else 22 (30 pts), ternaries 3 (6 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":6339}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ff6f56600ef71f92d703bc5690a7fc014312006c95045bc31b01596c2537181"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelInfoCollector.visitFunction (cognitive 36): KernelInfoCollector.visitFunction has cognitive complexity 36 (threshold 15). Drivers by points: boolean chains 22, if/else 9 (10 pts), ternaries 3 (4 pts) (nesting depth added 2). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f9ee82d54a287eeb03ea242a005f43d79886c08cdab20ff867379d6eb19252"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator._shouldRecordMethodUses (cognitive 36): SsaCodeGenerator._shouldRecordMethodUses has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (33 pts), boolean chains 3 (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2432}}}],"partialFingerprints":{"codehealthFindingId/v1":"51bfff7267673177a62a716042eb6b397e0c64922e70205d89cf9a791f5d2ca8"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSelection.visitFieldSet (cognitive 36): SsaInstructionSelection.visitFieldSet has cognitive complexity 36 (threshold 15). Drivers by points: if/else 23 (33 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"8725a6e0b8803d3a4eb2f05998330014a033edb1b62c05061495ee2a523e4b5a"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeMotion.visitBasicBlock (cognitive 36): SsaCodeMotion.visitBasicBlock has cognitive complexity 36 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 5 (12 pts), boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3988}}}],"partialFingerprints":{"codehealthFindingId/v1":"c463fce2259e008712bf3f4d0a184475b2439bb06a9f1cc2bf0456efdad47f51"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitClassMethods (cognitive 36): ProgramCompiler._emitClassMethods has cognitive complexity 36 (threshold 15). Drivers by points: if/else 17 (26 pts), boolean chains 5, loops 3, ternaries 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2483}}}],"partialFingerprints":{"codehealthFindingId/v1":"13c4b20447228684cbbd28ba3ccb439131f482fe3e2d6c2026ce4eb3e9c04fe8"}},{"ruleId":"D2","level":"warning","message":{"text":"CombinedMemberSignatureBase.CombinedMemberSignatureBase (cognitive 36): CombinedMemberSignatureBase.CombinedMemberSignatureBase has cognitive complexity 36 (threshold 15). Drivers by points: if/else 12 (31 pts), loops 2 (5 pts) (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/combined_member_signature.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cc567c663fe65bef834b5084685a8edf65933c8aeb51cc4db0543ed3ee027c1"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceClassBuilder._computeInterfaceSubstitution (cognitive 36): SourceClassBuilder._computeInterfaceSubstitution has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (28 pts), loops 3 (8 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1627}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b8c7b063a5b1e4b1dfcf536fb33a2a306ca561b1ba6c3c46d081958749b61c6"}},{"ruleId":"D2","level":"warning","message":{"text":"VerifyingAnalysis.run (cognitive 36): VerifyingAnalysis.run has cognitive complexity 36 (threshold 15). Drivers by points: if/else 14 (20 pts), loops 4 (11 pts), error handling 1 (3 pts), boolean chains 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/verifying_analysis.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a74c1de3039f60fac33039bf3128b1246e5de33ed81500d3adae34a628447cd"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalJavaScriptBundler.compile (cognitive 36): IncrementalJavaScriptBundler.compile has cognitive complexity 36 (threshold 15). Drivers by points: if/else 10 (19 pts), ternaries 8 (16 pts), loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/javascript_bundle.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"65f55ad9f0461ad78b6044cb60da8f3d58f9f8abe2145b72967a404572a62605"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._visitInvocationExpression (cognitive 36): _Visitor._visitInvocationExpression has cognitive complexity 36 (threshold 15). Drivers by points: if/else 17 (31 pts), boolean chains 5 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_lambdas.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"d464e50f8c9df5ff9b79c2ccc8e0507d40a3f68b8646f91e056b6dcb836523b2"}},{"ruleId":"D2","level":"warning","message":{"text":"DwarfStackTraceDecoder.bind (cognitive 36): DwarfStackTraceDecoder.bind has cognitive complexity 36 (threshold 15). Drivers by points: if/else 10 (26 pts), loops 3 (7 pts), boolean chains 3 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/convert.dart"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb836e54f56230ae52ed1ae3e586a64400da38886351e8ac30ebc9e72b8e5809"}},{"ruleId":"D2","level":"warning","message":{"text":"ChainContext.list (cognitive 36): ChainContext.list has cognitive complexity 36 (threshold 15). Drivers by points: if/else 9 (31 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/testing/lib/src/chain.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee26926e5d3e1adcd41be6c4995eb277ae81d9a79f50b8b58397a0b2be68727c"}},{"ruleId":"D2","level":"warning","message":{"text":"Summary.apply (cognitive 36): Summary.apply has cognitive complexity 36 (threshold 15). Drivers by points: if/else 13 (26 pts), loops 4, boolean chains 3, ternaries 2 (3 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":1066}}}],"partialFingerprints":{"codehealthFindingId/v1":"24197bd2a6dd47c2a0413a9c1f0fbfe99e4b671c00dbf1659f606e679ea55c65"}},{"ruleId":"D2","level":"warning","message":{"text":"gn.ToGnArgs (cognitive 36): gn.ToGnArgs has cognitive complexity 36 (threshold 15). Drivers by points: if/else 19 (25 pts), boolean chains 5, loops 1 (3 pts), ternaries 1 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/gn.py"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f0596730918d03b78a29b75246b6f28c6f8d215a15ed7878dff832280218aa"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeNumber (cognitive 35): AbstractScanner.tokenizeNumber has cognitive complexity 35 (threshold 15). Drivers by points: if/else 10 (23 pts), ternaries 2 (8 pts), boolean chains 3, loops 1 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1686}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ec20edbc659fd8b4377553e15b0306be5196dfedf72778546956188d42c1441"}},{"ruleId":"D2","level":"warning","message":{"text":"DevToolsServer.serveDevTools (cognitive 35): DevToolsServer.serveDevTools has cognitive complexity 35 (threshold 15). Drivers by points: if/else 14 (22 pts), error handling 3 (8 pts), boolean chains 4, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"063383143584fbf4a21305b8cdee23d499177f3270920fe98ee731f7515990ce"}},{"ruleId":"D2","level":"warning","message":{"text":"ClosedWorldClassHierarchy.applyTreeChanges (cognitive 35): ClosedWorldClassHierarchy.applyTreeChanges has cognitive complexity 35 (threshold 15). Drivers by points: loops 12 (17 pts), if/else 11 (16 pts), boolean chains 2 (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1264}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b3ebf410ef7f9e711853b3ec517041ca91ee1dbb8f4615d8bdad3d6a11c1f8"}},{"ruleId":"D2","level":"warning","message":{"text":"double._tryParseDouble (cognitive 35): double._tryParseDouble has cognitive complexity 35 (threshold 15). Drivers by points: if/else 19 (30 pts), boolean chains 4, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double_patch.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4770d1e17487edc4b347d89908ca593849f7d779e8815b2f4a9560ca0b713e4"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser._parseStringInternal (cognitive 35): _ChunkedJsonParser._parseStringInternal has cognitive complexity 35 (threshold 15). Drivers by points: if/else 13 (27 pts), boolean chains 3, ternaries 1 (3 pts), loops 1 (2 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"883789622baa3fa9de42d4b55f6f740ae1af76ebfcba493e96739d99bb5e92ff"}},{"ruleId":"D2","level":"warning","message":{"text":"_TypeUniverse.isSubtype (cognitive 35): _TypeUniverse.isSubtype has cognitive complexity 35 (threshold 15). Drivers by points: if/else 19 (27 pts), boolean chains 8 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":1351}}}],"partialFingerprints":{"codehealthFindingId/v1":"42d6c20f95e852f311273ec7471ccc97bffd902d9f3f94bd13e00d53e0c62487"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiUseSiteTransformer._replaceNativeCallParameterAndArgument (cognitive 35): _FfiUseSiteTransformer._replaceNativeCallParameterAndArgument has cognitive complexity 35 (threshold 15). Drivers by points: if/else 19 (30 pts), boolean chains 4, match/switch 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":2195}}}],"partialFingerprints":{"codehealthFindingId/v1":"28b6d693d9cd1e77f90bb71e7d3b2dd48832146779e4263f14e4631382f67f0d"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeNumber (cognitive 35): AbstractScanner.tokenizeNumber has cognitive complexity 35 (threshold 15). Drivers by points: if/else 10 (23 pts), ternaries 2 (8 pts), boolean chains 3, loops 1 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1533}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe9c492be2d4513470c79a8a20baf612dddbac2ae6d21f2120c3fc5a860b1d3d"}},{"ruleId":"D2","level":"warning","message":{"text":"PerformRefactorCommandHandler.execute (cognitive 35): PerformRefactorCommandHandler.execute has cognitive complexity 35 (threshold 15). Drivers by points: if/else 12 (28 pts), ternaries 1 (5 pts), boolean chains 2 (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/commands/perform_refactor.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdff3336bb6d4317702635462a871ffea01ead56e4285762a8be34b71b31239e"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitNamedArgument (cognitive 35): InScopeCompletionPass.visitNamedArgument has cognitive complexity 35 (threshold 15). Drivers by points: if/else 8 (27 pts), loops 2 (6 pts), match/switch 1 (2 pts) (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2237}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bffd137b243c87e3849d6705456b8cf03c3718e812d8b13595f8625b6f95c42"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementCompletionProcessor._complete_doStatement (cognitive 35): StatementCompletionProcessor._complete_doStatement has cognitive complexity 35 (threshold 15). Drivers by points: if/else 17 (33 pts), boolean chains 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"35e71580f823fd8cfcb86359e4c827fe0cddd1227cfeb1603e41b260e0a9865a"}},{"ruleId":"D2","level":"warning","message":{"text":"AddDiagnosticPropertyReference.compute (cognitive 35): AddDiagnosticPropertyReference.compute has cognitive complexity 35 (threshold 15). Drivers by points: if/else 26 (32 pts), boolean chains 3 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"1424171e01e650686790a0f9bf039a38b91d59444fef22d19d0e3e69411dcd1f"}},{"ruleId":"D2","level":"warning","message":{"text":"AddExplicitCast._computeTargetAndTypes (cognitive 35): AddExplicitCast._computeTargetAndTypes has cognitive complexity 35 (threshold 15). Drivers by points: if/else 16 (24 pts), boolean chains 11 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"05fdc52ed3a8b5475f7db133a25f87db4c154048404ce724baa040316033a693"}},{"ruleId":"D2","level":"warning","message":{"text":"AddKeyToConstructors._updateSuper (cognitive 35): AddKeyToConstructors._updateSuper has cognitive complexity 35 (threshold 15). Drivers by points: if/else 18 (31 pts), boolean chains 3, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"4664db9a2e14d5d8efe512f046425dd0e2eba50a2b8d9446063acccc084ea5a3"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToDeclaringParameter._resolveParameterFromFieldNode (cognitive 35): ConvertToDeclaringParameter._resolveParameterFromFieldNode has cognitive complexity 35 (threshold 15). Drivers by points: if/else 12 (26 pts), boolean chains 4, loops 2 (4 pts), match/switch 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_declaring_parameter.dart"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc8ef37972e3cacf92a05c931ba1a8e858a4d89ff89f082d8383a468f9cf0191"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToNullAware.compute (cognitive 35): ConvertToNullAware.compute has cognitive complexity 35 (threshold 15). Drivers by points: if/else 18 (28 pts), match/switch 1 (3 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_null_aware.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"b08cf1c564d4061505e8c67476ffd5689d9fdbfee8ac264f268b678208fcdf03"}},{"ruleId":"D2","level":"warning","message":{"text":"EncapsulateField._updateReferencesInConstructor (cognitive 35): EncapsulateField._updateReferencesInConstructor has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (25 pts), ternaries 1 (4 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"236b3f2054fe65ab16d8a4bdca340aa9f1a7a6a0b6b4700cd57bfbdbc2588a55"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractLocalVariable._rewriteProperty (cognitive 35): ExtractLocalVariable._rewriteProperty has cognitive complexity 35 (threshold 15). Drivers by points: if/else 8 (24 pts), loops 2 (8 pts), boolean chains 3 (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/extract_local_variable.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a58a8c2302d855e4ea7c812c4b9ad4a66a7a58d5c73c71df784bdf8eb260e6"}},{"ruleId":"D2","level":"warning","message":{"text":"MoveTopLevelToFile._membersToMove (cognitive 35): MoveTopLevelToFile._membersToMove has cognitive complexity 35 (threshold 15). Drivers by points: if/else 12 (28 pts), match/switch 2 (4 pts), loops 2, boolean chains 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/move_top_level_to_file.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfd967640218b00a7335aeea722ccf00f398461cc7cad4c0b065bca13115cf25"}},{"ruleId":"D2","level":"warning","message":{"text":"_FindDeclarations.compute (cognitive 35): _FindDeclarations.compute has cognitive complexity 35 (threshold 15). Drivers by points: if/else 10 (29 pts), boolean chains 3, loops 1 (2 pts), error handling 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d55789e1f2fadce8a90b18ec789022ca02c4200832f189aca47231a70f39e55"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorInvocationEvaluator.evaluate (cognitive 35): _ConstructorInvocationEvaluator.evaluate has cognitive complexity 35 (threshold 15). Drivers by points: if/else 17 (32 pts), loops 3 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3684}}}],"partialFingerprints":{"codehealthFindingId/v1":"e48544acce00aec1e6c48b81be4e6d3a88ca4e0c3f5335979a191665166f66d2"}},{"ruleId":"D2","level":"warning","message":{"text":"_Collector._identifier (cognitive 35): _Collector._identifier has cognitive complexity 35 (threshold 15). Drivers by points: if/else 17 (29 pts), boolean chains 6 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac1ddd7ba4211b4a0f0a039de0f09b58a03041c32dded75b50c21ec97b393ae3"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowAnalysisHelper.getLabelTarget (cognitive 35): FlowAnalysisHelper.getLabelTarget has cognitive complexity 35 (threshold 15). Drivers by points: if/else 8 (24 pts), loops 2 (5 pts), boolean chains 3, match/switch 1 (3 pts) (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"3281af9eb266389f5c4151bda70aa629c00b0ef97c2f489fe57670ed9667234d"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver._resolve (cognitive 35): PropertyElementResolver._resolve has cognitive complexity 35 (threshold 15). Drivers by points: if/else 19 (29 pts), ternaries 1 (3 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":1857}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f452851eee686e474d62c3d5c8f33227ee52f07a91397f74129486d190cf6f5"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeArgumentsVerifier._checkForTypeArgumentNotMatchingBounds (cognitive 35): TypeArgumentsVerifier._checkForTypeArgumentNotMatchingBounds has cognitive complexity 35 (threshold 15). Drivers by points: if/else 21 (30 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/type_arguments_verifier.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f58c8c9237c51a824b369a134c581167fff443e9f8e9fa899da793c2b07e27b"}},{"ruleId":"D2","level":"warning","message":{"text":"_OpTypeAstVisitor.visitExpressionFunctionBody (cognitive 35): _OpTypeAstVisitor.visitExpressionFunctionBody has cognitive complexity 35 (threshold 15). Drivers by points: if/else 10 (33 pts), boolean chains 2 (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"7979023c0245d7add6cb32df1480b0c0a5548773525bbf4de6d217391f87b166"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalDeclarationVisitor._addVariables (cognitive 35): LocalDeclarationVisitor._addVariables has cognitive complexity 35 (threshold 15). Drivers by points: if/else 17 (27 pts), loops 4 (8 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99fc66b70c02f15a6265e431c1b5d952c51ed8b22b3087628191ee0e14fbb80"}},{"ruleId":"D2","level":"warning","message":{"text":"StreamManager.streamListen (cognitive 35): StreamManager.streamListen has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (22 pts), loops 2 (7 pts), boolean chains 3, error handling 1 (3 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/stream_manager.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"32f2afadfacff51148f9a3bafa93b02a3777312f51037a89a5145b69e72c8181"}},{"ruleId":"D2","level":"warning","message":{"text":"AppInspector._populateScriptCaches (cognitive 35): AppInspector._populateScriptCaches has cognitive complexity 35 (threshold 15). Drivers by points: if/else 8 (21 pts), loops 5 (12 pts), boolean chains 2 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/inspector.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"f25f5141189cfd6ed817b03dde217307308f2392a4a3dea00625341b03eabaed"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator._evaluateSubexpression (cognitive 35): ConstantEvaluator._evaluateSubexpression has cognitive complexity 35 (threshold 15). Drivers by points: if/else 16 (27 pts), boolean chains 8 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3110}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ce64b7bcdd9eafaac93ea0002e15e02c0ddc5d00fe1336558107a6dc1cd9dad"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader.computeLibraryScopes (cognitive 35): SourceLoader.computeLibraryScopes has cognitive complexity 35 (threshold 15). Drivers by points: loops 11 (22 pts), if/else 5 (13 pts) (nesting depth added 19). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1700}}}],"partialFingerprints":{"codehealthFindingId/v1":"9618ef27d5e989b8c91e4d532d883d8ba349af93466be41bf7eb2b065f4ac266"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl._checkElement (cognitive 35): InferenceVisitorImpl._checkElement has cognitive complexity 35 (threshold 15). Drivers by points: if/else 12 (24 pts), ternaries 2 (8 pts), boolean chains 2, match/switch 1 (nesting depth added 18). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4153}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a6fc1870585e4e39ace5720ac2582bf72471db1825543ea0b8e2832a61f61b8"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitSpreadElement (cognitive 35): InferenceVisitorImpl.visitSpreadElement has cognitive complexity 35 (threshold 15). Drivers by points: if/else 16 (23 pts), match/switch 3 (6 pts), boolean chains 5, ternaries 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4554}}}],"partialFingerprints":{"codehealthFindingId/v1":"59337fe1fe3e546fbc7794ae2d19cdbba31a354055528af949856bfa161345ea"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitUnary (cognitive 35): InferenceVisitorImpl.visitUnary has cognitive complexity 35 (threshold 15). Drivers by points: if/else 12 (35 pts) (nesting depth added 23). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":10950}}}],"partialFingerprints":{"codehealthFindingId/v1":"acda68a4f0f81ee46b9804465759ccebc44b5a0a3be71d7236956d1fbd4f4157"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitDotShorthandInvocation (cognitive 35): InferenceVisitorImpl.visitDotShorthandInvocation has cognitive complexity 35 (threshold 15). Drivers by points: if/else 14 (24 pts), boolean chains 10, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13806}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cbb301b2690715291f530fb67f5d7004a248935b0b05c86922159c91cb31921"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncStateVisitor._visitIfLike (cognitive 35): AsyncStateVisitor._visitIfLike has cognitive complexity 35 (threshold 15). Drivers by points: if/else 13 (22 pts), match/switch 4 (7 pts), boolean chains 6 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":812}}}],"partialFingerprints":{"codehealthFindingId/v1":"3088cd2b56cd6b4aa324406fa643a4b6bb8e587d7065d7a1c12132dadd44b5a3"}},{"ruleId":"D2","level":"warning","message":{"text":"VirtualCollectionElement.render (cognitive 35): VirtualCollectionElement.render has cognitive complexity 35 (threshold 15). Drivers by points: if/else 13 (23 pts), loops 4 (9 pts), boolean chains 3 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/containers/virtual_collection.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"fadec74fb0820923ae16a2f043a525db84da85d2c52ebfc82f3be45cbdd9c7a4"}},{"ruleId":"D2","level":"warning","message":{"text":"Emitter._ParseTemplate (cognitive 35): Emitter._ParseTemplate has cognitive complexity 35 (threshold 15). Drivers by points: if/else 11 (28 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/emitter.py"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9bcf4ff248f9fc3daa06c9d8130d737b21cee61a9d26b161183c7e9ff2d2239"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRegistry._TypeInfo (cognitive 35): TypeRegistry._TypeInfo has cognitive complexity 35 (threshold 15). Drivers by points: if/else 21 (30 pts), boolean chains 5 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":2088}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d28be0ab4532f4b09ce86d0eb36c5b42da6d9362e4983d827b0bd7d1b99b8e1"}},{"ruleId":"D2","level":"warning","message":{"text":"StatsPage._processEntries (cognitive 34): StatsPage._processEntries has cognitive complexity 34 (threshold 15). Drivers by points: if/else 11 (32 pts), boolean chains 1, loops 1 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/page/stats_page.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac65a4cb737e45e6e1584671c2f90b08a4d584fc0c6c63bc4c96afc2777e1190"}},{"ruleId":"D2","level":"warning","message":{"text":"_BuilderGenerator._generateFinish (cognitive 34): _BuilderGenerator._generateFinish has cognitive complexity 34 (threshold 15). Drivers by points: if/else 19 (27 pts), boolean chains 4, loops 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa433d30eb4e77e6f38bc8be33f1ab54d15c09a4c775071b7c1b079233d87a14"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassInfoCollector._createStructForClass (cognitive 34): ClassInfoCollector._createStructForClass has cognitive complexity 34 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3 (9 pts), ternaries 4 (9 pts), boolean chains 5 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/class_info.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"705750c28934720f5335baef3c56b6f1bd46d40a682d69f083eed6279665de27"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorInitializerCodeGenerator.generateInitializerList (cognitive 34): ConstructorInitializerCodeGenerator.generateInitializerList has cognitive complexity 34 (threshold 15). Drivers by points: loops 9 (19 pts), if/else 7 (12 pts), boolean chains 2, ternaries 1 (nesting depth added 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":4353}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c3c5659b18d76c0865dff01a810282e374706e7e7d3c6eb8c7a35fd3966304"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeCheckingVisitor.handleCall (cognitive 34): TypeCheckingVisitor.handleCall has cognitive complexity 34 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 4 (12 pts), boolean chains 3 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7cfc45e283133fba7cadb90348d1ecfd80ae35fb0177240095cca51cb05e5ee"}},{"ruleId":"D2","level":"warning","message":{"text":"_ProxyConfiguration._ProxyConfiguration (cognitive 34): _ProxyConfiguration._ProxyConfiguration has cognitive complexity 34 (threshold 15). Drivers by points: if/else 8 (24 pts), boolean chains 5, error handling 1 (4 pts), loops 1 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":3698}}}],"partialFingerprints":{"codehealthFindingId/v1":"afca13e382975cafce55591129952b26a8aaaa3e8faaad70a419defb946531b4"}},{"ruleId":"D2","level":"warning","message":{"text":"RegisterAllocationChecker.verifyInstructions (cognitive 34): RegisterAllocationChecker.verifyInstructions has cognitive complexity 34 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 5 (15 pts) (nesting depth added 23). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/regalloc_checker.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"82d4487aa1cc4f1f41b2b7fbf5a016586eef1cc1879b8b7dd301f51d80fc837d"}},{"ruleId":"D2","level":"warning","message":{"text":"_Checker._unmatched (cognitive 34): _Checker._unmatched has cognitive complexity 34 (threshold 15). Drivers by points: if/else 11 (27 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/exhaustive.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0d3f9913ca14084187117cec212d751015f7b24e2c0e76547d535bafb85dc9d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExhaustivenessCache.getStaticType (cognitive 34): ExhaustivenessCache.getStaticType has cognitive complexity 34 (threshold 15). Drivers by points: if/else 18 (33 pts), boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/shared.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"53abde266e624eb0ac54ab8245ca114efee717c5ee32b58f684fa75e04d63f3c"}},{"ruleId":"D2","level":"warning","message":{"text":"ComplexTypeInfo.parseType (cognitive 34): ComplexTypeInfo.parseType has cognitive complexity 34 (threshold 15). Drivers by points: if/else 15 (25 pts), boolean chains 7, loops 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"a31b34aa9bf15aada0e97eadb4a48fad2e6fbfdd4757eff5c6b5a65c9a5678ec"}},{"ruleId":"D2","level":"warning","message":{"text":"_CodeFragmentScanner.scan (cognitive 34): _CodeFragmentScanner.scan has cognitive complexity 34 (threshold 15). Drivers by points: if/else 14 (21 pts), loops 4 (10 pts), boolean chains 3 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/code_fragment_parser.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b0596462d79207d1ae123378efe5bc24f46f6cea556606c222fe2350b322cc0"}},{"ruleId":"D2","level":"warning","message":{"text":"_LinterRuleDiagnostics.reportIncompatibleIncluded (cognitive 34): _LinterRuleDiagnostics.reportIncompatibleIncluded has cognitive complexity 34 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 8 (17 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/linter_rule_options_validator.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef7ab08178ba2cdd3fd13a91e965b7696a53aa0772958c0c95d56a5600e9b0c"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier._checkForConstWithTypeParameters (cognitive 34): ConstantVerifier._checkForConstWithTypeParameters has cognitive complexity 34 (threshold 15). Drivers by points: if/else 10 (22 pts), loops 4 (10 pts), boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a18309b487959cba3db5cf6a96b9b2fc292165fe217f38f136ed7641398064"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorInvocationEvaluator._checkParameters (cognitive 34): _ConstructorInvocationEvaluator._checkParameters has cognitive complexity 34 (threshold 15). Drivers by points: if/else 9 (29 pts), boolean chains 4, loops 1 (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3459}}}],"partialFingerprints":{"codehealthFindingId/v1":"824d3cd67c83b543c3f4d74a79450eac35626571bef26f84ce1ad4ce1ae4d122"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver.resolveReceiverPropertyExtraction (cognitive 34): PropertyElementResolver.resolveReceiverPropertyExtraction has cognitive complexity 34 (threshold 15). Drivers by points: if/else 10 (23 pts), boolean chains 4, ternaries 2 (4 pts), match/switch 2 (3 pts) (nesting depth added 16). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"39bc169beb52c775d2b498b64982d01f7e4ad339408228b807da674329937958"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver.resolveReceiverPropertyReadWriteAssignmentTarget (cognitive 34): PropertyElementResolver.resolveReceiverPropertyReadWriteAssignmentTarget has cognitive complexity 34 (threshold 15). Drivers by points: if/else 12 (27 pts), boolean chains 4, match/switch 2 (3 pts) (nesting depth added 16). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4534bfb55a66eec16d64675a903d180b479836c19bea874ab83301e709807fc"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationVerifier._checkVisibility (cognitive 34): AnnotationVerifier._checkVisibility has cognitive complexity 34 (threshold 15). Drivers by points: if/else 12 (24 pts), boolean chains 6, loops 2 (4 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"18cb9eb2224f474ddcd7903970451ecc33a2d3688ea2c3d888a9559bffdb9bf5"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorHandlerVerifier._verifyInvocation (cognitive 34): ErrorHandlerVerifier._verifyInvocation has cognitive complexity 34 (threshold 15). Drivers by points: if/else 18 (29 pts), boolean chains 5 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/error_handler_verifier.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"33c6b22da5cbed90ff672c6f052b3c04b9ae1c8c67b621c0508b0c9938dc3743"}},{"ruleId":"D2","level":"warning","message":{"text":"MemberDuplicateDefinitionVerifier._checkClassStatic (cognitive 34): MemberDuplicateDefinitionVerifier._checkClassStatic has cognitive complexity 34 (threshold 15). Drivers by points: if/else 8 (29 pts), loops 2 (5 pts) (nesting depth added 24). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"73f5ee23e044c55a9df513e3da5008985ad48b40e2191c5901fbd230bb8e56cd"}},{"ruleId":"D2","level":"warning","message":{"text":"DocCommentBuilder._parseReferences (cognitive 34): DocCommentBuilder._parseReferences has cognitive complexity 34 (threshold 15). Drivers by points: if/else 11 (29 pts), boolean chains 4, loops 1 (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bb7a93e1bf97c3ccd0f75da162cfbefcf281b1306b9f95894c7a4e325445a02"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestParser._parseNormalTag (cognitive 34): ManifestParser._parseNormalTag has cognitive complexity 34 (threshold 15). Drivers by points: if/else 20 (28 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/manifest/manifest_validator.dart"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1fd30d3842aec9da9fb3b1e8c9dfc663353e6e370ea5cfbc099622a3fa88f7"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandLineOptions._parse (cognitive 34): CommandLineOptions._parse has cognitive complexity 34 (threshold 15). Drivers by points: if/else 12 (25 pts), ternaries 1 (4 pts), loops 1 (3 pts), boolean chains 1, error handling 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/options.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d4304b92f12942a8a96ef6acbe3c6a457cddfe4dec071a3494ad3acd499c4da"}},{"ruleId":"D2","level":"warning","message":{"text":"PubPackageResolutionTest.missingExpectedMessage (cognitive 34): PubPackageResolutionTest.missingExpectedMessage has cognitive complexity 34 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 4 (12 pts) (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/src/analysis_rule/pub_package_resolution.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fe69b58bcfea859e7a101d0e578f46383c169ba60d263b5cfa4c2b7a154307b"}},{"ruleId":"D2","level":"warning","message":{"text":"DeferredHolderExpressionFinalizerImpl.initializeHolders (cognitive 34): DeferredHolderExpressionFinalizerImpl.initializeHolders has cognitive complexity 34 (threshold 15). Drivers by points: loops 8 (20 pts), if/else 5 (12 pts), ternaries 1 (2 pts) (nesting depth added 20). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart"},"region":{"startLine":742}}}],"partialFingerprints":{"codehealthFindingId/v1":"552daa63d55722db7f7c9f18ec4d26142a50e66e2648ae0df1ddfbd3db5b1aeb"}},{"ruleId":"D2","level":"warning","message":{"text":"SpecializedChecks.findIsTestSpecialization (cognitive 34): SpecializedChecks.findIsTestSpecialization has cognitive complexity 34 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 11 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/specialized_checks.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f8ef106ddde30a78603d846140c4ee0ad5a8cd1c5c88ab4c6420122de84156b"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitArrayFlagsCheck (cognitive 34): SsaInstructionSimplifier.visitArrayFlagsCheck has cognitive complexity 34 (threshold 15). Drivers by points: if/else 14 (31 pts), boolean chains 3 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3030}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a795ad18196a93c3575825b224279fe4c9666663abf36a7b01868f860361303"}},{"ruleId":"D2","level":"warning","message":{"text":"DartDebugAdapter.evaluateRequest (cognitive 34): DartDebugAdapter.evaluateRequest has cognitive complexity 34 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 14, ternaries 2 (3 pts), error handling 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"55bf9d5cb057e993928f12defdfe9aa368701c8c3bd276d7fde72d586986bd2a"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.visitInstanceGet (cognitive 34): ConstantEvaluator.visitInstanceGet has cognitive complexity 34 (threshold 15). Drivers by points: if/else 14 (25 pts), loops 2 (4 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4727}}}],"partialFingerprints":{"codehealthFindingId/v1":"e54d5975b16cbd797de921c7ec28d1f20f8c0ec5f7105c8ccc3492948019031f"}},{"ruleId":"D2","level":"warning","message":{"text":"Covariance.applyCovariance (cognitive 34): Covariance.applyCovariance has cognitive complexity 34 (threshold 15). Drivers by points: if/else 11 (25 pts), loops 3 (9 pts) (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/member_covariance.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c87d2966e1242191d0b42c84199b691a7f3e77fae817679c4b97cea0d3049c1"}},{"ruleId":"D2","level":"warning","message":{"text":"ParserASTListener.seen (cognitive 34): ParserASTListener.seen has cognitive complexity 34 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 13, loops 2 (4 pts), match/switch 1 (nesting depth added 6). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":1755}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba725e992e03c2952294433ffec26fe68b8b923c4ed5abfff81a8757dc821052"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitNamedType (cognitive 34): _Visitor.visitNamedType has cognitive complexity 34 (threshold 15). Drivers by points: if/else 18 (26 pts), boolean chains 8 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_void_to_null.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"6865a2759db1c0d50378ca7b326061270ec2a1342ce7d087fa7cde8fc14ea970"}},{"ruleId":"D2","level":"warning","message":{"text":"InstructionsBuilder.forceBuild (cognitive 34): InstructionsBuilder.forceBuild has cognitive complexity 34 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 5 (9 pts), ternaries 6 (7 pts), boolean chains 5 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c0b1301b26460757d32c55a134f9931c2451fff142e33c169347e50f0940c5"}},{"ruleId":"D2","level":"warning","message":{"text":"WidgetCreatorTracker._getPragmaName (cognitive 34): WidgetCreatorTracker._getPragmaName has cognitive complexity 34 (threshold 15). Drivers by points: if/else 11 (27 pts), loops 1 (4 pts), boolean chains 3 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"11d6eea7a157c2ec37353d95cdd6b2284046b0e7a09cbb64c5c3183b2daa978d"}},{"ruleId":"D2","level":"warning","message":{"text":"MoveFieldInitializers.transformClass (cognitive 34): MoveFieldInitializers.transformClass has cognitive complexity 34 (threshold 15). Drivers by points: if/else 9 (20 pts), loops 6 (8 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"6374c2701d63bd63c13d4fdb603b8a4b710ff6d0161e76911e70d167dee6c678"}},{"ruleId":"D2","level":"warning","message":{"text":"ConcreteType.isSubtypeOfRuntimeType (cognitive 34): ConcreteType.isSubtypeOfRuntimeType has cognitive complexity 34 (threshold 15). Drivers by points: if/else 15 (28 pts), ternaries 1 (3 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1249}}}],"partialFingerprints":{"codehealthFindingId/v1":"0044d281e4c747abba302f3fd05e49365ef522bb94fae78c1f1559c6b011a6df"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateLoader._Preprocess (cognitive 34): TemplateLoader._Preprocess has cognitive complexity 34 (threshold 15). Drivers by points: if/else 11 (31 pts), boolean chains 2, loops 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/templateloader.py"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9db55351f74977db11f4d67f1761c2645e1df049c9d644c88d3e7bc57efff8"}},{"ruleId":"D2","level":"warning","message":{"text":"gn.RunGnOnConfiguredConfigurations (cognitive 34): gn.RunGnOnConfiguredConfigurations has cognitive complexity 34 (threshold 15). Drivers by points: if/else 4 (17 pts), loops 7 (14 pts), error handling 1 (2 pts), boolean chains 1 (nesting depth added 21). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/gn.py"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"afc4f0695a98fd30683d58fe330b53cbdc6e72ef4fc5260aba0d2c0d8c68bfcc"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeMultiLineString (cognitive 33): AbstractScanner.tokenizeMultiLineString has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (32 pts), loops 1 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1621}}}],"partialFingerprints":{"codehealthFindingId/v1":"29fbbeaca8f921d315b5c24911c716a3a9d3577c7b35fbae3fa9c3ceb5867be5"}},{"ruleId":"D2","level":"warning","message":{"text":"RelevanceDataCollector._recordMemberDepth (cognitive 33): RelevanceDataCollector._recordMemberDepth has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (23 pts), loops 3 (10 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1793}}}],"partialFingerprints":{"codehealthFindingId/v1":"6385489af97564c31425a76b05dc83db09a0ed4d37356ccaf4998769acec31e0"}},{"ruleId":"D2","level":"warning","message":{"text":"DynamicDispatchTable._lookupTarget (cognitive 33): DynamicDispatchTable._lookupTarget has cognitive complexity 33 (threshold 15). Drivers by points: if/else 15 (24 pts), boolean chains 8, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dynamic_dispatch_table.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"612bef2f7456d993d79598251142eb9ac107ce024d7fa09bcd318b6e34180c3c"}},{"ruleId":"D2","level":"warning","message":{"text":"DartFuzz.pickScalarVar (cognitive 33): DartFuzz.pickScalarVar has cognitive complexity 33 (threshold 15). Drivers by points: if/else 14 (24 pts), loops 4 (6 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":2128}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfae12b17eab72154e9955594713d2ecef0d3a0a2e5cb909c9b012e3d452ef6f"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl.toDouble (cognitive 33): _BigIntImpl.toDouble has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 4 (7 pts), ternaries 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1884}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ce489717baa5415d128f0df6ea7988afd2e43b1e2d8b4a43ee3a0163d8b150b"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl.toDouble (cognitive 33): _BigIntImpl.toDouble has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 4 (7 pts), ternaries 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/bigint_patch.dart"},"region":{"startLine":1902}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f493cfc2f5cf33c67583971fb45696e22ab9e8700c8c04988ea2d564f22d726"}},{"ruleId":"D2","level":"warning","message":{"text":"_SyncStarIterator.moveNext (cognitive 33): _SyncStarIterator.moveNext has cognitive complexity 33 (threshold 15). Drivers by points: if/else 9 (23 pts), error handling 3 (9 pts), loops 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/async_patch.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"229b33d5b400f9dfaa37bb960376ce91f85a5c7370d92f2bec572d15f41af980"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl._remDigits (cognitive 33): _BigIntImpl._remDigits has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (22 pts), loops 3 (9 pts), boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":1634}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc675ed5b9aecac376259d813c924276f2a03b20b404a61a3f049b81b9992eb1"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl.toDouble (cognitive 33): _BigIntImpl.toDouble has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 4 (7 pts), ternaries 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":2496}}}],"partialFingerprints":{"codehealthFindingId/v1":"e775df7668a465204c79afe9cd35a9ed7d02f789192a6618f4a4cad350622764"}},{"ruleId":"D2","level":"warning","message":{"text":"_Base64Decoder.decodeChunk (cognitive 33): _Base64Decoder.decodeChunk has cognitive complexity 33 (threshold 15). Drivers by points: if/else 11 (27 pts), boolean chains 4, loops 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/base64.dart"},"region":{"startLine":695}}}],"partialFingerprints":{"codehealthFindingId/v1":"a860b77525b9d875ee74d68b7b7236395e64f11f629060e32cec7c3c753b3bfa"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._normalizeZoneID (cognitive 33): _Uri._normalizeZoneID has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (28 pts), boolean chains 4, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2468}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aed75250a58060a4e1ceff40a82b64c01c6f312ae75be4ebc82dee87e6ef0e7"}},{"ruleId":"D2","level":"warning","message":{"text":"SSAComputation.insertPhis (cognitive 33): SSAComputation.insertPhis has cognitive complexity 33 (threshold 15). Drivers by points: if/else 5 (18 pts), loops 4 (8 pts), match/switch 1 (6 pts), boolean chains 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/ssa_computation.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17e7763a524f172a5e5a337a00d7e8936af28cefb18a9b77fcc5f43c82246b6"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiTransformer.ensureArraySizeAnnotation (cognitive 33): FfiTransformer.ensureArraySizeAnnotation has cognitive complexity 33 (threshold 15). Drivers by points: if/else 11 (29 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/common.dart"},"region":{"startLine":1480}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e14a037031889809294c341aa48553b1f0e488b61e7759a70c7dc92050cb78c"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parsePrimaryPattern (cognitive 33): Parser.parsePrimaryPattern has cognitive complexity 33 (threshold 15). Drivers by points: if/else 14 (24 pts), boolean chains 7, match/switch 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11653}}}],"partialFingerprints":{"codehealthFindingId/v1":"b86a5da4dfbc87bf617319171c01210545e22cd855fcc749fda02ebafb432966"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeMultiLineString (cognitive 33): AbstractScanner.tokenizeMultiLineString has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (32 pts), loops 1 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2402}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb7ebbc28170e9bb17a36fc4fa4826e2128a1fab7f45359c8305226e177f03f8"}},{"ruleId":"D2","level":"warning","message":{"text":"SharedInteropTransformer.visitStaticInvocation (cognitive 33): SharedInteropTransformer.visitStaticInvocation has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 9, ternaries 2 (6 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d550c69246c6595357e8a4c7b86f2fff705caeb78ace9e7bf54e30a654cb54"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisServer.reportAnalysisAnalytics (cognitive 33): AnalysisServer.reportAnalysisAnalytics has cognitive complexity 33 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 5 (9 pts), match/switch 1 (3 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"c028d60ac8653eacb7e00ae19670a406fb1af2c0d9d22d19146cf26ec823eaee"}},{"ruleId":"D2","level":"warning","message":{"text":"DartUnitHighlightsComputer._addIdentifierRegion_field (cognitive 33): DartUnitHighlightsComputer._addIdentifierRegion_field has cognitive complexity 33 (threshold 15). Drivers by points: if/else 20 (25 pts), ternaries 2 (5 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"aca590d0c89d03cbf0dc1615436f5fdebd2964c1a8f636bd7a641c73af8d7542"}},{"ruleId":"D2","level":"warning","message":{"text":"_DartUnitHighlightsComputerVisitor._findEscapes (cognitive 33): _DartUnitHighlightsComputerVisitor._findEscapes has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (23 pts), boolean chains 7, loops 2, ternaries 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":2088}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad9602ba64dbee957d06123f86b1a9a30ee2e664e2bc1f45a19d7d5306b17d2d"}},{"ruleId":"D2","level":"warning","message":{"text":"DartCompletionRequest.targetPrefix (cognitive 33): DartCompletionRequest.targetPrefix has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 11, ternaries 1 (2 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"47e12d39492a6f96e278f48ef46a4019a2316d17ebf9fd0835d4ffa702bd473f"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._canAccessInstanceMember (cognitive 33): DeclarationHelper._canAccessInstanceMember has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (28 pts), match/switch 2 (5 pts) (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1809}}}],"partialFingerprints":{"codehealthFindingId/v1":"bacf91e84b10f0afba7ab9bab89a490f17cdb7072bffcaf2284050c9c2245a64"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateSetter.compute (cognitive 33): CreateSetter.compute has cognitive complexity 33 (threshold 15). Drivers by points: if/else 23 (31 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"c20ce2b48fc79f9a40689aaa48fba1027d7c8604eec4a20d4a9231520d7a1d72"}},{"ruleId":"D2","level":"warning","message":{"text":"_RemoveConst.compute (cognitive 33): _RemoveConst.compute has cognitive complexity 33 (threshold 15). Drivers by points: if/else 9 (22 pts), match/switch 3 (8 pts), loops 1 (3 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_const.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"44e43f6086e5efd56a11e3a240a5842b0ab84f1d8617c61e6a5c868aba21f868"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisOptionsFixGenerator._createScalarDeletionBuilder (cognitive 33): AnalysisOptionsFixGenerator._createScalarDeletionBuilder has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (26 pts), loops 2 (6 pts), boolean chains 1 (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/analysis_options/fix_generator.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"919094bf6c258d23b37bebe1a1229ff27c65f8853d4f1d9af5422480efbbf3a2"}},{"ruleId":"D2","level":"warning","message":{"text":"_ElementMapper.visitIdentifier (cognitive 33): _ElementMapper.visitIdentifier has cognitive complexity 33 (threshold 15). Drivers by points: if/else 15 (26 pts), boolean chains 7 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/element_locator.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"b91c89927d9451cb10dfdde71f831ce15a2f8eaf7a6721c55605bc1fd250829d"}},{"ruleId":"D2","level":"warning","message":{"text":"AstRewriter.parsedExpression (cognitive 33): AstRewriter.parsedExpression has cognitive complexity 33 (threshold 15). Drivers by points: if/else 16 (22 pts), ternaries 2 (5 pts), boolean chains 4, match/switch 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"75f0f6152acd64b995c3b9fdcff43b9c2297d00b757bb4aa1349d243f46e2a56"}},{"ruleId":"D2","level":"warning","message":{"text":"ExitDetector.visitForElement (cognitive 33): ExitDetector.visitForElement has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (28 pts), boolean chains 5 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"9acfc545856653865e10a15941519c14111bcf9751db387b478c231ba73c6e9d"}},{"ruleId":"D2","level":"warning","message":{"text":"DartdocDirectiveInfo.extractTemplate (cognitive 33): DartdocDirectiveInfo.extractTemplate has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (20 pts), boolean chains 8, loops 3 (5 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dartdoc/dartdoc_directive_info.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b48a74ca681afb657c80588fb013df1f1b502aa6ae92dcef349cdebae17c25f"}},{"ruleId":"D2","level":"warning","message":{"text":"BestPracticesVerifier.visitMethodDeclaration (cognitive 33): BestPracticesVerifier.visitMethodDeclaration has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (24 pts), boolean chains 7, ternaries 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe730a15a2ae55d681ae576d2dac570395e9cf835598b1050753da4dddabcf57"}},{"ruleId":"D2","level":"warning","message":{"text":"_InvalidAccessVerifier._checkForOtherInvalidAccess (cognitive 33): _InvalidAccessVerifier._checkForOtherInvalidAccess has cognitive complexity 33 (threshold 15). Drivers by points: if/else 14 (20 pts), boolean chains 11, match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":2065}}}],"partialFingerprints":{"codehealthFindingId/v1":"b49400cc4e03f47d53af0a554041047c47739dc26482012720caddba71011e16"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForEachParts (cognitive 33): ErrorVerifier._checkForEachParts has cognitive complexity 33 (threshold 15). Drivers by points: if/else 18 (26 pts), ternaries 4 (5 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5041}}}],"partialFingerprints":{"codehealthFindingId/v1":"44151e41929b70a7755ec804b1cb45bf487515ac50133f14380ca7a2efd78fd4"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateAbiSpecificIntegerMappingAnnotation (cognitive 33): FfiVerifier._validateAbiSpecificIntegerMappingAnnotation has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (26 pts), loops 4 (7 pts) (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1281}}}],"partialFingerprints":{"codehealthFindingId/v1":"703a15852237537b8f8176b55c4cdd8104a621ed33ee5e380caecb7062f0457c"}},{"ruleId":"D2","level":"warning","message":{"text":"DartEditBuilderImpl.writeOverride (cognitive 33): DartEditBuilderImpl.writeOverride has cognitive complexity 33 (threshold 15). Drivers by points: if/else 21 (30 pts), boolean chains 2, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c8b94b356ce5ad30f2e622f41915b6ddd5a96c06baa7be31518369dc41db191"}},{"ruleId":"D2","level":"warning","message":{"text":"DeferredLoadTask.dump (cognitive 33): DeferredLoadTask.dump has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (19 pts), loops 5 (11 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/deferred_load.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc4a9ba436ae86fb3cc4667e34216fdf219681afb039b575de639bb77d098d7"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitImports (cognitive 33): ProgramCompiler._emitImports has cognitive complexity 33 (threshold 15). Drivers by points: if/else 11 (23 pts), boolean chains 6, loops 2 (3 pts), ternaries 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8916}}}],"partialFingerprints":{"codehealthFindingId/v1":"e86649a5ad140aad4c747260fcb3d46a2bb3115e253c1ee0a51a85c37f1adc4c"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeLabeler.visitFunctionType (cognitive 33): TypeLabeler.visitFunctionType has cognitive complexity 33 (threshold 15). Drivers by points: if/else 12 (25 pts), loops 4 (7 pts), boolean chains 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1e7fbf153b65d32103501d3a253b1a316b1fdb84b3fb166244d9f3be67752e6"}},{"ruleId":"D2","level":"warning","message":{"text":"RegularFieldDeclaration.createFieldEncoding (cognitive 33): RegularFieldDeclaration.createFieldEncoding has cognitive complexity 33 (threshold 15). Drivers by points: if/else 16 (23 pts), boolean chains 10 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"5429f35d87dc63debba4e31b7bbfc7b33f8593f585b7f467e47dd6595db2fce6"}},{"ruleId":"D2","level":"warning","message":{"text":"DynamicInterfaceSpecification.findNodes (cognitive 33): DynamicInterfaceSpecification.findNodes has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (19 pts), loops 3 (9 pts), boolean chains 5 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"e02a0bce71b81f0e625ffca0377ce0b15070fada1cac298d65f18e0155dc3efb"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelTarget._finishClassConstruction (cognitive 33): KernelTarget._finishClassConstruction has cognitive complexity 33 (threshold 15). Drivers by points: if/else 10 (28 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1439}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8c31f56ea180df2578931e9bf7beace2277388a7da0430151e3d198d2ab8ca9"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader._createSourceCompilationUnit (cognitive 33): SourceLoader._createSourceCompilationUnit has cognitive complexity 33 (threshold 15). Drivers by points: if/else 17 (26 pts), boolean chains 5, match/switch 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"20f91788f096aa3582e08f38bb8af861cf02d96a5cff54c1540188369849b486"}},{"ruleId":"D2","level":"warning","message":{"text":"DebuggerLocation._completeFile (cognitive 33): DebuggerLocation._completeFile has cognitive complexity 33 (threshold 15). Drivers by points: if/else 13 (25 pts), loops 3 (8 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger_location.dart"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"de726d55018dd837dea22ae5cf95eb12393de0694c0f850bd969a70846a47fd1"}},{"ruleId":"D2","level":"warning","message":{"text":"AstNodeImplGenerator._generateFields (cognitive 32): AstNodeImplGenerator._generateFields has cognitive complexity 32 (threshold 15). Drivers by points: ternaries 6 (18 pts), if/else 4 (11 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"661e21b6cb3d9522b2fb9118b08c676ee4c37056684666f781491b2a3b759e2e"}},{"ruleId":"D2","level":"warning","message":{"text":"Types.emitIsTest (cognitive 32): Types.emitIsTest has cognitive complexity 32 (threshold 15). Drivers by points: if/else 17 (27 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d37fcc6b64c7cb3a5a25fe91b9fb2800c6a114cb65f46f2369baf0759dd8bcd"}},{"ruleId":"D2","level":"warning","message":{"text":"Analysis.parseTraverseFilter (cognitive 32): Analysis.parseTraverseFilter has cognitive complexity 32 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 3 (8 pts), ternaries 2 (8 pts), boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"3faa354bd51e7a29b8f463757e783d9b5cb3bdcb301c2319dc35d576cf3f5ac9"}},{"ruleId":"D2","level":"warning","message":{"text":"NaiveTypeChecker.checkOverride (cognitive 32): NaiveTypeChecker.checkOverride has cognitive complexity 32 (threshold 15). Drivers by points: if/else 16 (26 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/naive_type_checker.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c30d0a3d29abb95974ff05d6d869c4be35b1de83b57a5179a45cb365404b1e3"}},{"ruleId":"D2","level":"warning","message":{"text":"MemberType.parse (cognitive 32): MemberType.parse has cognitive complexity 32 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 4 (10 pts), boolean chains 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f9037972b8fdf4a4cef7c9ad009ae3ae60cdf5ec63454c46584583135cf5d1"}},{"ruleId":"D2","level":"warning","message":{"text":"_TraceReader.readTrace (cognitive 32): _TraceReader.readTrace has cognitive complexity 32 (threshold 15). Drivers by points: if/else 15 (24 pts), loops 4 (5 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/precompiler_trace.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f6381d6d561e3871dcde34410fc9e5302352918946cb89e6fb0be723a24f5cc"}},{"ruleId":"D2","level":"warning","message":{"text":"DebugInfoWriter._flushPending (cognitive 32): DebugInfoWriter._flushPending has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 12, ternaries 2 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/debug_info.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"6409fa91941573af4eea0b5dd83929c69205d69ba8db8a3ac8db7c4184b0ca7e"}},{"ruleId":"D2","level":"warning","message":{"text":"_LibraryManager.findMatches (cognitive 32): _LibraryManager.findMatches has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (21 pts), loops 6 (7 pts), boolean chains 3, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf091f77be0dfe424aa812075f02167866de19ebb89ad270e5adc16ea2389925"}},{"ruleId":"D2","level":"warning","message":{"text":"_SyncStarIterator.moveNext (cognitive 32): _SyncStarIterator.moveNext has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (22 pts), error handling 3 (9 pts), loops 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/sync_star_patch.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c0ac354dca00ae9fecaf98b8c0575da3d1402af29ab7cee245630fa478c04a1"}},{"ruleId":"D2","level":"warning","message":{"text":"_TypeUniverse.isFunctionSubtype (cognitive 32): _TypeUniverse.isFunctionSubtype has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (25 pts), loops 5 (6 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":1212}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cde1ac0f6caff62a39d5d332667ea2bd23d706ed17d8e9bbf04e076d1a3cb9f"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64CodeGenerator.visitTypeCast (cognitive 32): Arm64CodeGenerator.visitTypeCast has cognitive complexity 32 (threshold 15). Drivers by points: if/else 14 (24 pts), boolean chains 4, ternaries 1 (3 pts), match/switch 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1629}}}],"partialFingerprints":{"codehealthFindingId/v1":"edd53b00e9065649685545210ce5e164b4b49680bf63e7522e3fdef8054cd789"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Encoder._fillBuffer (cognitive 32): _Utf8Encoder._fillBuffer has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (30 pts), boolean chains 1, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/utf.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"796891a5406231715048a24bb514c9d2345da2f378443b52094a3d50c1aaa9a1"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseLiteralListSuffix (cognitive 32): Parser.parseLiteralListSuffix has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (25 pts), loops 2 (3 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8460}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8a17d9ea12ddcebc249f8d4ff71a23f97a41999710634aa7861bab3567be852"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseVariablePattern (cognitive 32): Parser.parseVariablePattern has cognitive complexity 32 (threshold 15). Drivers by points: if/else 16 (24 pts), boolean chains 4, ternaries 1 (3 pts), match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11885}}}],"partialFingerprints":{"codehealthFindingId/v1":"e477aec5df2aeed29c8bc9ea3e6f7e68e6bc33e51ac07d96eee0be708927abc3"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._addMembersOfEnclosingNode (cognitive 32): DeclarationHelper._addMembersOfEnclosingNode has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (31 pts), match/switch 1 (nesting depth added 18). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1568}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9e8fa18bc3b8223932a77064069ae75467d2b692bf626913d6445c519d43656"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._addTopLevelDeclarations (cognitive 32): DeclarationHelper._addTopLevelDeclarations has cognitive complexity 32 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 10 (15 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1710}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3505d9760088ec07c9d41ac17aa97ec6bb5d20068ea74efe43bfd26d05885e1"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._suggestProperty (cognitive 32): DeclarationHelper._suggestProperty has cognitive complexity 32 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 9 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2551}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1d2b980ecc5b13a5058fc823709ce0e33c95b0d8a154ccf3194f1dce2126c99"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitPrimaryConstructorDeclaration (cognitive 32): InScopeCompletionPass.visitPrimaryConstructorDeclaration has cognitive complexity 32 (threshold 15). Drivers by points: if/else 14 (20 pts), boolean chains 12 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2577}}}],"partialFingerprints":{"codehealthFindingId/v1":"a158bcc55140555c0592e2a0b01d5afff4ec39c30b088249b70620314e6af133"}},{"ruleId":"D2","level":"warning","message":{"text":"AddConst.compute (cognitive 32): AddConst.compute has cognitive complexity 32 (threshold 15). Drivers by points: if/else 18 (29 pts), boolean chains 3 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_const.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"23f83741a474ccf7b691e46aba9c216f1cc412df565df00ce9c254888a760cc1"}},{"ruleId":"D2","level":"warning","message":{"text":"AddMissingEnumCaseClauses.compute (cognitive 32): AddMissingEnumCaseClauses.compute has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (25 pts), loops 3 (5 pts), boolean chains 1, ternaries 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"b46f57111ab6826f581e9d8038c0f5c3539905f67b7432042310fffc418a45f4"}},{"ruleId":"D2","level":"warning","message":{"text":"_CreateMixin.compute (cognitive 32): _CreateMixin.compute has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 5, error handling 1 (5 pts), loops 1 (2 pts), ternaries 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f16e314f5d4ac1327d744dae9f6c6128f58f0978bf6cb8bf0f434a0f8ff0b8"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateContext._getInvocation (cognitive 32): TemplateContext._getInvocation has cognitive complexity 32 (threshold 15). Drivers by points: if/else 19 (27 pts), boolean chains 5 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/code_template.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1667b96bc56d22471857cc1242cafd1f4d8a033959994f9b5fd3dd8574b749"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextsPage.generateContent (cognitive 32): ContextsPage.generateContent has cognitive complexity 32 (threshold 15). Drivers by points: if/else 15 (24 pts), loops 5 (7 pts), ternaries 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/contexts_page.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"28f9a57415b6fd5f7f2f1412322ffd974ca4e89b06eac4a8e0589e2650145f65"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstLiteralVerifier._validateMapLiteralEntry (cognitive 32): _ConstLiteralVerifier._validateMapLiteralEntry has cognitive complexity 32 (threshold 15). Drivers by points: if/else 15 (26 pts), boolean chains 6 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a8c1fe6f78be50f9706f5e128b41dff9bf5b8e3da8c053915ec0978cc6fb66b"}},{"ruleId":"D2","level":"warning","message":{"text":"UnknownInferredType.isUnknown (cognitive 32): UnknownInferredType.isUnknown has cognitive complexity 32 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 5 (10 pts), boolean chains 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_schema.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bfcac23dc2ab9380e01ecd28cdc77da288b58edd9311d90bca7b026da2e08b7"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionReferenceResolver.resolveInstantiation (cognitive 32): FunctionReferenceResolver.resolveInstantiation has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (13 pts), ternaries 3 (8 pts), match/switch 3 (6 pts), boolean chains 5 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"6000b92f873fa9276f8d4f5d5003a6a5f589d11340d4e6749cb8262dc13f8465"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementUsageDetector._visitParametersAndArguments (cognitive 32): ElementUsageDetector._visitParametersAndArguments has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (27 pts), loops 2 (5 pts) (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (ElementUsageDetectorV2._visitParametersAndArguments) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a6bc652e825b3a61d182cd49c5a397ca227cc881c9f62f6ddd316337061dc1c"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementUsageDetectorV2._visitParametersAndArguments (cognitive 32): ElementUsageDetectorV2._visitParametersAndArguments has cognitive complexity 32 (threshold 15). Drivers by points: if/else 8 (27 pts), loops 2 (5 pts) (nesting depth added 22). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (ElementUsageDetector._visitParametersAndArguments) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":1020}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4c2715900e373a0c2e2536e8d96fb4c965d47d31e70401095ff62d976555b5"}},{"ruleId":"D2","level":"warning","message":{"text":"IgnoreValidator.reportErrors (cognitive 32): IgnoreValidator.reportErrors has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (24 pts), loops 5 (6 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/ignore_validator.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9fb3f65fca3e05720ab0bfc8c565bbec03d6fe4aab57333c0e38aa23cbc5955"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._validateConstructorBodyAllowed (cognitive 32): ErrorVerifier._validateConstructorBodyAllowed has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (22 pts), ternaries 2 (8 pts), boolean chains 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8855}}}],"partialFingerprints":{"codehealthFindingId/v1":"631d32613dbba73381b1e4b87d30156aa945105c0dbbe60580492a1bc8cf7168"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateNativeCallable (cognitive 32): FfiVerifier._validateNativeCallable has cognitive complexity 32 (threshold 15). Drivers by points: if/else 17 (26 pts), boolean chains 5, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":2186}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c0ddf5f04fe68f3144d2ffc8ab4c4a4f25e2506b437fe2d2740b3f9fa04e606"}},{"ruleId":"D2","level":"warning","message":{"text":"SimplyBoundedNode._visitType (cognitive 32): SimplyBoundedNode._visitType has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (25 pts), loops 3 (7 pts) (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/simply_bounded.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"81cca47d86edaeeffbfaea803c195ae9cac0446e90146cf531c7ca97a6d2df3f"}},{"ruleId":"D2","level":"warning","message":{"text":"_PropertyInducingElementTypeInference.perform (cognitive 32): _PropertyInducingElementTypeInference.perform has cognitive complexity 32 (threshold 15). Drivers by points: if/else 13 (26 pts), boolean chains 3, loops 1 (2 pts), match/switch 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/top_level_inference.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb821ed59903185df6581dbc9fa198d4d4ee6f120b153763e10d93bc15835a97"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementSuggestionBuilder.addSuggestion (cognitive 32): ElementSuggestionBuilder.addSuggestion has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (20 pts), ternaries 2 (10 pts), boolean chains 2 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/element_suggestion_builder.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cc0d0ed09a80d5f606e6b25f03ef90196c121f4c7e2c583c00e4517713497f9"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentEmitter.emitNativeSupport (cognitive 32): FragmentEmitter.emitNativeSupport has cognitive complexity 32 (threshold 15). Drivers by points: loops 5 (16 pts), if/else 6 (13 pts), boolean chains 3 (nesting depth added 18). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":2274}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe27896dfce3c73b3ae0e713c571dfd7281b2811c7e878485c5ec58b35b32cdf"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._buildParameterStub (cognitive 32): KernelSsaGraphBuilder._buildParameterStub has cognitive complexity 32 (threshold 15). Drivers by points: if/else 20 (26 pts), loops 2 (6 pts) (nesting depth added 10). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e91d125c82ec31a86c30a73b241a96ad259bdce53725626f2bf137261a72698"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitClassProperties (cognitive 32): LibraryCompiler._emitClassProperties has cognitive complexity 32 (threshold 15). Drivers by points: if/else 16 (24 pts), boolean chains 3, loops 3, ternaries 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2799}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cea1b6a0126a50ab8f4d86d1281bf5f3aebbf31c266fe382f58b21cdc7c21ab"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler.compileExpression (cognitive 32): IncrementalCompiler.compileExpression has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (17 pts), loops 3 (7 pts), boolean chains 4, ternaries 1 (4 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2002}}}],"partialFingerprints":{"codehealthFindingId/v1":"96339b8abbb21dfc1d3992331f62d560463ebfb5ae10fa411a20617c256dea1b"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl._buildConstructorInvocation (cognitive 32): BodyBuilderImpl._buildConstructorInvocation has cognitive complexity 32 (threshold 15). Drivers by points: if/else 15 (27 pts), boolean chains 5 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10756}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e7966fcdfc12995d06c6122d6d3a9c4f0a4af4be959a10e2a0167e2b1f2afc"}},{"ruleId":"D2","level":"warning","message":{"text":"DartScopeBuilder2._looksLikePatternMatching (cognitive 32): DartScopeBuilder2._looksLikePatternMatching has cognitive complexity 32 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 13, loops 2 (5 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":946}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a1edcb49167e9288ce6396343ba12216a6e1f57fdf7e32147cb033a3a2e126"}},{"ruleId":"D2","level":"warning","message":{"text":"_InitializerBuilder.processInitializers (cognitive 32): _InitializerBuilder.processInitializers has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (26 pts), ternaries 1 (3 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver_helpers.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cac7f50a3f1407c998f78cc2a929e11b76d481320780a2af0f0ae8c6bc97d5d"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader.checkMixinSuperAccesses (cognitive 32): SourceLoader.checkMixinSuperAccesses has cognitive complexity 32 (threshold 15). Drivers by points: if/else 4 (19 pts), loops 4 (13 pts) (nesting depth added 24). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2923}}}],"partialFingerprints":{"codehealthFindingId/v1":"b52b6d619cf6a37a6d7f877309b020875e0d413dd92a1478c99690aac916a659"}},{"ruleId":"D2","level":"warning","message":{"text":"OperationsCfe.lookupMemberTypeInternal (cognitive 32): OperationsCfe.lookupMemberTypeInternal has cognitive complexity 32 (threshold 15). Drivers by points: if/else 11 (26 pts), ternaries 1 (4 pts), boolean chains 1, match/switch 1 (nesting depth added 18). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":1182}}}],"partialFingerprints":{"codehealthFindingId/v1":"67da01ef26b256c15a724b93306ce3a6a79860c0c1a1d73167108e4b968a8d30"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlDartGenerator._ConvertArgumentTypes (cognitive 32): HtmlDartGenerator._ConvertArgumentTypes has cognitive complexity 32 (threshold 15). Drivers by points: if/else 9 (21 pts), ternaries 2 (6 pts), boolean chains 4, loops 1 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9d08e7ae15ec133718f54cba938463610dd24355b5879e418ec291a89f09b20"}},{"ruleId":"D2","level":"warning","message":{"text":"JsInteropChecks._checkDisallowedTearoff (cognitive 31): JsInteropChecks._checkDisallowedTearoff has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (26 pts), boolean chains 5 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":685}}}],"partialFingerprints":{"codehealthFindingId/v1":"cefae2e4dbaf04f2559be79b8ef4d83ef44931a360c604c3465876d9cf1897e8"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionResult.group (cognitive 31): CompletionResult.group has cognitive complexity 31 (threshold 15). Drivers by points: if/else 18 (25 pts), boolean chains 6 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":1696}}}],"partialFingerprints":{"codehealthFindingId/v1":"046a785b6e81a71732389d9f7375404344152993e222750c24e73e973bfbdf22"}},{"ruleId":"D2","level":"warning","message":{"text":"AstNodeImplGenerator._generateConstructor (cognitive 31): AstNodeImplGenerator._generateConstructor has cognitive complexity 31 (threshold 15). Drivers by points: if/else 14 (24 pts), match/switch 2 (4 pts), loops 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"562bb7374f52f5ac988dc755c0f7689fd9f3b2e6859d22cba483e471aa90c75e"}},{"ruleId":"D2","level":"warning","message":{"text":"_ImplGenerator.generate (cognitive 31): _ImplGenerator.generate has cognitive complexity 31 (threshold 15). Drivers by points: if/else 21 (29 pts), loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":960}}}],"partialFingerprints":{"codehealthFindingId/v1":"6096ce69bf5b4918b5d7702c6ec98f2fb54619888a3cc78b8354deb3002cbe4a"}},{"ruleId":"D2","level":"warning","message":{"text":"Application._printOutput (cognitive 31): Application._printOutput has cognitive complexity 31 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 3 (9 pts), boolean chains 4, loops 2 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/parser_direct_ast/console_helper.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d86bf0d1d9d38e0843b59d0cf4224d97fd4a7127507199ee6370245323269f"}},{"ruleId":"D2","level":"warning","message":{"text":"Analysis._calculateRetainers (cognitive 31): Analysis._calculateRetainers has cognitive complexity 31 (threshold 15). Drivers by points: if/else 6 (23 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"a926655b4d651f0e04587fdcb97de99a656f2b7f337648d51eba6bb798045af9"}},{"ruleId":"D2","level":"warning","message":{"text":"ClosedWorldClassHierarchy._buildDeclaredMembers (cognitive 31): ClosedWorldClassHierarchy._buildDeclaredMembers has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (24 pts), loops 3 (4 pts), boolean chains 2, ternaries 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1636}}}],"partialFingerprints":{"codehealthFindingId/v1":"06af50043da9384ca0741d0e2e77f533ed2b26910eeec27ac71503b9592204da"}},{"ruleId":"D2","level":"warning","message":{"text":"_VerifyingVisitor.visitFunctionNode (cognitive 31): _VerifyingVisitor.visitFunctionNode has cognitive complexity 31 (threshold 15). Drivers by points: if/else 6 (18 pts), boolean chains 7, loops 2 (6 pts) (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"c641e2467ff6f66d7f337fad8ea6b986ddfb13e8dcc84abc51ae922ec15d9665"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Decoder.convertChunked (cognitive 31): _Utf8Decoder.convertChunked has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (17 pts), ternaries 4 (10 pts), boolean chains 2, loops 1, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1869}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba440df6fd3400ec8ac5fda86d5db5e76cc61641abeec18dd18418851f4f73c3"}},{"ruleId":"D2","level":"warning","message":{"text":"RegisterAllocationChecker.verifyConstraints (cognitive 31): RegisterAllocationChecker.verifyConstraints has cognitive complexity 31 (threshold 15). Drivers by points: loops 5 (15 pts), if/else 4 (11 pts), match/switch 1 (5 pts) (nesting depth added 21). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/regalloc_checker.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b5dc7c27f44a7109862dea8a113e39a0ed4b7ed204e73405a9d3604c3fbb022"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._makeHost (cognitive 31): _Uri._makeHost has cognitive complexity 31 (threshold 15). Drivers by points: if/else 10 (20 pts), ternaries 2 (9 pts), loops 1 (2 pts) (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2397}}}],"partialFingerprints":{"codehealthFindingId/v1":"25ce2c048f885e327ad3e77494f607d26635111cd91651566aa4c7f9a0ca128c"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseEnum (cognitive 31): Parser.parseEnum has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (22 pts), loops 2 (5 pts), boolean chains 4 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":2593}}}],"partialFingerprints":{"codehealthFindingId/v1":"8421feb4051cda7eeb526af3f53bbfacbb789e284413b50acd4b7bfea5db3edf"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseInitializer (cognitive 31): Parser.parseInitializer has cognitive complexity 31 (threshold 15). Drivers by points: if/else 15 (28 pts), boolean chains 3 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4804}}}],"partialFingerprints":{"codehealthFindingId/v1":"c845eb24d7a7a7b9fbe09bad478f45ae657ad996756e57d16663c303b5d4bba7"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._addMembersOfEnclosingInstance (cognitive 31): DeclarationHelper._addMembersOfEnclosingInstance has cognitive complexity 31 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 11, loops 4, ternaries 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a2d75d2b6f6e7e8171a933f4861fbf6c7d709771476aeac14f0c2926759b30"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitIfStatement (cognitive 31): InScopeCompletionPass.visitIfStatement has cognitive complexity 31 (threshold 15). Drivers by points: if/else 14 (27 pts), boolean chains 4 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1816}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e1c804fda804f45fb60e7ff84eca9cf5875ee99d93411081d0f7496cf9139a"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkFixProcessor._computeFixes (cognitive 31): BulkFixProcessor._computeFixes has cognitive complexity 31 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 3 (5 pts), boolean chains 4 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ba7cb6a37f02e992d84983c0f03699b101dc0289aeafae855cf84ca1320ec0"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToInitializingFormal.compute (cognitive 31): ConvertToInitializingFormal.compute has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (24 pts), match/switch 4 (7 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"d057012da39976e2bd42ef1c440e54ab58460102d38e350a6151b95c288ee040"}},{"ruleId":"D2","level":"warning","message":{"text":"MakeFieldPublic.compute (cognitive 31): MakeFieldPublic.compute has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 2 (6 pts), boolean chains 5 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/make_field_public.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe07ab1d9b400a2844dbee432ba72b5634b68910b65d2686fad2af981a2c9db1"}},{"ruleId":"D2","level":"warning","message":{"text":"_InitializeParametersVisitor.visitSimpleIdentifier (cognitive 31): _InitializeParametersVisitor.visitSimpleIdentifier has cognitive complexity 31 (threshold 15). Drivers by points: if/else 12 (25 pts), ternaries 1 (4 pts), boolean chains 2 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":1429}}}],"partialFingerprints":{"codehealthFindingId/v1":"867dfa4b493ce326015610cf424de6ebd9744a374d6eb990754c919c97519754"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver._resolveTargetSuperReference (cognitive 31): PropertyElementResolver._resolveTargetSuperReference has cognitive complexity 31 (threshold 15). Drivers by points: if/else 14 (31 pts) (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":2428}}}],"partialFingerprints":{"codehealthFindingId/v1":"13d7ba90f89a527318ba977c8e6ab55c293982579e9b6ba559904518af121510"}},{"ruleId":"D2","level":"warning","message":{"text":"AssignmentVerifier._verify (cognitive 31): AssignmentVerifier._verify has cognitive complexity 31 (threshold 15). Drivers by points: if/else 18 (26 pts), boolean chains 5 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/assignment_verifier.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"621b84c67141c1da8db2ef6713a9dca480c75e15f3b674a31ebc4af30132fa9b"}},{"ruleId":"D2","level":"warning","message":{"text":"BestPracticesVerifier._getSubExpressionsMarkedDoNotStore (cognitive 31): BestPracticesVerifier._getSubExpressionsMarkedDoNotStore has cognitive complexity 31 (threshold 15). Drivers by points: if/else 16 (21 pts), boolean chains 8, match/switch 1 (2 pts) (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":1651}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e8234abe5406c4b2ccb8fd73d74c371a4c877ff1ccb503d563b7bd62465e65f"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportsVerifier.generateUnusedShownNameHints (cognitive 31): ImportsVerifier.generateUnusedShownNameHints has cognitive complexity 31 (threshold 15). Drivers by points: if/else 7 (22 pts), loops 3 (7 pts), boolean chains 2 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/imports_verifier.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e728059cf3c6857ccd9b44eac4d1cae4f01cfa777fc67be8b7b529722d28c55"}},{"ruleId":"D2","level":"warning","message":{"text":"DocCommentBuilder._parseOneCommentReference (cognitive 31): DocCommentBuilder._parseOneCommentReference has cognitive complexity 31 (threshold 15). Drivers by points: if/else 14 (23 pts), boolean chains 8 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"356d256a7dee4b57bf5afd256d9b8347c95755c76af0c10b96782a1c6518aa10"}},{"ruleId":"D2","level":"warning","message":{"text":"DumpInfoTask.buildDumpInfoDataNew (cognitive 31): DumpInfoTask.buildDumpInfoDataNew has cognitive complexity 31 (threshold 15). Drivers by points: if/else 7 (20 pts), loops 6 (9 pts), ternaries 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1913}}}],"partialFingerprints":{"codehealthFindingId/v1":"debd627365db7fd97013712f5e6bf1a4a6a242e168c654ae07b5312e65b02bfd"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeMask.getNotNormalizedReason (cognitive 31): TypeMask.getNotNormalizedReason has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (27 pts), loops 2 (4 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"f60f163457a96a588d2016e3cf70a1091925f8309de29d86e7ac16e21d977226"}},{"ruleId":"D2","level":"warning","message":{"text":"RuntimeTypesImpl.computeRequiredChecks (cognitive 31): RuntimeTypesImpl.computeRequiredChecks has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 9 (12 pts), boolean chains 2, match/switch 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"f76a1a440ca895bb9355c30a73ea267e2dc489435eaf3495cdec42ed8b67adbf"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelToElementMap._ensureSupertypes (cognitive 31): KernelToElementMap._ensureSupertypes has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (21 pts), loops 3 (10 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"570a1f8584672196a8b96f5ba9791a1dbd6c59a26ca64a936be7ac1b67102f7b"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.visitInvokeStatic (cognitive 31): SsaCodeGenerator.visitInvokeStatic has cognitive complexity 31 (threshold 15). Drivers by points: if/else 15 (30 pts), boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2323}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7c32a4f633bdcf8a23f525ce7623b56e597cb104ac794be4c2c91c1807403bb"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.visitInvokeExternal (cognitive 31): SsaCodeGenerator.visitInvokeExternal has cognitive complexity 31 (threshold 15). Drivers by points: if/else 14 (21 pts), ternaries 4 (7 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2901}}}],"partialFingerprints":{"codehealthFindingId/v1":"96ed3785cdf26f607397651f83f7ab5cabf7d075f2b69cbc9b47ebd51e72bd7f"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassSet.addSubtype (cognitive 31): ClassSet.addSubtype has cognitive complexity 31 (threshold 15). Drivers by points: if/else 14 (29 pts), loops 1 (2 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_set.dart"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b1177714213be79c784b10ccfb9f209e974821102c5408f5fbc4fb8f49aa724"}},{"ruleId":"D2","level":"warning","message":{"text":"DartDebugAdapter._buildOutputEventsWithSourceReferences (cognitive 31): DartDebugAdapter._buildOutputEventsWithSourceReferences has cognitive complexity 31 (threshold 15). Drivers by points: ternaries 8 (16 pts), if/else 5 (6 pts), boolean chains 5, error handling 2 (3 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":2659}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1f9c19379d0700132f9a37ea5833adf8cc589821666fbb36beec6f8ef5467ee"}},{"ruleId":"D2","level":"warning","message":{"text":"TestAdapter.sendTestTextOutput (cognitive 31): TestAdapter.sendTestTextOutput has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (20 pts), ternaries 2 (8 pts), boolean chains 2, match/switch 1 (nesting depth added 17). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/mixins.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"8061d9bd2467a12951a6a402cf37432a69f51f6e768c541ef4bd0fd5cb67b49a"}},{"ruleId":"D2","level":"warning","message":{"text":"CompileNativeCommand.run (cognitive 31): CompileNativeCommand.run has cognitive complexity 31 (threshold 15). Drivers by points: if/else 15 (28 pts), boolean chains 2, error handling 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dfead717fc5f81b5eab671699b7ca8cc7fb1299e7167976a9604e559393816b"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.parsePrimary (cognitive 31): MiniJsParser.parsePrimary has cognitive complexity 31 (threshold 15). Drivers by points: if/else 21 (29 pts), loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"f144d6f552b4900dd401107daaebd4eccd39f75d1808983e8c63d3f84a9d0abd"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.parseCall (cognitive 31): MiniJsParser.parseCall has cognitive complexity 31 (threshold 15). Drivers by points: if/else 8 (21 pts), loops 2 (5 pts), ternaries 1 (3 pts), boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dbad47a1f6e43410e3adcc24d43e697f0f109cf10bc64d28342868e62dbd7d5"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler._computeExpressionCompilationExtensionData (cognitive 31): IncrementalCompiler._computeExpressionCompilationExtensionData has cognitive complexity 31 (threshold 15). Drivers by points: if/else 12 (26 pts), boolean chains 5 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2393}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d732c6c3aaba1b8b6ac4c45700cee9357784b08152185bbd9349a3a94f070f"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator._handleFromEnvironment (cognitive 31): ConstantEvaluator._handleFromEnvironment has cognitive complexity 31 (threshold 15). Drivers by points: if/else 20 (29 pts), ternaries 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5109}}}],"partialFingerprints":{"codehealthFindingId/v1":"4687e143a020bafc259b540ae3b6bb0b3655edf00a12cab8b074021de2100986"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceCompilationUnitImpl._includePartIfValid (cognitive 31): SourceCompilationUnitImpl._includePartIfValid has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (29 pts), boolean chains 1, match/switch 1 (nesting depth added 18). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":902}}}],"partialFingerprints":{"codehealthFindingId/v1":"02fe52f09db80d039f59636c8280d936044b902074a745e6f71ee405016566f7"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstMapLiteralBuilder.translate (cognitive 31): _ConstMapLiteralBuilder.translate has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (22 pts), ternaries 2 (4 pts), loops 2, match/switch 1 (2 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5cc362717e305c340efee580793594e7b9eba83173d502f56c27da1362dfe5d"}},{"ruleId":"D2","level":"warning","message":{"text":"Cache.createExpression (cognitive 31): Cache.createExpression has cognitive complexity 31 (threshold 15). Drivers by points: if/else 13 (26 pts), loops 1 (4 pts), boolean chains 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_cache.dart"},"region":{"startLine":1249}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ce6a512c141f88e63b66152098db719b6dc5891c090cd802b63335c2107649f"}},{"ruleId":"D2","level":"warning","message":{"text":"BestEffortParserAstVisitor.accept (cognitive 31): BestEffortParserAstVisitor.accept has cognitive complexity 31 (threshold 15). Drivers by points: if/else 24, boolean chains 7. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"a64519e933718d1bc9b4dcd30bdb38fbd124125b396782d0aff9a1bb2c9f3294"}},{"ruleId":"D2","level":"warning","message":{"text":"FrontendServerClient.compile (cognitive 31): FrontendServerClient.compile has cognitive complexity 31 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 2 (5 pts), match/switch 2 (4 pts), boolean chains 2 (nesting depth added 17). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server_client/lib/src/frontend_server_client.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9151c1ea62dd538369d794bf9dcbb32d7d29a7ab504f2393fe774707904a97d"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitInstanceCreationExpression (cognitive 31): _Visitor.visitInstanceCreationExpression has cognitive complexity 31 (threshold 15). Drivers by points: if/else 15 (27 pts), boolean chains 4 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_collection_literals.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6bb586a6fe2a3dd25ae8a3717a315a32dc05aeefbdfe8cc4f6311dea6108675"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitDeclaredVariablePattern (cognitive 31): _Visitor.visitDeclaredVariablePattern has cognitive complexity 31 (threshold 15). Drivers by points: if/else 15 (26 pts), loops 2 (5 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_final_locals.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"40777e0c6a18d3ca6560c1c596abf1478f6161c651956cb02895cc7f84b8cbf1"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._checkConstructor (cognitive 31): _Visitor._checkConstructor has cognitive complexity 31 (threshold 15). Drivers by points: if/else 9 (28 pts), boolean chains 2, loops 1 (nesting depth added 19). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/tighten_type_of_initializing_formals.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"288d393877948fbd63018c501470a85fa98b4a65f37357362b2df370fccfd9b7"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeMemberContributor._computeSuggestions (cognitive 31): TypeMemberContributor._computeSuggestions has cognitive complexity 31 (threshold 15). Drivers by points: if/else 14 (25 pts), boolean chains 6 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6e980ba9b3e35fcdc993e826e420c8602b3c5e8778469dce44adfd14fa1e46"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlDartGenerator._AddFutureifiedOperation (cognitive 31): HtmlDartGenerator._AddFutureifiedOperation has cognitive complexity 31 (threshold 15). Drivers by points: if/else 11 (17 pts), ternaries 6 (7 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a7bedf80f3bbf2936881f430f956ad6d8f1bd308f7151f4adca1e253a96de3a"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkFixDetails.collectOverrides (cognitive 30): BulkFixDetails.collectOverrides has cognitive complexity 30 (threshold 15). Drivers by points: if/else 5 (22 pts), loops 3 (7 pts), boolean chains 1 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/bulk_fix/parse_utils.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"31445323628435ba74ecc9666a1c1ca7ac54c093c99b8f7f8fd30bbb5974bdf2"}},{"ruleId":"D2","level":"warning","message":{"text":"Analysis.examine (cognitive 30): Analysis.examine has cognitive complexity 30 (threshold 15). Drivers by points: loops 4 (14 pts), if/else 8 (13 pts), boolean chains 3 (nesting depth added 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4150f851d2275cb8e1cb90534a4f0f781848d80cc6c09f5483a41b16850cca6"}},{"ruleId":"D2","level":"warning","message":{"text":"Primitives.applyFunction (cognitive 30): Primitives.applyFunction has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (28 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fef3a06b91070f621a00683a294eed241570ec11b56fdb751d25a36e7b3c5de"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringToBuffer (cognitive 30): _ChunkedJsonParser.parseStringToBuffer has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (26 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1125}}}],"partialFingerprints":{"codehealthFindingId/v1":"9965a41f70e0fdee237523abbbd1dae23b4ba11778a5269170a194166485bd1f"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64Assembler.loadImmediate (cognitive 30): Arm64Assembler.loadImmediate has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (23 pts), loops 4 (6 pts), ternaries 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"71b0ed2ec87d758300ebde164ad174423719278a1051f939be888038f609d18f"}},{"ruleId":"D2","level":"warning","message":{"text":"_Base64Decoder._checkPadding (cognitive 30): _Base64Decoder._checkPadding has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (29 pts), loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/base64.dart"},"region":{"startLine":848}}}],"partialFingerprints":{"codehealthFindingId/v1":"84930a0c2d04d3469375379f00c051f5bdd13fe1fd1f8e537fa39b35290d1b49"}},{"ruleId":"D2","level":"warning","message":{"text":"CorrectionUtils._invertCondition0 (cognitive 30): CorrectionUtils._invertCondition0 has cognitive complexity 30 (threshold 15). Drivers by points: if/else 19 (30 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/correction_utils.dart"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"92ae96c6b8e2aee550f5fcea0ff07ce348378deb4da4c91933227f0579554d81"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionIdentifierContext.ensureIdentifier (cognitive 30): ExpressionIdentifierContext.ensureIdentifier has cognitive complexity 30 (threshold 15). Drivers by points: boolean chains 18, if/else 8 (12 pts) (nesting depth added 4). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ad6bc4d901c8d58b5889db8e726f145d3b21784207f47f42f9cdc6dcf6066f"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseRecordType (cognitive 30): Parser.parseRecordType has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (22 pts), boolean chains 7, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"af04f12c1ac77f6287b66ea9daa684ab406a1e6abae620285af2192233071cec"}},{"ruleId":"D2","level":"warning","message":{"text":"ComplexTypeInfo._checkIfRecordTypeParenthesisAreRecovered (cognitive 30): ComplexTypeInfo._checkIfRecordTypeParenthesisAreRecovered has cognitive complexity 30 (threshold 15). Drivers by points: if/else 13 (21 pts), boolean chains 8, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f90cf98e854d6fd66e46593ff263b1ea21ad375361317d0190203a7305226b"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAnalyzerOperationsMixin.chooseTypeFromConstraint (cognitive 30): TypeAnalyzerOperationsMixin.chooseTypeFromConstraint has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (18 pts), ternaries 4 (12 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"66dc313f138f435e506657dcc5e39d3c9a48ba01c82125f0f21f61c5e24c8b2e"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextManagerImpl._createAnalysisContexts (cognitive 30): ContextManagerImpl._createAnalysisContexts has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 6 (10 pts), boolean chains 4 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b604e0f2a35bc186be678cb54df4edb575dac1a7035532377d49036348d4f09"}},{"ruleId":"D2","level":"warning","message":{"text":"EditBulkFixes.handle (cognitive 30): EditBulkFixes.handle has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 3 (7 pts), ternaries 1 (2 pts), boolean chains 1, error handling 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_bulk_fixes.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e4d5a46072610478901acf56e0e31db73eb54b81d6edc9ac7c372d22d3abed9"}},{"ruleId":"D2","level":"warning","message":{"text":"_DebounceRequests._filterRequests (cognitive 30): _DebounceRequests._filterRequests has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (29 pts), loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/debounce_requests.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2788096acb46873b44edc0b51a1a4416abdf6ca1f68d4fbb942d0304228781"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkFixProcessor._fixErrorsInLibraryUnit (cognitive 30): BulkFixProcessor._fixErrorsInLibraryUnit has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 10, loops 3 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"38ac096c0654cd08f9664df7fa0b285c40b546e228e378979619f3f70fdeeb36"}},{"ruleId":"D2","level":"warning","message":{"text":"AddSuperConstructorInvocation._producersFromPrimary (cognitive 30): AddSuperConstructorInvocation._producersFromPrimary has cognitive complexity 30 (threshold 15). Drivers by points: if/else 16 (28 pts), boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_super_constructor_invocation.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"effff802b24b3c871e735270d47d42adb78113a810fe9c69e376530be26dd3a4"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertMapFromIterableToForLiteral._extractClosure (cognitive 30): ConvertMapFromIterableToForLiteral._extractClosure has cognitive complexity 30 (threshold 15). Drivers by points: if/else 7 (28 pts), boolean chains 2 (nesting depth added 21). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f847c22c399dad522c2dc2321af858ebba80f90a463d8eef6085ec0939f4823"}},{"ruleId":"D2","level":"warning","message":{"text":"_MatcherBuilder._buildFromSimpleIdentifier (cognitive 30): _MatcherBuilder._buildFromSimpleIdentifier has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (21 pts), boolean chains 9 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c38185ab2dedd7703b87d3acb3e298f89b080fd89ec1b63f823dc4ebb6d8938"}},{"ruleId":"D2","level":"warning","message":{"text":"_ReferenceProcessor._inlineMethodInvocation (cognitive 30): _ReferenceProcessor._inlineMethodInvocation has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (21 pts), match/switch 1 (5 pts), boolean chains 2, ternaries 1 (2 pts) (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed596b48da8cb07fabdd4b4183a141453722568a5778fa23bf84907d25957c91"}},{"ruleId":"D2","level":"warning","message":{"text":"MoveFileRefactoringImpl._collectSourceReferences (cognitive 30): MoveFileRefactoringImpl._collectSourceReferences has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (19 pts), loops 4 (11 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/move_file.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7ec565f20716fb7fc84d9ad9ff636194fec8e2e0fb6dbc0a563b5f9131116b0"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginsPage._emitIncompatibleInfo (cognitive 30): PluginsPage._emitIncompatibleInfo has cognitive complexity 30 (threshold 15). Drivers by points: loops 7 (18 pts), if/else 4 (12 pts) (nesting depth added 19). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/plugins_page.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb4ec22da529de691d21ec270e2566c79b9595436545beaa2e9acd6fdaf7421a"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassElementImpl.allSubtypes (cognitive 30): ClassElementImpl.allSubtypes has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 2 (4 pts), boolean chains 3, match/switch 1 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1dbfbbd4ecfe70efb2356cc6f9813263c8b9eb931888160079234abb3c9604f"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._checkFfiNative (cognitive 30): FfiVerifier._checkFfiNative has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (26 pts), boolean chains 3, loops 1 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae9280e22da1c21aad0526c1de360856ffca65a189dd58d269c9794e1b61c71d"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalDeclarationVisitor._visitStatements (cognitive 30): LocalDeclarationVisitor._visitStatements has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (25 pts), loops 2 (5 pts) (nesting depth added 20). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"589f18a71c419598737919631ce5af7b43ca6a9e5ac577850dc69e02649e32c8"}},{"ruleId":"D2","level":"warning","message":{"text":"KClassEnv._ensureMaps (cognitive 30): KClassEnv._ensureMaps has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (21 pts), loops 5 (7 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/env.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"20c34942cd5022dd87f5247c95affb03b5c4c3bb7443c4b0211ee19fe985a522"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelAnnotationProcessor.extractJsInteropAnnotations (cognitive 30): KernelAnnotationProcessor.extractJsInteropAnnotations has cognitive complexity 30 (threshold 15). Drivers by points: if/else 15 (27 pts), boolean chains 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"97f98c367e5cf66cdd5a6e1ea526c32f2ccda54de4d831090ffd2582847cb2a4"}},{"ruleId":"D2","level":"warning","message":{"text":"Maplet.[]= (cognitive 30): Maplet.[]= has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14 (21 pts), loops 3 (8 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/util/maplet.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"234cee68c2766da15c17f6c47ecb9582eec877dabc8448d2832e33ada499f9ab"}},{"ruleId":"D2","level":"warning","message":{"text":"ProtocolConverter.convertVmInstanceRefToDisplayString (cognitive 30): ProtocolConverter.convertVmInstanceRefToDisplayString has cognitive complexity 30 (threshold 15). Drivers by points: if/else 15 (19 pts), ternaries 4 (8 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c7734c5aed282bda71ef7089d9ab26727b61f2ed78dd462b27e79f6c8e1db3f"}},{"ruleId":"D2","level":"warning","message":{"text":"JsBuilder.escapedString (cognitive 30): JsBuilder.escapedString has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 11, loops 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd75e10094841f0d55dd8a2ca2c330207ab65edab41d446da2a064bbd7be2fb"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._is31BitUnsigned (cognitive 30): ProgramCompiler._is31BitUnsigned has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (19 pts), ternaries 2 (7 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6283}}}],"partialFingerprints":{"codehealthFindingId/v1":"57527a05f12d3f6527ab2315900ddbd40c1b89f825028423cd995cee6bcb207f"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._is31BitUnsigned (cognitive 30): LibraryCompiler._is31BitUnsigned has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (19 pts), ternaries 2 (7 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6972}}}],"partialFingerprints":{"codehealthFindingId/v1":"18effec3f687618b9acd17bb266fef9ae36bdf45084543321304fe612e8258f2"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionCompiler._findScopeAt (cognitive 30): ExpressionCompiler._findScopeAt has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 4 (7 pts), error handling 1 (2 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"147a04ecd7cfe3c1aefe2fcb7b1759fc06580ef8626d645581d3a2b512371e4a"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endFormalParameters (cognitive 30): BodyBuilderImpl.endFormalParameters has cognitive complexity 30 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 9, match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3944}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eaa858726b996a598bb561693f1c6aaa0fec45d803aab9421bbd8b1f213539d"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endRecordLiteral (cognitive 30): BodyBuilderImpl.endRecordLiteral has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (24 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":5089}}}],"partialFingerprints":{"codehealthFindingId/v1":"cca65e36de703dad2605095f86793fd326063cfd5167e27d27b3a21f6c5ca54d"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantsTransformer.visitRecordLiteral (cognitive 30): ConstantsTransformer.visitRecordLiteral has cognitive complexity 30 (threshold 15). Drivers by points: if/else 11 (24 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2342}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9a505aceff7a5abc900c512cb5037fb113cdff6671ccdddecf057e112a0cebc"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader.buildOutlines (cognitive 30): SourceLoader.buildOutlines has cognitive complexity 30 (threshold 15). Drivers by points: if/else 8 (21 pts), loops 4 (9 pts) (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1308}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd988928aaddf89c05ea42866411040d213b6620f57e069d078c69ec75d234bf"}},{"ruleId":"D2","level":"warning","message":{"text":"ReferenceName.fromNamedNode (cognitive 30): ReferenceName.fromNamedNode has cognitive complexity 30 (threshold 15). Drivers by points: if/else 20 (30 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/equivalence_helpers.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ff055afa87952f4170bcb55d2961b8ebd529f8e5371141990e02e094749493"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._checkTopLevelFragment (cognitive 30): _Visitor._checkTopLevelFragment has cognitive complexity 30 (threshold 15). Drivers by points: loops 6 (16 pts), if/else 6 (10 pts), boolean chains 3, match/switch 1 (nesting depth added 14). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_public_api.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"533d758795ce03973bb62cb49e8404578d5a6145b07181ea333cba561fc1c4a4"}},{"ruleId":"D2","level":"warning","message":{"text":"DebuggerLocation._parseFunction (cognitive 30): DebuggerLocation._parseFunction has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (23 pts), loops 3 (7 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger_location.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3dc034e25e8b520c030df3b6b988c732e393a6a22b61a4f7f0ba164e028ac1c"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptInsetElement.lineNumberElement (cognitive 30): ScriptInsetElement.lineNumberElement has cognitive complexity 30 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 3 (9 pts), boolean chains 1, ternaries 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"026f5dcb9e686c4e1f60eed9084710afef78840380def45cb28f01c7d462ef54"}},{"ruleId":"D2","level":"warning","message":{"text":"ServiceEvent._update (cognitive 30): ServiceEvent._update has cognitive complexity 30 (threshold 15). Drivers by points: if/else 27 (28 pts), boolean chains 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":2342}}}],"partialFingerprints":{"codehealthFindingId/v1":"6887adec8fe282a2e58f615bc062c6dc975213713ab8c4e7dd37e9abd9b98ff7"}},{"ruleId":"D2","level":"warning","message":{"text":"Event.toJson (cognitive 30): Event.toJson has cognitive complexity 30 (threshold 15). Drivers by points: if/else 30. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":4168}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba5bb64336290b25da0f52c838da8477c93ad6d3446cd9cdf1fe67528650379d"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlEventGenerator.EmitStreamGetters (cognitive 30): HtmlEventGenerator.EmitStreamGetters has cognitive complexity 30 (threshold 15). Drivers by points: if/else 6 (13 pts), ternaries 4 (12 pts), loops 3 (5 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmleventgenerator.py"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d37c0a377db04283bfc54291688e98c365dfa8a44b41741bc5ca04a2b6817ed"}},{"ruleId":"D2","level":"warning","message":{"text":"Dart2JSBackend.AddIndexer (cognitive 30): Dart2JSBackend.AddIndexer has cognitive complexity 30 (threshold 15). Drivers by points: if/else 9 (16 pts), ternaries 4 (8 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1427}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a9b7c712272000858417e2a8bd620c1309d42a60e0e0795c062126ba04dadf"}},{"ruleId":"D2","level":"warning","message":{"text":"Dart2JSBackend._AddDirectNativeOperation (cognitive 30): Dart2JSBackend._AddDirectNativeOperation has cognitive complexity 30 (threshold 15). Drivers by points: if/else 7 (16 pts), ternaries 6 (13 pts), boolean chains 1 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1943}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab196ca2a2d18ab60e4d5e57b2ed1d67bfc94de66349a7dfbf74ce0b80e2cf9f"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationFilesMixin.writePackageConfig2 (cognitive 29): ConfigurationFilesMixin.writePackageConfig2 has cognitive complexity 29 (threshold 15). Drivers by points: if/else 18 (26 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/configuration_files_mixin.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"59b1292f93fb6f673c74f7400573d263094a5a190562ffc690031570a2fd9c68"}},{"ruleId":"D2","level":"warning","message":{"text":"_TextFormatter.add (cognitive 29): _TextFormatter.add has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (19 pts), ternaries 2 (6 pts), loops 1 (2 pts), match/switch 1 (2 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/lib/text_formatter.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"de41acf82a73fcd7a8371e5f906c9a1708b35b2fad3dea594e15a4541a896ac0"}},{"ruleId":"D2","level":"warning","message":{"text":"Translator.convertType (cognitive 29): Translator.convertType has cognitive complexity 29 (threshold 15). Drivers by points: if/else 15 (26 pts), boolean chains 3 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1580}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e55c06a1876491260c24b0658e38ca6ca4b5936a98c684a635096580cf03b8"}},{"ruleId":"D2","level":"warning","message":{"text":"FrontendCompiler.writePackagesToSinkAndTrimComponent (cognitive 29): FrontendCompiler.writePackagesToSinkAndTrimComponent has cognitive complexity 29 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 8 (14 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":1619}}}],"partialFingerprints":{"codehealthFindingId/v1":"966736ec868eb85cac84316a6c8495cbac5c23b7b38f1e190d0bd8473f84750f"}},{"ruleId":"D2","level":"warning","message":{"text":"_VerifyingVisitor._computeExtensionMembers (cognitive 29): _VerifyingVisitor._computeExtensionMembers has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (23 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (_VerifyingVisitor._computeExtensionTypeMembers) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"193231299ec42d53235312510fef3e2534b13f938ecdb5b6a70c79c51fa7d8d8"}},{"ruleId":"D2","level":"warning","message":{"text":"_VerifyingVisitor._computeExtensionTypeMembers (cognitive 29): _VerifyingVisitor._computeExtensionTypeMembers has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (23 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (_VerifyingVisitor._computeExtensionMembers) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1fdcfc69817daf336eaf833a98b8b161280438f0910eee41524d0333708b83a"}},{"ruleId":"D2","level":"warning","message":{"text":"_GrowableList.addAll (cognitive 29): _GrowableList.addAll has cognitive complexity 29 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 4 (9 pts), boolean chains 3 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"02529cf7ede32b60c055203f49079938714aa26cef845cb12013c258b7569ba9"}},{"ruleId":"D2","level":"warning","message":{"text":"_Timer._runTimers (cognitive 29): _Timer._runTimers has cognitive complexity 29 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/timer_impl.dart"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bc2df5f94c089a596993e9b53416484c9010ac17f70ea7e0bd9bc65edf7c2ac"}},{"ruleId":"D2","level":"warning","message":{"text":"BinaryPrinter.writeStringTable (cognitive 29): BinaryPrinter.writeStringTable has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (21 pts), loops 3 (5 pts), boolean chains 3 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"35294fe60264795f441ff56de787502c8f254d02dd01796bf4e594714098b282"}},{"ruleId":"D2","level":"warning","message":{"text":"BinaryPrinter.writeConstantTableEntry (cognitive 29): BinaryPrinter.writeConstantTableEntry has cognitive complexity 29 (threshold 15). Drivers by points: if/else 19, loops 4 (8 pts), ternaries 1 (2 pts) (nesting depth added 5). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"91acc35e42c88da0cb710b0e401799dae835e3c8cf3c75bbdc639116ab110c05"}},{"ruleId":"D2","level":"warning","message":{"text":"_SimpleUri.replace (cognitive 29): _SimpleUri.replace has cognitive complexity 29 (threshold 15). Drivers by points: if/else 18 (20 pts), boolean chains 7, ternaries 1 (2 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":4753}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6a33b1e054ba78abf549314d38632694fecb37d896ab79ec9aa50d801fe8b21"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiDefinitionTransformer._checkFieldAnnotations (cognitive 29): _FfiDefinitionTransformer._checkFieldAnnotations has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 5, error handling 1 (4 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"e21211f0729e69f5709592fa5fbe36b471e8f723c6ff463572b31e5b5c8b61ea"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeTypeCfe.NativeTypeCfe (cognitive 29): NativeTypeCfe.NativeTypeCfe has cognitive complexity 29 (threshold 15). Drivers by points: if/else 15 (25 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a1d01baa4d16cc40b73081a80b39a2dbee2292028d0dfb5a09ddb0453ffd311"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiUseSiteTransformer._verifyAndReplaceNativeCallable (cognitive 29): _FfiUseSiteTransformer._verifyAndReplaceNativeCallable has cognitive complexity 29 (threshold 15). Drivers by points: if/else 14 (21 pts), boolean chains 8 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":1274}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d993aff1b681e5471d2ae4afb0e30d8d2c49447240f829ae0022ea65bf2008"}},{"ruleId":"D2","level":"warning","message":{"text":"Lowering.visitComparison (cognitive 29): Lowering.visitComparison has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 8, ternaries 2 (8 pts) (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/lowering.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae1adf944c4dfef26bd390f655f0e0e8fa1396e235bf846b1bffbf666096ed27"}},{"ruleId":"D2","level":"warning","message":{"text":"ComplexTypeParamOrArgInfo.parseVariables (cognitive 29): ComplexTypeParamOrArgInfo.parseVariables has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 6, loops 3 (5 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a4efa1c560303a7494b0e58907826d8764b06aaae3a0b49b03d6988fc1d616"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAnalyzer.analyzeSwitchStatement (cognitive 29): TypeAnalyzer.analyzeSwitchStatement has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 3 (5 pts), boolean chains 3 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":2511}}}],"partialFingerprints":{"codehealthFindingId/v1":"212c9727ba8d3029c2fb5ba7bfa71a7c5359c35df1d9e00de5bd4158b2b96269"}},{"ruleId":"D2","level":"warning","message":{"text":"DependencyWalker.walk (cognitive 29): DependencyWalker.walk has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (25 pts), loops 2 (4 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/dependency_walker.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f35fb9477144ec4b794dbbdef29819bf745a82f76c319be6a1ec34cbcd12ed4"}},{"ruleId":"D2","level":"warning","message":{"text":"JsUtilOptimizer._getPrefixSelectorsForStaticallyResolvableMember (cognitive 29): JsUtilOptimizer._getPrefixSelectorsForStaticallyResolvableMember has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 8, ternaries 2 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba96fc9548e965397c1e2b74c53409367394532d1b2619fab5d05e6e7309c29"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryElementSuggestionBuilder._visitInterfaceElement (cognitive 29): LibraryElementSuggestionBuilder._visitInterfaceElement has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/local_library_contributor.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c57686ea67d70aaecf69c12b44624914f595b5153bf8795724c80e316da538a"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._addInstanceMembers (cognitive 29): DeclarationHelper._addInstanceMembers has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (24 pts), boolean chains 2, loops 2, ternaries 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1202}}}],"partialFingerprints":{"codehealthFindingId/v1":"e668a4bcefd23099d5648b44e0ba64d1ee783ca2b53d6d01c9e67c5bbfc47da6"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitPrefixedIdentifier (cognitive 29): InScopeCompletionPass.visitPrefixedIdentifier has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (25 pts), boolean chains 4 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2513}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e69d31c385d5b94bcdfca2e850efba8c2a30eca5ee5b388e496c617ee36a5f"}},{"ruleId":"D2","level":"warning","message":{"text":"KeywordHelper.addImportDirectiveKeywords (cognitive 29): KeywordHelper.addImportDirectiveKeywords has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (26 pts), boolean chains 3 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"e55928b86d085e8c37ec1c2eb42c6c80aa4ad040ecd7f036a2b47929db213436"}},{"ruleId":"D2","level":"warning","message":{"text":"AmbiguousImportFix._getImportDirectives (cognitive 29): AmbiguousImportFix._getImportDirectives has cognitive complexity 29 (threshold 15). Drivers by points: if/else 5 (19 pts), loops 3 (6 pts), ternaries 1 (4 pts) (nesting depth added 20). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/ambiguous_import_fix.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ce9cd376b2113489de6c6c7a981433ee030244c996b6055e6d6056a3a303bfe"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertIntoGetter.compute (cognitive 29): ConvertIntoGetter.compute has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (20 pts), boolean chains 7, loops 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"606ea9ce2540c08484a7324f8f671725ecc5d416c616dbe223b02205bf7a040f"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToBooleanExpression.compute (cognitive 29): ConvertToBooleanExpression.compute has cognitive complexity 29 (threshold 15). Drivers by points: ternaries 6 (18 pts), if/else 5 (7 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_boolean_expression.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a486f5ebdd677147934c87bab5a49e85f078127bca62964de2aeb1af5d6e957"}},{"ruleId":"D2","level":"warning","message":{"text":"_CreateConstructor._computeWithoutSuperParameters (cognitive 29): _CreateConstructor._computeWithoutSuperParameters has cognitive complexity 29 (threshold 15). Drivers by points: if/else 14 (18 pts), boolean chains 8, loops 2 (3 pts) (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"f051a0e66cfa808023d403eb4d7642edb5f596b39644cd8dd72cbf0db205ec80"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateExtensionOperator.compute (cognitive 29): CreateExtensionOperator.compute has cognitive complexity 29 (threshold 15). Drivers by points: if/else 19 (23 pts), boolean chains 3, ternaries 1 (2 pts), match/switch 1 (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef5cd0258ec056eac890daf5500d1aeff5ea215d0fa3c331f7237e682a634e81"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateOperator.compute (cognitive 29): CreateOperator.compute has cognitive complexity 29 (threshold 15). Drivers by points: if/else 20 (24 pts), boolean chains 4, match/switch 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_operator.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a1a0f70ce6f6096be1753a36add26f76a7ad4797d5fdb5438808442eac4bb9"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportLibrary._otherUnresolvedNames (cognitive 29): ImportLibrary._otherUnresolvedNames has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 3 (10 pts), boolean chains 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/import_library.dart"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"730aa627a377885f68b91c9efc81a626178455df69f880f13b9e113086ad5973"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveIgnoredDiagnostic.compute (cognitive 29): RemoveIgnoredDiagnostic.compute has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (24 pts), loops 2 (5 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_ignored_diagnostic.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"d042d8adfdf998650f5f8b8ae072814a94a148b0d28d14b28868fa1dbef1994e"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveThisAlias.compute (cognitive 29): RemoveThisAlias.compute has cognitive complexity 29 (threshold 15). Drivers by points: if/else 14 (22 pts), boolean chains 6, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_this_alias.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"c417dea4a563f26bb4d3d7febfe387dc1384615bf483746a9c463c7d6ffb67c7"}},{"ruleId":"D2","level":"warning","message":{"text":"MoveTopLevelToFile.compute (cognitive 29): MoveTopLevelToFile.compute has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 9 (14 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/move_top_level_to_file.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"0201e56d94a079a11a9b16e17688f00094207089362cf227f08e8e0caed62c26"}},{"ruleId":"D2","level":"warning","message":{"text":"_ParsedExpressionBuilder.build (cognitive 29): _ParsedExpressionBuilder.build has cognitive complexity 29 (threshold 15). Drivers by points: if/else 8 (19 pts), boolean chains 4, match/switch 2 (4 pts), loops 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":60164}}}],"partialFingerprints":{"codehealthFindingId/v1":"8621923df26fbcf977cb27d4f168e31684e2969b13f00e7ca0d328f1d5362e41"}},{"ruleId":"D2","level":"warning","message":{"text":"LanguageVersionOverrideVerifier._verifyMisplaced (cognitive 29): LanguageVersionOverrideVerifier._verifyMisplaced has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 3 (8 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/language_version_override_verifier.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"98644f1643da5e866e23f816b0e1c7f859afa38e1ff87d6c99d348c9fe921387"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeArgumentsVerifier._checkTypeArgumentConst (cognitive 29): TypeArgumentsVerifier._checkTypeArgumentConst has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 3 (7 pts), match/switch 1 (nesting depth added 15). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/type_arguments_verifier.dart"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9da4df6440cf9492df2b729f475cb19b0eb8c2d69dd67fdd20f93052f4510e"}},{"ruleId":"D2","level":"warning","message":{"text":"SdkConstraintVerifier._checkSinceSdkVersion (cognitive 29): SdkConstraintVerifier._checkSinceSdkVersion has cognitive complexity 29 (threshold 15). Drivers by points: if/else 17 (29 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7246ba512ed19bb8e0d87b87fb2296ab80e6ead94fd2419e9d78be8d1ba4d2e"}},{"ruleId":"D2","level":"warning","message":{"text":"MissingDependencyValidator.validate (cognitive 29): MissingDependencyValidator.validate has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 6 (9 pts), boolean chains 4 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/pubspec/validators/missing_dependency_validator.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"56374629f10986d210993b015b10e03d696406c82d1c00bb3f8ccfe3dc74cfcd"}},{"ruleId":"D2","level":"warning","message":{"text":"DartEditBuilderImpl.writeFormalParameters (cognitive 29): DartEditBuilderImpl.writeFormalParameters has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (22 pts), ternaries 2 (4 pts), boolean chains 2, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"507fb7a32ade85931a51ef6d92a4a3ede7b15c2c196e9ddc7bc0fbaf9169a0e2"}},{"ruleId":"D2","level":"warning","message":{"text":"CommonMasks._createFromStaticType (cognitive 29): CommonMasks._createFromStaticType has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 3 (6 pts), boolean chains 5, ternaries 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"6052503e8391f0528c541c3d503d5e8ce96d38f2c1bc538d5431f0a9c348f412"}},{"ruleId":"D2","level":"warning","message":{"text":"SizeEstimator.visitAssignment (cognitive 29): SizeEstimator.visitAssignment has cognitive complexity 29 (threshold 15). Drivers by points: boolean chains 17, if/else 6 (12 pts) (nesting depth added 6). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"312ee663e50d4cc53f0b10ee5e354fa3bba63ba02dd9d0e5324b7b2bc6e903d9"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolutionEnqueuerListener.registerUsedElement (cognitive 29): ResolutionEnqueuerListener.registerUsedElement has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (19 pts), loops 3 (8 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"65d854e1684cab22478f819d0f734a10f6620a818fd2bb93fc9d1be86a9af8bf"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._handleCreateInvocationMirror (cognitive 29): KernelSsaGraphBuilder._handleCreateInvocationMirror has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 5 (12 pts), boolean chains 1, match/switch 1, ternaries 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5579}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dd48378552a5732cd218bac60371c7d82234e7c71fa85640e176167384ce937"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitBitOr (cognitive 29): SsaInstructionSimplifier.visitBitOr has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (24 pts), boolean chains 5 (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2862}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aa70710a9c4c8f94e0aaa26d6c35d1c8bd8e7c4f2ec1b59c1a7e16c06f69f84"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaGlobalValueNumberer.visitBasicBlock (cognitive 29): SsaGlobalValueNumberer.visitBasicBlock has cognitive complexity 29 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 3 (5 pts), boolean chains 4, ternaries 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3817}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e82fdef262c2047db300c8664de6e34c26428e2fa67f9a5e74ff850fd6f6f63"}},{"ruleId":"D2","level":"warning","message":{"text":"Setlet.add (cognitive 29): Setlet.add has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13 (20 pts), loops 3 (8 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/util/setlet.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdc38acce7c97e9334a9b66c65abaefcd46645d376c9317cffcc93d7c780a3ed"}},{"ruleId":"D2","level":"warning","message":{"text":"FixCommand.run (cognitive 29): FixCommand.run has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (12 pts), boolean chains 9, ternaries 5 (7 pts), error handling 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/fix.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d11347c17366206e56599a5efb4cccd2598fe1821c9b7e5eda941053720fb47"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedTypeBuilderImpl.substituteRange (cognitive 29): NamedTypeBuilderImpl.substituteRange has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 3 (6 pts), boolean chains 1, match/switch 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb5b8c729beb3290bd8196b6af519145753f219e2ffea341b1d8e2dc5922566"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.checkAssert (cognitive 29): ConstantEvaluator.checkAssert has cognitive complexity 29 (threshold 15). Drivers by points: if/else 16 (29 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3914}}}],"partialFingerprints":{"codehealthFindingId/v1":"25980c8557e685b6f3f3050c3ddce6dfbab4ae9a363ad6dfd9b889e37a8a2133"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.visitLogicalExpression (cognitive 29): ConstantEvaluator.visitLogicalExpression has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (26 pts), boolean chains 2, match/switch 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4610}}}],"partialFingerprints":{"codehealthFindingId/v1":"280a2afaa0f7eb7f7939df82cefe032dddc2219138b69a842bfc298cf5888350"}},{"ruleId":"D2","level":"warning","message":{"text":"_DynamicModuleValidator._expandNode (cognitive 29): _DynamicModuleValidator._expandNode has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (18 pts), loops 5 (10 pts), match/switch 1 (nesting depth added 17). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e83371699d99a7a645815115f2c7002e547b7672039856493e11d9d90768d80"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.parsePrimary (cognitive 29): MiniJsParser.parsePrimary has cognitive complexity 29 (threshold 15). Drivers by points: if/else 19 (27 pts), loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":790}}}],"partialFingerprints":{"codehealthFindingId/v1":"7acff5483b9a4013cbcd378f9a3945d866133428fc35ab06607535bdb6ba37f9"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.visitAssignment (cognitive 29): Printer.visitAssignment has cognitive complexity 29 (threshold 15). Drivers by points: boolean chains 17, if/else 6 (12 pts) (nesting depth added 6). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"a16843e996f084163b912df4ef24f01c0dc3582690bf409206e514b537c30518"}},{"ruleId":"D2","level":"warning","message":{"text":"StandardBounds.getStandardUpperBoundInternal (cognitive 29): StandardBounds.getStandardUpperBoundInternal has cognitive complexity 29 (threshold 15). Drivers by points: if/else 6 (14 pts), ternaries 4 (8 pts), match/switch 2 (4 pts), loops 1 (3 pts) (nesting depth added 16). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"e78c3d81435c7e515601ee454128d46bf4c8fc00af06788952677fc674af0600"}},{"ruleId":"D2","level":"warning","message":{"text":"VmServerConnection._delegateRequest (cognitive 29): VmServerConnection._delegateRequest has cognitive complexity 29 (threshold 15). Drivers by points: if/else 8 (16 pts), ternaries 3 (9 pts), error handling 2, match/switch 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service_interface/lib/src/vm_service_interface.dart"},"region":{"startLine":1403}}}],"partialFingerprints":{"codehealthFindingId/v1":"0791f399ee3ea728db504765d718ec8b87800a3ddf944b7ffd3328ec1889ef6a"}},{"ruleId":"D2","level":"warning","message":{"text":"DFilterExpression.evaluate (cognitive 29): DFilterExpression.evaluate has cognitive complexity 29 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 11, ternaries 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/heapsnapshot/lib/src/expression.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8cd9ec4dab11a81e5db4f7c58264b0e852c6eb7c21cdc9e525cf04b5fa101a3"}},{"ruleId":"D2","level":"warning","message":{"text":"_SummaryNormalizer._normalizeExpr (cognitive 29): _SummaryNormalizer._normalizeExpr has cognitive complexity 29 (threshold 15). Drivers by points: if/else 11 (27 pts), boolean chains 2 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"691aad82eef7dca214d7a97be30e03beb55dae9948de2c146f70756ec0006a86"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotateKernel._annotateCallSite (cognitive 29): AnnotateKernel._annotateCallSite has cognitive complexity 29 (threshold 15). Drivers by points: boolean chains 15, if/else 9 (13 pts), ternaries 1 (nesting depth added 4). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ecffa9c39002befc6959ebb66b2c48ad3782a8fc4b1458699cced8eb03fb097"}},{"ruleId":"D2","level":"warning","message":{"text":"DatabaseBuilder._output_examination (cognitive 29): DatabaseBuilder._output_examination has cognitive complexity 29 (threshold 15). Drivers by points: ternaries 7 (20 pts), if/else 3 (6 pts), loops 2 (3 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d873e06720dc7552ef692174c55812e34d7c21f49798675a2270d78fc86c0af"}},{"ruleId":"D2","level":"warning","message":{"text":"D3SymbolTreeMap.D3SymbolTreeMap._showInfoBox (cognitive 29): D3SymbolTreeMap.D3SymbolTreeMap._showInfoBox has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12 (21 pts), loops 2 (6 pts), boolean chains 2 (nesting depth added 13). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab779b103a6acb690621171d0b86f4d8efef90353f5de5e667e31bbc0bc545d"}},{"ruleId":"D2","level":"warning","message":{"text":"graphexplorer.Graph.rewriteEdgesForOwners (cognitive 29): graphexplorer.Graph.rewriteEdgesForOwners has cognitive complexity 29 (threshold 15). Drivers by points: if/else 14 (20 pts), loops 6 (9 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8b7d3ed30749fbc50fb025659d292d40972f7f25bfcb3adea609d9dfa82428"}},{"ruleId":"D2","level":"warning","message":{"text":"ImpliedTypeComputer._computeInContext (cognitive 28): ImpliedTypeComputer._computeInContext has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (18 pts), loops 2 (7 pts), error handling 1 (3 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a0c82d962dc2a3bddd81ce1fce7ddaf152de807ddfa068e32ffac7c86a9675"}},{"ruleId":"D2","level":"warning","message":{"text":"RelevanceMetricsComputer._computeInContext (cognitive 28): RelevanceMetricsComputer._computeInContext has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (18 pts), loops 2 (7 pts), error handling 1 (3 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":2187}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d68e83b7fcc969dff8ac85530dbfccc77c564f5b6fec5c9d8fe935205922c4"}},{"ruleId":"D2","level":"warning","message":{"text":"AstNodeImplGenerator._removeGeneratedMembers (cognitive 28): AstNodeImplGenerator._removeGeneratedMembers has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 4 (6 pts), match/switch 1 (3 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":1378}}}],"partialFingerprints":{"codehealthFindingId/v1":"a953b3d758c891d2f3663d9f1fda56ff56aa0f54dedbfad7bfee84bd84a6438e"}},{"ruleId":"D2","level":"warning","message":{"text":"_CodeGenerator._addFieldForGetter (cognitive 28): _CodeGenerator._addFieldForGetter has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (26 pts), boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"28eaf6049bcbf4915c4454df92261976c8526a609c87c989b07a927a03b68e90"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator.defaultMember (cognitive 28): BytecodeGenerator.defaultMember has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (27 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"1841add4ef3ec372578326476c87be41df91ca082c5f5a9e09e4a0d07ecba546"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionDeclaration.toString (cognitive 28): FunctionDeclaration.toString has cognitive complexity 28 (threshold 15). Drivers by points: if/else 27, boolean chains 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6a43959d6ba532f1803c668e5335f079842615f553113717fa956d2b6fe39f"}},{"ruleId":"D2","level":"warning","message":{"text":"AstCompilationTask.run (cognitive 28): AstCompilationTask.run has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (20 pts), loops 2 (6 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":2753}}}],"partialFingerprints":{"codehealthFindingId/v1":"94c0fbf5e027b486469bf52602e81b025977318c38a772e0fdae81cc78d976c1"}},{"ruleId":"D2","level":"warning","message":{"text":"DartDevelopmentServiceLauncher.start (cognitive 28): DartDevelopmentServiceLauncher.start has cognitive complexity 28 (threshold 15). Drivers by points: if/else 16 (18 pts), ternaries 4 (8 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/dds_launcher.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d64e0eccd0e4a25801db6f54197ceaa36ab4a65385137841ebbefbae67bde60"}},{"ruleId":"D2","level":"warning","message":{"text":"DevToolsServer._serveDevToolsWithArgs (cognitive 28): DevToolsServer._serveDevToolsWithArgs has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (16 pts), ternaries 7, boolean chains 5 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69ed8c00a0476e8edf3bb451f9079ab43dfc5cae3b1f4b3e7db7ab2422a4ac6"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpOutgoing.writeHeaders (cognitive 28): _HttpOutgoing.writeHeaders has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 5 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1795}}}],"partialFingerprints":{"codehealthFindingId/v1":"cef0cc1f8d5ce32bfe67c8fa636f6749c5906b78e4473fa0df17e3c5b869d0f1"}},{"ruleId":"D2","level":"warning","message":{"text":"_SyncStarIterator.moveNext (cognitive 28): _SyncStarIterator.moveNext has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (22 pts), error handling 1 (3 pts), boolean chains 2, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/async_patch.dart"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe37998321235c897444f357218e2f0de3a0c05e9a5fbd8fe80636bbb5f117dc"}},{"ruleId":"D2","level":"warning","message":{"text":"BoxedDouble.compareTo (cognitive 28): BoxedDouble.compareTo has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (22 pts), ternaries 2 (5 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/boxed_double.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae57f23e907f563c3ce3366853220604d60b46dd9d45b0a5ffc9659f93b9bbc9"}},{"ruleId":"D2","level":"warning","message":{"text":"Uri._parseIPv4Address (cognitive 28): Uri._parseIPv4Address has cognitive complexity 28 (threshold 15). Drivers by points: if/else 9 (24 pts), ternaries 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":1429}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b11543f37efd9c541993570230df26167907c3edb0da627be3d6665b24bf293"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._uriDecode (cognitive 28): _Uri._uriDecode has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 6, loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":3619}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dbf70b50481e8b93f1273aa26ec3b4dc286ae626a600a995be75a6f4d2d5a08"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseParenthesizedExpressionOrRecordLiteral (cognitive 28): Parser.parseParenthesizedExpressionOrRecordLiteral has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (20 pts), boolean chains 7, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8293}}}],"partialFingerprints":{"codehealthFindingId/v1":"5099a9f5f50f9e1a0d2e9f2ffef0051df99c9ff9f21d7c48e3a8bf14fe0f78a7"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseConstExpression (cognitive 28): Parser.parseConstExpression has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (22 pts), boolean chains 6 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9015}}}],"partialFingerprints":{"codehealthFindingId/v1":"db8fb0facd1cbbdf5fda6d94de27551f3b64bf2324c38f8ce31c28d517ecba80"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitFieldDeclaration (cognitive 28): InScopeCompletionPass.visitFieldDeclaration has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (24 pts), boolean chains 4 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"f94563249fa9d2ff30fdfd9264be7abfec2fc7f34e536e430de5a93d4d08d962"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkFixProcessor.fixErrorsUsingParsedResult (cognitive 28): BulkFixProcessor.fixErrorsUsingParsedResult has cognitive complexity 28 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 4 (11 pts), boolean chains 1 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d816eafc6f09d0b79ad52298552fca5cf578063eeeff4c7a054d4a63a34ef69"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConvertQuotes._fixBackslashesForQuotes (cognitive 28): _ConvertQuotes._fixBackslashesForQuotes has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (25 pts), boolean chains 2, loops 1 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_quotes.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c88312fbb612eaf2ab6ab5449f86ee1054021b1b2ee7ffca885b1f52b0a56a6"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateExtensionMethod.compute (cognitive 28): CreateExtensionMethod.compute has cognitive complexity 28 (threshold 15). Drivers by points: if/else 22, boolean chains 4, match/switch 1 (2 pts) (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c67cde0b06a488434e1c7c76dbcf1255a92a8207fa681d829cfa9816a70b3e9"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplaceReturnType.compute (cognitive 28): ReplaceReturnType.compute has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (27 pts), boolean chains 1 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_return_type.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"62cb2ba0bb15c3bed62ca4fc7a8328be7cbc8d21ba418683289989d3b92828ae"}},{"ruleId":"D2","level":"warning","message":{"text":"_Collector._typedLiteral (cognitive 28): _Collector._typedLiteral has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef80f191f1907a3b33b88ad3b58efd30e87ca688929606bcfd72e7350d78f682"}},{"ruleId":"D2","level":"warning","message":{"text":"InterfaceLeastUpperBoundHelper._computeLongestInheritancePathToObject (cognitive 28): InterfaceLeastUpperBoundHelper._computeLongestInheritancePathToObject has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 3 (7 pts), ternaries 1 (3 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"c86230cea15356cb289c7bb65c7d644abead400b51b224129b689107dfe7bb8e"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplacementVisitor.visitFunctionType (cognitive 28): ReplacementVisitor.visitFunctionType has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 5 (8 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"14a06cf037b9a1ec9b113edf1b6e72851a2d78eee91fdc41acb19a3945f0bb04"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystemImpl.isAlwaysExhaustive (cognitive 28): TypeSystemImpl.isAlwaysExhaustive has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (23 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"753ad24d41908f145dce2ba7a658ba05a86c2b4760bc5e80330dade630ba2b51"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystemImpl._refineNumericInvocationContextNullSafe (cognitive 28): TypeSystemImpl._refineNumericInvocationContextNullSafe has cognitive complexity 28 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 9 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1953}}}],"partialFingerprints":{"codehealthFindingId/v1":"192b1795f16a03875ac5f2176265391b7b1e89d4ff97154b3671962704bbc49f"}},{"ruleId":"D2","level":"warning","message":{"text":"CallInvocationResolver.resolve (cognitive 28): CallInvocationResolver.resolve has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (23 pts), ternaries 1 (3 pts), boolean chains 1, match/switch 1 (nesting depth added 14). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd38efe102449fd70ef922b17083231ceb48c4c3766350623631661587f8453d"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportsVerifier._addDuplicateShownHiddenNames (cognitive 28): ImportsVerifier._addDuplicateShownHiddenNames has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (21 pts), loops 3 (7 pts) (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/imports_verifier.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e9dc7ccc609adaada2a00b32f927b5ada94db3c92a22f4244b9d1d7b2b01f4"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryManifestBuilder._fillInterfaceElementInterface (cognitive 28): LibraryManifestBuilder._fillInterfaceElementInterface has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 5 (6 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1338}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea6e9bd416d3a31df304a5bc34abe4ff4dd46cf4777c7a3895f406b96dd23ca"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._isValidFfiNativeType (cognitive 28): FfiVerifier._isValidFfiNativeType has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (23 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc48578c1cd53f9ac4f43256bf163284311d815916ddc4a7a1c4ab2c7b17c385"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateSizeOfAnnotation (cognitive 28): FfiVerifier._validateSizeOfAnnotation has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (18 pts), ternaries 1 (4 pts), loops 2 (3 pts), boolean chains 2, match/switch 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":2425}}}],"partialFingerprints":{"codehealthFindingId/v1":"0689986c3438056dc0cbf93f0887ead22f180fb7359783df8071d8d6ba8b220f"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor.visitEnumConstantDeclaration (cognitive 28): ResolverVisitor.visitEnumConstantDeclaration has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (26 pts), loops 1 (2 pts) (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":3091}}}],"partialFingerprints":{"codehealthFindingId/v1":"a730d1bf723f56b65d000994c91180e709653b06e3fe97c47628424f9c4fac78"}},{"ruleId":"D2","level":"warning","message":{"text":"SuperContext.of (cognitive 28): SuperContext.of has cognitive complexity 28 (threshold 15). Drivers by points: if/else 16 (25 pts), boolean chains 2, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/super_context.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d21dc17d3670f1ad73eb68eba76a1b25108043396e710d41ab017abab9abc1"}},{"ruleId":"D2","level":"warning","message":{"text":"VarianceBuilder._compute (cognitive 28): VarianceBuilder._compute has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 3 (10 pts), boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/variance_builder.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"de7f0c4548c2e63c9ed947bff32f885594e91e2c03fe0f8c8fb2c0efffccc145"}},{"ruleId":"D2","level":"warning","message":{"text":"DartFileEditBuilderImpl._importLibrary (cognitive 28): DartFileEditBuilderImpl._importLibrary has cognitive complexity 28 (threshold 15). Drivers by points: if/else 9 (19 pts), loops 2 (5 pts), match/switch 1 (4 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":3007}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fd9afe795a73378ce36a07215212ec6d7f764c7fb0d3fd267178a5e36a79778"}},{"ruleId":"D2","level":"warning","message":{"text":"SpecializedChecks._findAsCheck (cognitive 28): SpecializedChecks._findAsCheck has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (21 pts), boolean chains 7 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/specialized_checks.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1d48629d4ff51825f7cc8373e9230fd9683c1e2fd6f5f48d5e09847f7fad341"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._handleInvokeFactoryConstructor (cognitive 28): KernelSsaGraphBuilder._handleInvokeFactoryConstructor has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (24 pts), boolean chains 4 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5196}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b5a1583666af5454433ded41ac411e4ac50aa825daa2f5de0eb4d9c39ed0d0f"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitShiftLeft (cognitive 28): SsaInstructionSimplifier.visitShiftLeft has cognitive complexity 28 (threshold 15). Drivers by points: if/else 8 (25 pts), boolean chains 3 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2990}}}],"partialFingerprints":{"codehealthFindingId/v1":"c47e8aeecdd1e77fb02892feb58175c5114d546ed0fa9b5d8faf61df5e25d4f2"}},{"ruleId":"D2","level":"warning","message":{"text":"CallStructure.signatureApplies (cognitive 28): CallStructure.signatureApplies has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 2 (5 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/call_structure.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"eacbbff3772f072e2066a33bfae263f8032a9e33d4342f4c39c65a06fe16ce62"}},{"ruleId":"D2","level":"warning","message":{"text":"ExecutableCompiler.isSnapshotFresh (cognitive 28): ExecutableCompiler.isSnapshotFresh has cognitive complexity 28 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 7, error handling 2 (3 pts), loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/executable_compiler.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"7890675730a4d35cd274200bebf1659e684847bc49b0d6f0d31e370968a3f45f"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitCovarianceCheckStub (cognitive 28): ProgramCompiler._emitCovarianceCheckStub has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 6, loops 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2693}}}],"partialFingerprints":{"codehealthFindingId/v1":"a345263866fa4b7de6f1769f6242fb6950fb6fab4cf7f26ac8aa91d2a16a1f3a"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitCovarianceCheckStub (cognitive 28): LibraryCompiler._emitCovarianceCheckStub has cognitive complexity 28 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 6, loops 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3003}}}],"partialFingerprints":{"codehealthFindingId/v1":"a671e3ca275a5668818adfd5777fdb09377e305c476f8efb24cf7e9809d0cecb"}},{"ruleId":"D2","level":"warning","message":{"text":"DevHandler._handleConnection (cognitive 28): DevHandler._handleConnection has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (21 pts), error handling 2 (3 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/handlers/dev_handler.dart"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e37d0fb4ebe88a15642e96130709f6052d66605bc60743d05e0d9e06b904f5a"}},{"ruleId":"D2","level":"warning","message":{"text":"LoadedLibrariesImpl.forEachImportChain (cognitive 28): LoadedLibrariesImpl.forEachImportChain has cognitive complexity 28 (threshold 15). Drivers by points: if/else 10 (23 pts), loops 3 (5 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/import_chains.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"4846a8ef518e0df291844f73e8ef92533644c483cf87c4ea7fdf165ac5fb7bf3"}},{"ruleId":"D2","level":"warning","message":{"text":"Modifiers.from (cognitive 28): Modifiers.from has cognitive complexity 28 (threshold 15). Drivers by points: ternaries 13, boolean chains 12, match/switch 1 (2 pts), if/else 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/modifiers.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd9169af12e86c253f5d1aad2af346205cd40fdf288f4a1396f598d4127f65d6"}},{"ruleId":"D2","level":"warning","message":{"text":"FactoryEncoding.inferRedirectionTarget (cognitive 28): FactoryEncoding.inferRedirectionTarget has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (21 pts), boolean chains 6, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"3949f2c59c46b9f1e1a6d6be6a9dfdb2f713cc09a9193bb324192f9c58ddc3ed"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.createFieldInitializer (cognitive 28): BodyBuilderImpl.createFieldInitializer has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 6 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":2234}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2cc1b5bcf016ba740175bafc3dccbecb0d868dd95b6b67203e8233473cbff1"}},{"ruleId":"D2","level":"warning","message":{"text":"SynthesizedInterfaceMember._ensureMemberAndCovariance (cognitive 28): SynthesizedInterfaceMember._ensureMemberAndCovariance has cognitive complexity 28 (threshold 15). Drivers by points: if/else 13 (21 pts), ternaries 2 (6 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc32b91cb95f8ce8872e93e5ffbd74c1bdcdb9368042c0dda002ee906774a2b8"}},{"ruleId":"D2","level":"warning","message":{"text":"_SanitizedMember.computeMembers (cognitive 28): _SanitizedMember.computeMembers has cognitive complexity 28 (threshold 15). Drivers by points: if/else 9 (11 pts), loops 3 (9 pts), ternaries 2 (8 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":1002}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee8cc785962172fd38c6f01b5513c0b7c294153bbb293a9808d62f08fa108da"}},{"ruleId":"D2","level":"warning","message":{"text":"_DeclarationBuilderRegistry.registerBuilder (cognitive 28): _DeclarationBuilderRegistry.registerBuilder has cognitive complexity 28 (threshold 15). Drivers by points: if/else 16 (23 pts), boolean chains 5 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/name_space_builder.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e7655e93308079b4089547facfa0a6ca4a3f770e7a7adbab37be167fd2494e6"}},{"ruleId":"D2","level":"warning","message":{"text":"MatchingExpressionVisitor.visitListPattern (cognitive 28): MatchingExpressionVisitor.visitListPattern has cognitive complexity 28 (threshold 15). Drivers by points: if/else 17 (26 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"99723a18b7869e386da70355ee3cddf84f848f8c6efe60299fdf305b299d61d6"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.getString (cognitive 28): MiniJsParser.getString has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (22 pts), boolean chains 5, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"d294f0af49578d29bdf9e7f242113f7e6d0cc64a00bea3769862ee8a1e65abbd"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._checkFormalParameters (cognitive 28): _Visitor._checkFormalParameters has cognitive complexity 28 (threshold 15). Drivers by points: if/else 11 (25 pts), boolean chains 2, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/strict_top_level_inference.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca2a3486022d3a8f3d01c6d47267d0cb51f55d075ec9246ea532a263b79b10d"}},{"ruleId":"D2","level":"warning","message":{"text":"ConcreteType.intersection (cognitive 28): ConcreteType.intersection has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (25 pts), loops 1 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"8380425831a20cff589de765f944635429a4d0e396ea9e708ab2e925b9fc2676"}},{"ruleId":"D2","level":"warning","message":{"text":"bin_to_coff.main (cognitive 28): bin_to_coff.main has cognitive complexity 28 (threshold 15). Drivers by points: if/else 17 (19 pts), ternaries 4 (5 pts), boolean chains 4 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/bin_to_coff.py"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac4e8a447ab1698f9f67821bb913eb4cf19086f6720c8bc18aace7e2a4e0e56"}},{"ruleId":"D2","level":"warning","message":{"text":"DartiumBackend._GenerateNativeBinding (cognitive 28): DartiumBackend._GenerateNativeBinding has cognitive complexity 28 (threshold 15). Drivers by points: if/else 14 (25 pts), boolean chains 2, ternaries 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d50f9f18022a9357016ea744beeca757fa8a0f18ed4ebde0d0c42e17dc0cf3b"}},{"ruleId":"D2","level":"warning","message":{"text":"D3SymbolTreeMap.D3SymbolTreeMap._clone (cognitive 28): D3SymbolTreeMap.D3SymbolTreeMap._clone has cognitive complexity 28 (threshold 15). Drivers by points: if/else 15 (24 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 10). This file\u0027s own header attributes it to another copyright holder, so it is code this repository carries rather than code it wrote: restructuring the body in place forks it from upstream and turns every future re-sync into a manual merge. The performable moves are to leave the body as close to its upstream form as possible and keep it behind a narrow interface of your own, and to re-sync it when upstream changes \u2014 or, if it has already diverged far enough that you maintain it here, adopt it deliberately and then split the body into named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"48f1d8c5a91fcb020106c9512f6d47ec3b01c006d7cf193228dd7300606c00c4"}},{"ruleId":"D2","level":"warning","message":{"text":"AstNodeImplGenerator._generateNodeGettersSetters (cognitive 27): AstNodeImplGenerator._generateNodeGettersSetters has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (19 pts), ternaries 2 (7 pts), loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5853ad5e030b535e19064262449ebf337a4867a13af5958ce373593760cc7c1"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator.getFieldDeclaration (cognitive 27): BytecodeGenerator.getFieldDeclaration has cognitive complexity 27 (threshold 15). Drivers by points: if/else 20 (23 pts), boolean chains 4 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"6965fbe4c4e8a687171707c2f698949910f0106f2e306ec448c9e61c84e808b2"}},{"ruleId":"D2","level":"warning","message":{"text":"AstCodeGenerator._setupLocalParameters (cognitive 27): AstCodeGenerator._setupLocalParameters has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 4 (5 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d2ffa8458f24449cca31aa213b2209e9872fed27c749612d7dc863cf9e33c2"}},{"ruleId":"D2","level":"warning","message":{"text":"DevToolsServer._serveDevToolsWithArgs (cognitive 27): DevToolsServer._serveDevToolsWithArgs has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 5, ternaries 4, match/switch 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"761f3a1ad69401929d76d9bb098f32bac702d8efc22a82329011a66334ba163f"}},{"ruleId":"D2","level":"warning","message":{"text":"AstIndexerAndIgnoreCollector._checkCommentAndIgnoreCoverageWithBeginAndEnd (cognitive 27): AstIndexerAndIgnoreCollector._checkCommentAndIgnoreCoverageWithBeginAndEnd has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (11 pts), boolean chains 8, loops 4 (8 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f9107aa945110b775677191a304c9859963ea6689f43f432585299ea25f6b8"}},{"ruleId":"D2","level":"warning","message":{"text":"_KeyboardEventHandler._firesKeyPressEvent (cognitive 27): _KeyboardEventHandler._firesKeyPressEvent has cognitive complexity 27 (threshold 15). Drivers by points: boolean chains 21, if/else 5, match/switch 1. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/KeyboardEventStream.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3d444eda2dabc35e514df46558df07545100a8587be31d2e040ffd2f77f94a1"}},{"ruleId":"D2","level":"warning","message":{"text":"_SyncStarIterator.moveNext (cognitive 27): _SyncStarIterator.moveNext has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (21 pts), error handling 1 (3 pts), boolean chains 2, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"37b2b00d9f3371cf8a167dc30b600d1886c2aedaa89fd304ffc5ebdfabba60cd"}},{"ruleId":"D2","level":"warning","message":{"text":"BoxedDouble.computeRemainder (cognitive 27): BoxedDouble.computeRemainder has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (19 pts), loops 4 (6 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/boxed_double.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"740f66bc4305e962a7dc98db5d044ec0ca2ac5a9b6559b2c35bf129bb7b73b03"}},{"ruleId":"D2","level":"warning","message":{"text":"LinearScanRegisterAllocator.allocateFreeRegister (cognitive 27): LinearScanRegisterAllocator.allocateFreeRegister has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (26 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"dadff7618b71be67173a69fee3d6236fd6ba941d7eee16e703595a2800cfe335"}},{"ruleId":"D2","level":"warning","message":{"text":"LinearScanRegisterAllocator.evictIntersection (cognitive 27): LinearScanRegisterAllocator.evictIntersection has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (25 pts), ternaries 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":865}}}],"partialFingerprints":{"codehealthFindingId/v1":"99ac9ecad7a5041b19c13689a7703ce87ec2a0cdd565da370c389c95b1ca4623"}},{"ruleId":"D2","level":"warning","message":{"text":"Simplification.visitBinaryIntOp (cognitive 27): Simplification.visitBinaryIntOp has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (19 pts), match/switch 3 (7 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/simplification.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a5f787f2d840786625a36f3fdb98e9b49ec285cc9883d042386319b10eec9ca"}},{"ruleId":"D2","level":"warning","message":{"text":"PromotionModel.joinPromotedTypes (cognitive 27): PromotionModel.joinPromotedTypes has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (26 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":5115}}}],"partialFingerprints":{"codehealthFindingId/v1":"441d58230aa4fc08616ef8210ef1e8afe6cc354fe93b9deafcfb2b785c983734"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseListPatternSuffix (cognitive 27): Parser.parseListPatternSuffix has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (25 pts), boolean chains 1, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11989}}}],"partialFingerprints":{"codehealthFindingId/v1":"076caf866621317f2b28d984620c7c977260ae9e882cbb7051d8fc8bc346ac81"}},{"ruleId":"D2","level":"warning","message":{"text":"DartUnitSignatureComputer.compute (cognitive 27): DartUnitSignatureComputer.compute has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (19 pts), ternaries 2 (4 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_signature.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc8b5e7c4f617d5b953c7552920b156bade29b528ab05f24582b0cf474a1381b"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportElementsComputer._computeUpdate (cognitive 27): ImportElementsComputer._computeUpdate has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (21 pts), loops 3 (4 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/import_elements_computer.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"386cabfe0fe30da51c3d0697b15fe6469083000809b7e132760efdeb23168740"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeHierarchyComputerHelper.findMemberElement (cognitive 27): TypeHierarchyComputerHelper.findMemberElement has cognitive complexity 27 (threshold 15). Drivers by points: if/else 16 (22 pts), boolean chains 4, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/search/type_hierarchy.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"de97420e1814ce65d089fe46d81f197f6ad90614ef583108ebb83a6fdd6d16ee"}},{"ruleId":"D2","level":"warning","message":{"text":"TokenData.fromSelection (cognitive 27): TokenData.fromSelection has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 8, loops 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"96ba3045361fe1b0702b0fc6f7f75f49eb92415bc78fbaf41b3972b81ff84c7d"}},{"ruleId":"D2","level":"warning","message":{"text":"UriHelper.addSuggestions (cognitive 27): UriHelper.addSuggestions has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (24 pts), boolean chains 3 (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/uri_helper.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b05e9903acf31d8e62ae2f435e1d807c2115ae336253fffc6496db74749fdc"}},{"ruleId":"D2","level":"warning","message":{"text":"_ImportRemoveShow.compute (cognitive 27): _ImportRemoveShow.compute has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 4 (7 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/ambiguous_import_fix.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6657abe5fdc4cac30be0ce568fbbe16de08e736619f65d099d3f92aaf4a1aad"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertDocumentationIntoLine.compute (cognitive 27): ConvertDocumentationIntoLine.compute has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (23 pts), loops 2, boolean chains 1, ternaries 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_documentation_into_line.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddf251e11a04ded8a27b6c95dfc8a037b31a6cc19a79782db1fbc3f5757ca427"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertForEachToForLoop.compute (cognitive 27): ConvertForEachToForLoop.compute has cognitive complexity 27 (threshold 15). Drivers by points: if/else 17 (24 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_for_each_to_for_loop.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f49d7560c5a46d0685d45d929eb009f413e6e00253241b7b8343a33938a43a"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToSwitchExpression._convertArgumentSwitchExpression (cognitive 27): ConvertToSwitchExpression._convertArgumentSwitchExpression has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (15 pts), ternaries 2 (7 pts), loops 2, match/switch 1 (2 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"6478a5aadbfb9ec01c12c6833df955ac0d96982cfe62a2371414f091dd1ba020"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateGetter.compute (cognitive 27): CreateGetter.compute has cognitive complexity 27 (threshold 15). Drivers by points: if/else 19 (27 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"19dcaa1ce15b27dc21cda069a228d4eb41234e54a6c660c0b0d0a8296a15f201"}},{"ruleId":"D2","level":"warning","message":{"text":"_ReplacementEditBuilder.visitSimpleIdentifier (cognitive 27): _ReplacementEditBuilder.visitSimpleIdentifier has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (22 pts), boolean chains 5 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef0c086037002bdfdfb03d2d33e49853e1cae181dc5781dfb4e15d4718f0026c"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisDriverScheduler._run (cognitive 27): AnalysisDriverScheduler._run has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 4 (7 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":2736}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6065b8d54a976efc5e574db34cae97dae4e5857407be8f4c7e4a8d74e92888d"}},{"ruleId":"D2","level":"warning","message":{"text":"_ElementMapperV2._visitIdentifier (cognitive 27): _ElementMapperV2._visitIdentifier has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 7 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/element_locator.dart"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"cac5facb792a90ba10481629937bf398db73375f153e441cdb7af204e3737345"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorInvocationEvaluator._checkFields (cognitive 27): _ConstructorInvocationEvaluator._checkFields has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (21 pts), ternaries 1 (3 pts), boolean chains 2, loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3158}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fe51b1927e565bbce0cc444aa1165e4025d3a5e370694e43945f6e7478f6607"}},{"ruleId":"D2","level":"warning","message":{"text":"DartdocDirectiveInfo.processDartdoc (cognitive 27): DartdocDirectiveInfo.processDartdoc has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (23 pts), ternaries 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dartdoc/dartdoc_directive_info.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"23d9d3df5bf4bbd1fbe8cf4187c67ad4fc4968a465c055e144106817941fe157"}},{"ruleId":"D2","level":"warning","message":{"text":"_Constructor.updateWithParameters (cognitive 27): _Constructor.updateWithParameters has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (25 pts), boolean chains 1, loops 1 (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/constructor_fields_verifier.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"448a36072cfd5e6cc5bdd8ce681b4ed1ba4e75be37fc8996349747012c7ad016"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalyzerTypeOperations._getInterfaceFieldTypes (cognitive 27): AnalyzerTypeOperations._getInterfaceFieldTypes has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/exhaustiveness.dart"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"5348e230ad9999799ac6721598090902db0744ae1ec4eb15c18e52a072fc3531"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor.checkForBodyMayCompleteNormally (cognitive 27): ResolverVisitor.checkForBodyMayCompleteNormally has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 5, match/switch 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab6019b4b521f28200a3d04a8e32ae51472077558a1dbce65bc9ab15fe3d88b9"}},{"ruleId":"D2","level":"warning","message":{"text":"_InfoBuilder.build (cognitive 27): _InfoBuilder.build has cognitive complexity 27 (threshold 15). Drivers by points: if/else 18 (22 pts), loops 3 (5 pts) (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e6a4b7985468190dacb5cc4fa653e0f3c980755f40efe22390af91fec7f1a56"}},{"ruleId":"D2","level":"warning","message":{"text":"InstanceMemberInferrer._inferConstructor (cognitive 27): InstanceMemberInferrer._inferConstructor has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (22 pts), match/switch 1 (3 pts), boolean chains 1, loops 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"82be2a332704dd0dd7bdc684e2eb02ce767b82d4289aff6d7985d3105b5043b8"}},{"ruleId":"D2","level":"warning","message":{"text":"InstanceMemberInferrer._inferExecutable (cognitive 27): InstanceMemberInferrer._inferExecutable has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 4, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2c7255b4ffaadd560dc8834b2a38ad611530076a612438e787603ac1cde756"}},{"ruleId":"D2","level":"warning","message":{"text":"Linker._buildExportScopes (cognitive 27): Linker._buildExportScopes has cognitive complexity 27 (threshold 15). Drivers by points: loops 13 (19 pts), if/else 4 (8 pts) (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/link.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb46f913f05251b2c9b2aea868eeb8a3a5aaf0b95ea46d74b7e8937b4287ef22"}},{"ruleId":"D2","level":"warning","message":{"text":"DartEditBuilderImpl._getBaseNameFromUnwrappedExpression (cognitive 27): DartEditBuilderImpl._getBaseNameFromUnwrappedExpression has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (25 pts), loops 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1266}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ecebb2e2e44f1297c19d50526f49b2cdbed1a5f580d7e9f2958916ed49205e"}},{"ruleId":"D2","level":"warning","message":{"text":"DartFileEditBuilderImpl._insertDocImportIntoBlockDocComment (cognitive 27): DartFileEditBuilderImpl._insertDocImportIntoBlockDocComment has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 6, ternaries 2 (6 pts), loops 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":3094}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd14516a584162ea4aff1ef99cf5a60ba926669ee2661a2e6776b41e1693e518"}},{"ruleId":"D2","level":"warning","message":{"text":"_OpTypeAstVisitor.visitRegularFormalParameter (cognitive 27): _OpTypeAstVisitor.visitRegularFormalParameter has cognitive complexity 27 (threshold 15). Drivers by points: boolean chains 15, if/else 9 (12 pts) (nesting depth added 3). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":1514}}}],"partialFingerprints":{"codehealthFindingId/v1":"c661cd877eadf0540223bf44d32b21918cd8bd7f9bc87a60bc48b512003d1085"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelInfoCollector.visitClass (cognitive 27): KernelInfoCollector.visitClass has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (22 pts), loops 2, ternaries 1 (2 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"d408a88c20514eadce6391225497eb3de1accd9164b86d072a8e958747def96d"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeEnqueuer._processNativeBehavior (cognitive 27): NativeEnqueuer._processNativeBehavior has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 10, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/enqueue.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"5868d0a5be3dd49cd01c9b96c0fbebdd6eab062d92f686e9dfc0413777b7400e"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.visitSwitchInfo (cognitive 27): SsaCodeGenerator.visitSwitchInfo has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 3 (7 pts), boolean chains 4 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"e38e08ea302ea7656ff5693a5e04418c7b652a1ed73a23f4a927a0a12121a6ea"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.visitInvokeSuper (cognitive 27): SsaCodeGenerator.visitInvokeSuper has cognitive complexity 27 (threshold 15). Drivers by points: if/else 18 (25 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2685}}}],"partialFingerprints":{"codehealthFindingId/v1":"048bae06ed1c4589ed4f0462b7ed0757896ec263a40f9d45945f0ec7122bc4a5"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionMerger.analyzeInputs (cognitive 27): SsaInstructionMerger.analyzeInputs has cognitive complexity 27 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 2 (6 pts), boolean chains 5 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcff8adc506a1306e78f1fae3966944ef19d4e4494e859d714cde678d0899ed3"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionMerger.tryMergingExpressions (cognitive 27): SsaInstructionMerger.tryMergingExpressions has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 2, loops 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1100}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6fc8a4ef9128c26f5f31b2b4955d8e5c95e37767a3f7a661564d852db6e7549"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitInvokeDynamicMethod (cognitive 27): SsaInstructionSimplifier.visitInvokeDynamicMethod has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 4, ternaries 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1028}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d89b09284a71658baa88fb049b3ee9770b0d868d0645c14400036d7f79fbf46"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaLiveBlockAnalyzer.visitSwitch (cognitive 27): SsaLiveBlockAnalyzer.visitSwitch has cognitive complexity 27 (threshold 15). Drivers by points: if/else 6 (20 pts), loops 1 (4 pts), boolean chains 3 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3548}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c53d21b0cfdf41669bb9b69895926f78a93f635e5c44add38d184ff3cb3022"}},{"ruleId":"D2","level":"warning","message":{"text":"DartCliDebugAdapter.launchAndRespond (cognitive 27): DartCliDebugAdapter.launchAndRespond has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14 (17 pts), boolean chains 5, ternaries 4 (5 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart_cli_adapter.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"a53baacb8d1fc859b743e28d62cc626b9dd988c109df28c45d524a94ce88a65c"}},{"ruleId":"D2","level":"warning","message":{"text":"ProtocolConverter.convertVmToDapStackFrame (cognitive 27): ProtocolConverter.convertVmToDapStackFrame has cognitive complexity 27 (threshold 15). Drivers by points: boolean chains 11, ternaries 10, if/else 5 (6 pts) (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8f1f79350b9272ac620e3960a73e9d334b57a74008d56a163b9b9b81c033b4c"}},{"ruleId":"D2","level":"warning","message":{"text":"MigrateCommand.run (cognitive 27): MigrateCommand.run has cognitive complexity 27 (threshold 15). Drivers by points: if/else 13 (19 pts), boolean chains 6, error handling 1, ternaries 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/migrate.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d1fcec345441d239a090c6bf50290e537d432d6490654052c6b8c0f44f4f25d"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.propertyNameOut (cognitive 27): Printer.propertyNameOut has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (25 pts), boolean chains 2 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1476}}}],"partialFingerprints":{"codehealthFindingId/v1":"72fc534ecbe114896e774132eedfddab57eae2687939c702d65b2a0eb778471e"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractOrExternalFieldEncoding._updateMemberTypes (cognitive 27): AbstractOrExternalFieldEncoding._updateMemberTypes has cognitive complexity 27 (threshold 15). Drivers by points: if/else 11 (24 pts), boolean chains 3 (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1141}}}],"partialFingerprints":{"codehealthFindingId/v1":"e81e87a7fc9aaf8d95bbe605380db2f4893077b0075f782527b6f97562f27360"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.buildRedirectingInitializer (cognitive 27): BodyBuilderImpl.buildRedirectingInitializer has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (23 pts), loops 1 (4 pts) (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":1862}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a1d2f6718594a71c4a8f7e7d8d7390ec19df636341742139fafac00d39dc42"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantsTransformer.visitBlock (cognitive 27): ConstantsTransformer.visitBlock has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (22 pts), loops 2 (5 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"b941f62eb5656b7d7f5a0a5a6feb105e0a467c02af550c218f5a9b3ee1c265dc"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementConstantEvaluator.visitTryCatch (cognitive 27): StatementConstantEvaluator.visitTryCatch has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (23 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 17). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":6339}}}],"partialFingerprints":{"codehealthFindingId/v1":"beb953f9f9b9839f434093c9c53ad21d99c27f6d9e3e3c4fd39dfa7f1aac2133"}},{"ruleId":"D2","level":"warning","message":{"text":"LoweredTypedefTearOff.fromExpression (cognitive 27): LoweredTypedefTearOff.fromExpression has cognitive complexity 27 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 1 (4 pts), boolean chains 3 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constructor_tearoff_lowering.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"41bbbe81c3e13c0a54332ecd90206ccd2428cdb14dc7339a79a26c679af168f5"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassHierarchyBuilder._getLegacyLeastUpperBoundInternal (cognitive 27): ClassHierarchyBuilder._getLegacyLeastUpperBoundInternal has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 6, loops 3 (5 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/hierarchy_builder.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"4432fc9c84114fede18a5d0dc118627021a469fe287aecbf11e3954fc705a3bd"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.endClassDeclaration (cognitive 27): OutlineBuilder.endClassDeclaration has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 2 (6 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1407}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0fbe36b78b5da3fd0d84359634d305b96f3b1dd3931665c186323b98bddf108"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceClassBuilder.checkMethodOverride (cognitive 27): SourceClassBuilder.checkMethodOverride has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 6, loops 3 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1890}}}],"partialFingerprints":{"codehealthFindingId/v1":"4345a30a181dfbab9efa72083bf95de0fe5326a043eea9243828b2108bee854f"}},{"ruleId":"D2","level":"warning","message":{"text":"SuccessfulInferenceResult.applyResult (cognitive 27): SuccessfulInferenceResult.applyResult has cognitive complexity 27 (threshold 15). Drivers by points: if/else 17 (25 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_results.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"669758e04e4d079a42155ea1bf873ca4376532e702ac2c3f682c9bcdb58fdfa7"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitMethodDeclaration (cognitive 27): _Visitor.visitMethodDeclaration has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (25 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_renaming_method_parameters.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"934747e815cd7dcf9b7ea478141131e0eaad1cba1e307bccba8bee008714a593"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitLexeme (cognitive 27): _Visitor.visitLexeme has cognitive complexity 27 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 7, ternaries 2 (5 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_string_escapes.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"6268e76f3402de66f8e84edd1a5730f8e6df18c80e950a4f16ea419ff712e8ff"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncStateVisitor.visitSwitchStatement (cognitive 27): AsyncStateVisitor.visitSwitchStatement has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (23 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"99f2e1e8e90382f62697a6f9ccf7d3ef96c1fcc408d1c265a13d370f194ec2b9"}},{"ruleId":"D2","level":"warning","message":{"text":"FileInfo.fromReaderDwarf5 (cognitive 27): FileInfo.fromReaderDwarf5 has cognitive complexity 27 (threshold 15). Drivers by points: if/else 6 (14 pts), ternaries 3 (6 pts), loops 3 (4 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/dwarf.dart"},"region":{"startLine":1153}}}],"partialFingerprints":{"codehealthFindingId/v1":"22e66f034c383fe09de3859ad0b440e34682b3bf3b22339c9598fd98d2694325"}},{"ruleId":"D2","level":"warning","message":{"text":"BreakCommand.run (cognitive 27): BreakCommand.run has cognitive complexity 27 (threshold 15). Drivers by points: if/else 10 (19 pts), error handling 2 (6 pts), boolean chains 1, ternaries 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c174ba1ef105bac55713686053a37c34b204994bdd37b726a8ee7c97b5092a5"}},{"ruleId":"D2","level":"warning","message":{"text":"_SelectorApproximation.observeArgs (cognitive 27): _SelectorApproximation.observeArgs has cognitive complexity 27 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 4 (6 pts), boolean chains 4, ternaries 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf5281cde453121ebd0919314c86079c4c518112f45d7f56c75f45e735c33b21"}},{"ruleId":"D2","level":"warning","message":{"text":"_InvocationsCache.getInvocation (cognitive 27): _InvocationsCache.getInvocation has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (26 pts), ternaries 1 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1153}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa8e37d0b2f9ef709cc4bddee4cf4ff2a0cbe51d32f2ee1005b8beb526158c2e"}},{"ruleId":"D2","level":"warning","message":{"text":"_TFClassImpl._initDispatchTargets (cognitive 27): _TFClassImpl._initDispatchTargets has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 4, loops 3 (4 pts), ternaries 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"0110df88385eae0ee23db5138ec2d37982a656c65a7a2a374b7846e08316b75c"}},{"ruleId":"D2","level":"warning","message":{"text":"RuntimeType.isSubtypeOfRuntimeType (cognitive 27): RuntimeType.isSubtypeOfRuntimeType has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15 (19 pts), boolean chains 7, loops 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1640}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c5d379770e43edb896a7022d545d493f3780f483771253c90be28060d8f1d0"}},{"ruleId":"D2","level":"warning","message":{"text":"build.Build (cognitive 27): build.Build has cognitive complexity 27 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 6 (12 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/build.py"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7fa6711eb7667b58b15060185d7ebbf5f389ef625e007128732d22cb187e79"}},{"ruleId":"D2","level":"warning","message":{"text":"generate_blink_file._Emit_Blink_Operation (cognitive 27): generate_blink_file._Emit_Blink_Operation has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12 (20 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generate_blink_file.py"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c1a34c9f345d41c1a9bf904ca06b14d75dda1285c0663c20b0fa7cd9da6d66c"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous)::onRcpMessage (cognitive 27): (anonymous)::onRcpMessage has cognitive complexity 27 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 2 (4 pts), ternaries 2 (4 pts), boolean chains 1, error handling 1, other 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/asset/sandbox.js"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"0583469b5cca7f355b01c9ca047b8c82382a2abc809ae1899b480b06c53fab47"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator._checkArguments (cognitive 26): BytecodeGenerator._checkArguments has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 5 (8 pts), boolean chains 4 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":2444}}}],"partialFingerprints":{"codehealthFindingId/v1":"329d794d84a7e02b2ac46a19c52d95cc2d695780a01d2e7666d1a055ef709e8a"}},{"ruleId":"D2","level":"warning","message":{"text":"AstCodeGenerator.visitEqualsCall (cognitive 26): AstCodeGenerator.visitEqualsCall has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (21 pts), boolean chains 5 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":1954}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bd539a51a27e78452fdb9f54c06cfad94937f6328b34902a5f69872d76f3aca"}},{"ruleId":"D2","level":"warning","message":{"text":"ClosedWorldClassHierarchy.sanityChecks (cognitive 26): ClosedWorldClassHierarchy.sanityChecks has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 7 (10 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"871b280b1aabee3bb89d5d9eddd5cc55fc76168061284a94114902a4abcc601f"}},{"ruleId":"D2","level":"warning","message":{"text":"Configuration.optionsEqual (cognitive 26): Configuration.optionsEqual has cognitive complexity 26 (threshold 15). Drivers by points: boolean chains 26. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac3e140e81e83e961efb8d0f713b5e0cfefd6cbd3f04b64137345fd8a9da6b29"}},{"ruleId":"D2","level":"warning","message":{"text":"KeyCode.isCharacterKey (cognitive 26): KeyCode.isCharacterKey has cognitive complexity 26 (threshold 15). Drivers by points: boolean chains 24, if/else 2. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/KeyCode.dart"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"67ca0850a7c2cb0d38757fd190fb933cb571d21f059867bd8e7ee5388add7fab"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64Assembler.fmov (cognitive 26): Arm64Assembler.fmov has cognitive complexity 26 (threshold 15). Drivers by points: ternaries 6 (18 pts), match/switch 3 (5 pts), if/else 3 (nesting depth added 14). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":2413}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e10d9e4e487c7345d80e7a81f9f4358ee1f41e6824ffb3bd6b2e364248fc8bb"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64CodeGenerator.visitTypeTest (cognitive 26): Arm64CodeGenerator.visitTypeTest has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 4, ternaries 2 (4 pts), match/switch 1 (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1764}}}],"partialFingerprints":{"codehealthFindingId/v1":"87af41466b42e3b685893f8a1338e89b9356bac0db574764d01020474c2f61bf"}},{"ruleId":"D2","level":"warning","message":{"text":"Uri._validateIPvFutureAddress (cognitive 26): Uri._validateIPvFutureAddress has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (23 pts), loops 2, boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":1546}}}],"partialFingerprints":{"codehealthFindingId/v1":"53928562e8b43fcd833c0fed0a2b7e1073596a475a1ceb13b46a8c8a0023f4f0"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri.replace (cognitive 26): _Uri.replace has cognitive complexity 26 (threshold 15). Drivers by points: if/else 17 (19 pts), boolean chains 7 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2282}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3aa3afe6312fdd306009264af2401fff8447727d510ae8571aed215ddf1fc64"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantPropagation.visitPhi (cognitive 26): ConstantPropagation.visitPhi has cognitive complexity 26 (threshold 15). Drivers by points: if/else 14 (25 pts), loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/constant_propagation.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a13d0c5e6854f75f747570fa50e9060767befb55c6e8e67f2a3a6e1257d770b"}},{"ruleId":"D2","level":"warning","message":{"text":"Utf8BytesScanner.scanUntilLineEnd (cognitive 26): Utf8BytesScanner.scanUntilLineEnd has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (22 pts), boolean chains 2, loops 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"8418264f05bd92e59f6bbe06935f8dcd61b3d7895510b7add0dc63c1defa983c"}},{"ruleId":"D2","level":"warning","message":{"text":"Utf8BytesScanner.skipSpaces (cognitive 26): Utf8BytesScanner.skipSpaces has cognitive complexity 26 (threshold 15). Drivers by points: boolean chains 18, if/else 4 (6 pts), loops 2 (nesting depth added 2). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"96759e6b1e2e4465e21d3f0d81996310d2410e91e998d79a8bac9beb6afc779a"}},{"ruleId":"D2","level":"warning","message":{"text":"ExportChecker.visitClass (cognitive 26): ExportChecker.visitClass has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 10, loops 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/export_checker.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"12322dc43d65d869dab09d9f34365474fc4f838121a726d82d2ac2c6247e246e"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginManager._createPackageConfigFile (cognitive 26): PluginManager._createPackageConfigFile has cognitive complexity 26 (threshold 15). Drivers by points: if/else 4 (14 pts), loops 3 (10 pts), error handling 1 (2 pts) (nesting depth added 18). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_manager.dart"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f9e437e1fa77b02b36b416faff2a11dc7e5d18647757b324884fcaa2201f04b"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass._forPattern (cognitive 26): InScopeCompletionPass._forPattern has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (23 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4096}}}],"partialFingerprints":{"codehealthFindingId/v1":"175a8f27784b8be161ee61787a5b37fc31e232332341d2a1943ebb3747b44028"}},{"ruleId":"D2","level":"warning","message":{"text":"AddAwait.compute (cognitive 26): AddAwait.compute has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (19 pts), ternaries 1 (4 pts), boolean chains 2, match/switch 1 (nesting depth added 12). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_await.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"5525a05509fa1d227801d4c1136c861b2e1637d17dbc4efa8f5526c94a3e833e"}},{"ruleId":"D2","level":"warning","message":{"text":"AddKeyToConstructors._canBeConst (cognitive 26): AddKeyToConstructors._canBeConst has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"d19d056368852a0dc97936e1c99c74f65c44b8a4f4773732103384c2d86ed3fb"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveLate._lateKeywordLocation (cognitive 26): RemoveLate._lateKeywordLocation has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (20 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_late.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"2850afa96d7cbb11cebe56fac2fe765b65323ce14451c77364a872ee6173e36a"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportOrganizer._organizeDocImportsInBlockComment (cognitive 26): ImportOrganizer._organizeDocImportsInBlockComment has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 6, ternaries 2 (6 pts), loops 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/organize_imports.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2ea35a03e03fd05112ece3dd20fc18ca699cbc01ad515a0f51d7d2cb93fdc3"}},{"ruleId":"D2","level":"warning","message":{"text":"_ContextLocator._locateRoots (cognitive 26): _ContextLocator._locateRoots has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (20 pts), loops 4 (6 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_locator.dart"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba1442e57a8fabaf29b5f6152e205c2d383d2d71c083141fc0a98ecc47c57ecd"}},{"ruleId":"D2","level":"warning","message":{"text":"AstRewriter._prepareReceiverInvocation (cognitive 26): AstRewriter._prepareReceiverInvocation has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (13 pts), ternaries 3 (8 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21bfea6d514e7109e2d942da962be1cf40b1e59d9b1432e08d961ac8060d7aa"}},{"ruleId":"D2","level":"warning","message":{"text":"InvocationInferrer._visitArguments (cognitive 26): InvocationInferrer._visitArguments has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (24 pts), boolean chains 1, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"881bc9c17761c8a7b7258ee3df6ea1d869b0b08baeef75fddfebaf71a424e963"}},{"ruleId":"D2","level":"warning","message":{"text":"VariableDeclarationResolver.resolve (cognitive 26): VariableDeclarationResolver.resolve has cognitive complexity 26 (threshold 15). Drivers by points: if/else 15 (17 pts), boolean chains 8, ternaries 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/variable_declaration_resolver.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"822a806f890bc3955c0138454735ef5251fb07de978eafc054a3ea81f26dcea9"}},{"ruleId":"D2","level":"warning","message":{"text":"YieldStatementResolver._checkForYieldOfInvalidType (cognitive 26): YieldStatementResolver._checkForYieldOfInvalidType has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (23 pts), ternaries 1 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a79f145042d6eb4891e493c3563f8e54f797153c3de86cc5d33f828a9ef1bbe"}},{"ruleId":"D2","level":"warning","message":{"text":"DartdocDirectiveInfo._stripDelimiters (cognitive 26): DartdocDirectiveInfo._stripDelimiters has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (24 pts), boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dartdoc/dartdoc_directive_info.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"becd816928f9efc18503ae42d0e0549282fe6ab9c1371081b3bb7fcd29d85328"}},{"ruleId":"D2","level":"warning","message":{"text":"AstBuilder.doDotExpression (cognitive 26): AstBuilder.doDotExpression has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (14 pts), boolean chains 8, ternaries 2 (4 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":859}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eefa79e8865322bb471a8aec34ef2c0263372bb26e5c88d164d1abe55c9c053"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier.visitFieldDeclaration (cognitive 26): ErrorVerifier.visitFieldDeclaration has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (19 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":1208}}}],"partialFingerprints":{"codehealthFindingId/v1":"8423878630bf3e88bc18147030676f65645271e6c40770ff576d7418e8463300"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForNonFinalFieldInEnum (cognitive 26): ErrorVerifier._checkForNonFinalFieldInEnum has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (20 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":7150}}}],"partialFingerprints":{"codehealthFindingId/v1":"91cea07055b37aa0d6ba59ff346d1b2823eb90614f9198ffdccc0a23bf2f1854"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForNotInitializedFieldDeclaration (cognitive 26): ErrorVerifier._checkForNotInitializedFieldDeclaration has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":7248}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ad099292e07d3c2f4c51310fca66f59328b6ac69f845a9c4f212a6c1fde0168"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier.visitCascadeMethodInvocation (cognitive 26): FfiVerifier.visitCascadeMethodInvocation has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (21 pts), boolean chains 2, loops 1 (2 pts), match/switch 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"753b731ac068283d81af84b7eb226518642c7f469314772ea32a9b11424205cc"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorInitializerResolver._constructorElement (cognitive 26): ConstructorInitializerResolver._constructorElement has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 3 (8 pts), match/switch 1 (2 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"a864ecb872a51d4b55006b2e17f10ebb0bc97267b2bbf9c5ad8e42bee9de83fa"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultTypesBuilder._breakSelfCycles (cognitive 26): DefaultTypesBuilder._breakSelfCycles has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (17 pts), loops 3 (8 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/default_types_builder.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"f43db1afe3d98b8a91d0e919415bcfe6789d8b146c2f2f34098f9c6d2702d0aa"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementBuilder._buildInstanceElementMembers (cognitive 26): ElementBuilder._buildInstanceElementMembers has cognitive complexity 26 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 4 (8 pts), match/switch 2 (6 pts), ternaries 1 (3 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9641a70d2b228d8c0ecb0ea2c5d8f2c7188b61e29cbf200eb6e91ca23ab1ac9"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentBuilder.visitPrimaryConstructorDeclaration (cognitive 26): FragmentBuilder.visitPrimaryConstructorDeclaration has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (18 pts), boolean chains 7, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":2027}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd0b8c036eccccec1cb048c79ff5e5bc53745694507e86506bc838bf7ac18723"}},{"ruleId":"D2","level":"warning","message":{"text":"VarianceBuilder.perform (cognitive 26): VarianceBuilder.perform has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 6 (12 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/variance_builder.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7bf5198fdbb32828e986bfd52d3e86a2448100928f7b537dcc3b1619b2cf10b"}},{"ruleId":"D2","level":"warning","message":{"text":"FuzzyMatcher.fuzzyMap (cognitive 26): FuzzyMatcher.fuzzyMap has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (10 pts), boolean chains 9, ternaries 2 (5 pts), loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/utilities/fuzzy_matcher.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b00950f05fc8fa3d3f0044507d14bdf46a2ea582eabe1c084d6207c4f9969e0"}},{"ruleId":"D2","level":"warning","message":{"text":"Compiler.produceKernel (cognitive 26): Compiler.produceKernel has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (25 pts), boolean chains 1 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/compiler.dart"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e9c9745f80abfcfc0a685281035aadbc25345632501231c2c281bc7c83a9d3"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementInfoCollector.visitClass (cognitive 26): ElementInfoCollector.visitClass has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (12 pts), loops 3 (8 pts), boolean chains 4, ternaries 1 (2 pts) (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a46a68aa6e80e99849b1de7e5482afcafbc2be0a989c2067ef4b069301c1268"}},{"ruleId":"D2","level":"warning","message":{"text":"DumpInfoAnnotator.visitClass (cognitive 26): DumpInfoAnnotator.visitClass has cognitive complexity 26 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 3 (8 pts), boolean chains 5 (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1348}}}],"partialFingerprints":{"codehealthFindingId/v1":"109549a9c677936bf57724de41b3402dd1b854d5e0bd4fb8eee7134ff20e38ef"}},{"ruleId":"D2","level":"warning","message":{"text":"_GraphGenerator.addNode (cognitive 26): _GraphGenerator.addNode has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 5 (10 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_dump.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"aefb643c29f4b09677989b1e63b3bffa2c490cbe80b33e197d0ff29afd55a987"}},{"ruleId":"D2","level":"warning","message":{"text":"UnionTypeMask.unionOfHelper (cognitive 26): UnionTypeMask.unionOfHelper has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 2 (4 pts), ternaries 1 (3 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"637081626124bc46cb4507298b5facb858962232dfa175d5137ce64408f857bd"}},{"ruleId":"D2","level":"warning","message":{"text":"OnlineJavaScriptTracer._handleNotifySteps (cognitive 26): OnlineJavaScriptTracer._handleNotifySteps has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (22 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":1644}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9d39951c6c6db3b6d22c09bf9b0746720f049f32a1834b64e94ed1717ececd3"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncRewriterBase.visitSwitch (cognitive 26): AsyncRewriterBase.visitSwitch has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (20 pts), loops 3 (5 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1571}}}],"partialFingerprints":{"codehealthFindingId/v1":"da3a475c0c9c4623577de140f1845c467fa417230c04bd2f4084b8b6a37cbae2"}},{"ruleId":"D2","level":"warning","message":{"text":"CodegenEnqueuerListener._processClass (cognitive 26): CodegenEnqueuerListener._processClass has cognitive complexity 26 (threshold 15). Drivers by points: if/else 16, boolean chains 10. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/codegen_listener.dart"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"d59b7a84375de8b75c6e3c269ae1612b38676aa6cdabfde2edb5bf1633fe34ef"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeDataBuilder.close (cognitive 26): NativeDataBuilder.close has cognitive complexity 26 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 2 (5 pts), ternaries 2 (4 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/native_data.dart"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"f022737ce689aefacb6943fad280cc809d3dfe92ab2383fdc60c49c3a54cf386"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeBehavior.processEffects (cognitive 26): NativeBehavior.processEffects has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (14 pts), match/switch 2 (6 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"b47e515edfa444cefcca7654f71553a23897e518526f7ba2de30d235075531c8"}},{"ruleId":"D2","level":"warning","message":{"text":"CompilerOptions.deriveOptions (cognitive 26): CompilerOptions.deriveOptions has cognitive complexity 26 (threshold 15). Drivers by points: if/else 20 (24 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":1077}}}],"partialFingerprints":{"codehealthFindingId/v1":"191a3f862a7c844b999e37b81a9a0ab38b61e36871ed09d7afc7d4513a736e15"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._handleInvokeStaticForeign (cognitive 26): KernelSsaGraphBuilder._handleInvokeStaticForeign has cognitive complexity 26 (threshold 15). Drivers by points: if/else 26. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5464}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4a2683cf9cbb53c46c937f429746c91818489e34765c3b99c003ac83f1c34fe"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.generateExpressionAssignment (cognitive 26): SsaCodeGenerator.generateExpressionAssignment has cognitive complexity 26 (threshold 15). Drivers by points: boolean chains 11, if/else 4 (10 pts), ternaries 1 (5 pts) (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"e505ccc763ad385b5671a42d57a589353f0004927e2a09a3642145bc1df4da54"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaGlobalValueNumberer.moveLoopInvariantCodeFromBlock (cognitive 26): SsaGlobalValueNumberer.moveLoopInvariantCodeFromBlock has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (12 pts), boolean chains 10, loops 2 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3755}}}],"partialFingerprints":{"codehealthFindingId/v1":"22d9d9d17dbf0e94099fde08555e42273bf3c05d49dc0308154576a03031b621"}},{"ruleId":"D2","level":"warning","message":{"text":"MarkdownTable.finish (cognitive 26): MarkdownTable.finish has cognitive complexity 26 (threshold 15). Drivers by points: if/else 4 (10 pts), ternaries 3 (9 pts), loops 4 (7 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/utils.dart"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1668f582acb2e5975a825183cce18b72c61140c59c92be6c7dd9d4142a3a45d"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncRewriterBase.visitSwitch (cognitive 26): AsyncRewriterBase.visitSwitch has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (20 pts), loops 3 (5 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":1615}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fdeebf76b8e85d2c687af5b117c661b456483b065381b60e3511d8554a4c078"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitClassDeclaration (cognitive 26): LibraryCompiler._emitClassDeclaration has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12 (17 pts), loops 4 (5 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1463}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f45c8a67838dc6f189bf7d641f55a41c79c91c812c2ed173bf69f99c0e4eaf"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitLibraryMembers (cognitive 26): LibraryCompiler._emitLibraryMembers has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 9, loops 3 (5 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4054}}}],"partialFingerprints":{"codehealthFindingId/v1":"228fcff452b739ceaf777a9a4bc98c92e725b359839cc06b775bad5dc0edc80e"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeRecipeGenerator.liveInterfaceTypeRules (cognitive 26): TypeRecipeGenerator.liveInterfaceTypeRules has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 6 (12 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/type_recipe_generator.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bfef015abefe68b8a00e9e621c142f56e95f19d680f07994b91f1f1a3f63f3e"}},{"ruleId":"D2","level":"warning","message":{"text":"_TypeRecipeVisitor.addLiveTypeAncestries (cognitive 26): _TypeRecipeVisitor.addLiveTypeAncestries has cognitive complexity 26 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 3 (9 pts), ternaries 1 (3 pts), boolean chains 2 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/type_recipe_generator.dart"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"5df813ebb36ac36a5688cc043961d9fbbbeda0c55764ac0f351e3d422e57f576"}},{"ruleId":"D2","level":"warning","message":{"text":"FrameComputer._collectAsyncFrames (cognitive 26): FrameComputer._collectAsyncFrames has cognitive complexity 26 (threshold 15). Drivers by points: if/else 8 (19 pts), error handling 1 (4 pts), boolean chains 2, loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/frame_computer.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"15b12aecdf85f14ee0041fef4093569f9c8194d925024b48641b50bdc1161d26"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler._loadEnsureLoadedComponents (cognitive 26): IncrementalCompiler._loadEnsureLoadedComponents has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 3 (8 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1702}}}],"partialFingerprints":{"codehealthFindingId/v1":"a76f33ba532d634732bcab097ae2047378ec5c6d849c4118e290cbd568857486"}},{"ruleId":"D2","level":"warning","message":{"text":"FactoryEncoding._computeRedirecteeType (cognitive 26): FactoryEncoding._computeRedirecteeType has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 4, loops 1 (2 pts), ternaries 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"c89d8e5a9e9c0d42d6c8ec32cfa99c3f11c555118f91811a82250ca34204277a"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.pushQualifiedReference (cognitive 26): BodyBuilderImpl.pushQualifiedReference has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (21 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9772}}}],"partialFingerprints":{"codehealthFindingId/v1":"addd5afe4bf5990cf8a13d130b36b60a8c1d620b906eedd4006ebe74c8a374b7"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalFunctionNode.toTextInternal (cognitive 26): InternalFunctionNode.toTextInternal has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (21 pts), loops 3 (5 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":6664}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe2d1326242b850a1fa9fa15ccb62c9497092cff6315498bf6ac475b102991c"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.endNamedMixinApplication (cognitive 26): OutlineBuilder.endNamedMixinApplication has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (19 pts), loops 2 (5 pts), boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2772}}}],"partialFingerprints":{"codehealthFindingId/v1":"be6839a855a8e9f49706252d4968eae14367bfabafb2b6c29f54e30bc7e8882d"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader.tokenize (cognitive 26): SourceLoader.tokenize has cognitive complexity 26 (threshold 15). Drivers by points: if/else 15 (23 pts), error handling 1 (2 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"55caa197a0dec3de1b927e21e697163e5c9841d843e74e60ebd1594382b36227"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitInstantiation (cognitive 26): InferenceVisitorImpl.visitInstantiation has cognitive complexity 26 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"7394daa89d10b4145f3e5aa80167dbbd41cf7e17e187c63a4d0794df9dcde826"}},{"ruleId":"D2","level":"warning","message":{"text":"FrontendServerClient.start (cognitive 26): FrontendServerClient.start has cognitive complexity 26 (threshold 15). Drivers by points: if/else 15 (20 pts), loops 3 (4 pts), ternaries 2 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server_client/lib/src/frontend_server_client.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd14958c6203a3dfe89963e2ccfbb13bfca77652ee044ae253c7fa07a4d8604"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.parseCall (cognitive 26): MiniJsParser.parseCall has cognitive complexity 26 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 2 (5 pts), ternaries 1 (3 pts), boolean chains 2 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc7a427d9f15f6dbd797f3f17cedad560c0cc31ec88ec89615da7c938f52e7a4"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitSwitchCase (cognitive 26): _Visitor.visitSwitchCase has cognitive complexity 26 (threshold 15). Drivers by points: if/else 17 (24 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/invalid_case_patterns.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"c172fd48e6c58f94d92892b99d8b0063e798d70fb15f75a817c7a3ba0cae7b39"}},{"ruleId":"D2","level":"warning","message":{"text":"Instance._update (cognitive 26): Instance._update has cognitive complexity 26 (threshold 15). Drivers by points: if/else 17, loops 2 (4 pts), match/switch 1 (2 pts), ternaries 2, boolean chains 1 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":3023}}}],"partialFingerprints":{"codehealthFindingId/v1":"134b76d675fad5dac3d8dd7326ad5a67fcf9de77b75428a93567b99a67a81a61"}},{"ruleId":"D2","level":"warning","message":{"text":"_TreeShakerPass2.visitExtension (cognitive 26): _TreeShakerPass2.visitExtension has cognitive complexity 26 (threshold 15). Drivers by points: ternaries 2 (10 pts), if/else 3 (8 pts), boolean chains 6, loops 1 (2 pts) (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (_TreeShakerPass2.visitExtensionTypeDeclaration) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2411}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bbf07eda0cbd45caf194943fb547305eec2edb46bd11795e7791b36c1e1fbad"}},{"ruleId":"D2","level":"warning","message":{"text":"_TreeShakerPass2.visitExtensionTypeDeclaration (cognitive 26): _TreeShakerPass2.visitExtensionTypeDeclaration has cognitive complexity 26 (threshold 15). Drivers by points: ternaries 2 (10 pts), if/else 3 (8 pts), boolean chains 6, loops 1 (2 pts) (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (_TreeShakerPass2.visitExtension) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2455}}}],"partialFingerprints":{"codehealthFindingId/v1":"58d0530f55eb1648e07d56520e7a4fa47c85fb94b9183198c3a1ed615998b3cc"}},{"ruleId":"D2","level":"warning","message":{"text":"_SuggestionBuilder.buildSuggestions (cognitive 26): _SuggestionBuilder.buildSuggestions has cognitive complexity 26 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 4 (6 pts), ternaries 1 (4 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea196568e8a2fa41295f513126e7c393ae7af810c87cd131e90f20f827853c50"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlDartGenerator._AddConstructor (cognitive 26): HtmlDartGenerator._AddConstructor has cognitive complexity 26 (threshold 15). Drivers by points: if/else 11 (16 pts), ternaries 3 (5 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"617c1510266af082878503c174374ebc0b1382c4e87733a5cf7d25e53b2235b9"}},{"ruleId":"D2","level":"warning","message":{"text":"sandbox.onRcpMessage (cognitive 26): sandbox.onRcpMessage has cognitive complexity 26 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 2 (4 pts), ternaries 2 (4 pts), boolean chains 1, error handling 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/asset/sandbox.js"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"a34181c02cd65ef821d17b263068dfc7fe5c9ce146b0fbbdb19959e6dd891401"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous)::start (cognitive 26): (anonymous)::start has cognitive complexity 26 (threshold 15). Drivers by points: if/else 14 (24 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"924864f95bd26a5fff45b129c6879c316cfe31cdd02f8d1dc9d9eabb6c3cd7de"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpectedCompletionsVisitor.visitSimpleIdentifier (cognitive 25): ExpectedCompletionsVisitor.visitSimpleIdentifier has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (22 pts), boolean chains 3 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/visitors.dart"},"region":{"startLine":679}}}],"partialFingerprints":{"codehealthFindingId/v1":"31c984ab6788408d3e0e600f35dba8a4ead91543302cada0190f4e762ab40913"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveLastFormalParameterMutation._deletionForLast (cognitive 25): RemoveLastFormalParameterMutation._deletionForLast has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 8 (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/fine/ab_mutate/mutations/impl/remove_last_formal_parameter.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6c7b2f5ab30040c8daa0af55811eff3585007491739f5d20d0f8d17b980016"}},{"ruleId":"D2","level":"warning","message":{"text":"_CodeGenerator.checkIdl (cognitive 25): _CodeGenerator.checkIdl has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13 (21 pts), loops 3 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdf3b43a53604a9be5017d3d0c27787c87fa9dfa95461395183b7375dedf5ed1"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassInfoCollector.collect (cognitive 25): ClassInfoCollector.collect has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 6 (11 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/class_info.dart"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9d3ebf5fb1842b5096d9634898a9ebe0aa3c006a9962a921dd47647f0710237"}},{"ruleId":"D2","level":"warning","message":{"text":"WasmCompilerOptions._validatePhases (cognitive 25): WasmCompilerOptions._validatePhases has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 2, match/switch 2, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/compiler_options.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"f93c501deb12317ee517d43fa0e71124d78df2ca62e04a086f9dd820bd74b5e9"}},{"ruleId":"D2","level":"warning","message":{"text":"StateMachineCodeGenerator.visitSwitchStatement (cognitive 25): StateMachineCodeGenerator.visitSwitchStatement has cognitive complexity 25 (threshold 15). Drivers by points: ternaries 6 (9 pts), if/else 6 (8 pts), loops 5 (6 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/state_machine.dart"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"bca73d04e0405809b1498d8cb29e769d3ef40fa15daf6c73dbcb7436f205e730"}},{"ruleId":"D2","level":"warning","message":{"text":"TraverseFilter.asString (cognitive 25): TraverseFilter.asString has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 4 (9 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5797c496960858c85ba54cf5837c0d61179ef5658023e0a81ece1db6ffa3f12"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeChecker.checkComponent (cognitive 25): TypeChecker.checkComponent has cognitive complexity 25 (threshold 15). Drivers by points: loops 9 (19 pts), if/else 2 (4 pts), boolean chains 2 (nesting depth added 12). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"b83d9f5ec8c218a91ee03fa1812520474f35e861cc91649b8e7a6096ea785235"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpClient._findProxyFromEnvironment (cognitive 25): _HttpClient._findProxyFromEnvironment has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15 (20 pts), boolean chains 4, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":3251}}}],"partialFingerprints":{"codehealthFindingId/v1":"882992e0f1fd2248cf64e3403299d928bd35e46cab736c00c9e57479a84e149f"}},{"ruleId":"D2","level":"warning","message":{"text":"_StringBase.createFromCharCodes (cognitive 25): _StringBase.createFromCharCodes has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14 (21 pts), boolean chains 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"3397c745109cf2848947aa3860c222fdc5bca6f24290ad852e7e1fd3ce929ff2"}},{"ruleId":"D2","level":"warning","message":{"text":"_TypeUniverse.substituteTypeArgument (cognitive 25): _TypeUniverse.substituteTypeArgument has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14 (18 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"42f7be381a29bbcaa970c96ce797a34cfc65fd78c32efe2aed0373ee9d2abc64"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlEscape._convert (cognitive 25): HtmlEscape._convert has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (22 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/html_escape.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"b822667d399fd7d36052c51e6cb8e4ca1b111efa402f0aaad2072cb2fe2fbdde"}},{"ruleId":"D2","level":"warning","message":{"text":"AstToIr._enterScope (cognitive 25): AstToIr._enterScope has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (17 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff9f610b555b323533d46b6c29510ef85c84bd99cdc1786c87dc2a7c68df5430"}},{"ruleId":"D2","level":"warning","message":{"text":"SSAComputation.rename (cognitive 25): SSAComputation.rename has cognitive complexity 25 (threshold 15). Drivers by points: loops 5 (12 pts), if/else 4 (10 pts), match/switch 1 (3 pts) (nesting depth added 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/ssa_computation.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d9d76309afe6b0ed2e40d154fb13bb870fd763b53e3a05b892b87fdcb8d2e1"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseFunctionBody (cognitive 25): Parser.parseFunctionBody has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14 (21 pts), boolean chains 3, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6531}}}],"partialFingerprints":{"codehealthFindingId/v1":"fab7706f38a8896c8471ac9f5daa1caa79fc14520c08d5296ef1f1636f75388d"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseNewExpression (cognitive 25): Parser.parseNewExpression has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 8 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8896}}}],"partialFingerprints":{"codehealthFindingId/v1":"94b739a7711daa7f1e91af0071ea4f666f6609f538db3760f3455da0b3cf3367"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseParenthesizedPatternOrRecordPattern (cognitive 25): Parser.parseParenthesizedPatternOrRecordPattern has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 7, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":12159}}}],"partialFingerprints":{"codehealthFindingId/v1":"80c7b39810996751ad61983bb1f0d0a31517edc2b032c06ffbfbd9cf651f721d"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAnalyzer.analyzeSwitchExpression (cognitive 25): TypeAnalyzer.analyzeSwitchExpression has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (22 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":2343}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebaacff54abe74bf6b09b7daf7f145110781001e825262a48fe9ed8aa3ec3d3e"}},{"ruleId":"D2","level":"warning","message":{"text":"DartUnitHoverComputer._typeDisplayString (cognitive 25): DartUnitHoverComputer._typeDisplayString has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (14 pts), boolean chains 11 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_hover.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"5202d8b8590bc7e14e5d4ef06291c5f4d19ede13123fd370afb95731f15777c2"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeDefinitionHandler.handle (cognitive 25): TypeDefinitionHandler.handle has cognitive complexity 25 (threshold 15). Drivers by points: if/else 22 (24 pts), boolean chains 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"546b5b421187c464043ffe68932b4e3f2f402eb287bddf265d379ce0401e3743"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._bestMember (cognitive 25): DeclarationHelper._bestMember has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (19 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1761}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d75704510de5883d7c8f80aec3866b7536f0c22ddb2d5c309a4ddaf5adcb08e"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._visitPattern (cognitive 25): DeclarationHelper._visitPattern has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 4 (8 pts), match/switch 1 (nesting depth added 14). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":3071}}}],"partialFingerprints":{"codehealthFindingId/v1":"f21efb68e82ed5e3b80cc206f83c5cad8cdaece290185bd062d5fed64df07a60"}},{"ruleId":"D2","level":"warning","message":{"text":"SuggestionBuilder._addBuilder (cognitive 25): SuggestionBuilder._addBuilder has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (22 pts), boolean chains 3 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":1289}}}],"partialFingerprints":{"codehealthFindingId/v1":"08d5727a041a5493338fa48d7c9fd1504d9b349549d5a21584c390496be4fe5a"}},{"ruleId":"D2","level":"warning","message":{"text":"AddNullCheck._computeTargetAndNullAwareToken (cognitive 25): AddNullCheck._computeTargetAndNullAwareToken has cognitive complexity 25 (threshold 15). Drivers by points: if/else 18 (23 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_null_check.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a0e364858eb6808eacaf82f2b5ebca85a3ff7c4b3bc31bea9155876622ecac4"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertIntoFinalField.compute (cognitive 25): ConvertIntoFinalField.compute has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13 (18 pts), boolean chains 3, match/switch 2 (3 pts), loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"59929e2c098a6efcca5df0686b40a122fd2d3540e912c12c6aae063bb45920d6"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateClass.producers (cognitive 25): CreateClass.producers has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16 (24 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_class.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f4c4dab53c2e7e31a024b190fcd71476810c97913fdc8609b7ef792130569e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionImpl.constantContext (cognitive 25): ExpressionImpl.constantContext has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (20 pts), boolean chains 2, match/switch 1 (2 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (ExpressionImpl.constantContext2) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18135}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc104a89b95500589cebe60c89ee8c8d50f9c6e5795b90b104ffb407cf76ed7d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionImpl.constantContext2 (cognitive 25): ExpressionImpl.constantContext2 has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (20 pts), boolean chains 2, match/switch 1 (2 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (ExpressionImpl.constantContext) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18203}}}],"partialFingerprints":{"codehealthFindingId/v1":"7261d3df610a8b8ebc3ef84dd573611dae4a7b25977a0f8464f5370834203809"}},{"ruleId":"D2","level":"warning","message":{"text":"AstRewriter._parsedConstructorType (cognitive 25): AstRewriter._parsedConstructorType has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 7, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae7f60f2624d86f4443b00fa8f0d72b0a6f153c69786aff70e5953665297bb0f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExitDetector.visitForStatement (cognitive 25): ExitDetector.visitForStatement has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 6 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"85effcd0c9a714f4556107c301e2dcbbdf329e7deaf89b6bbad38c7c03962d94"}},{"ruleId":"D2","level":"warning","message":{"text":"PrefixedIdentifierResolver.resolve (cognitive 25): PrefixedIdentifierResolver.resolve has cognitive complexity 25 (threshold 15). Drivers by points: if/else 19 (24 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"1decfbe82ab49b9fc5301cba6ba25d829f689df94eac3e8d5a06cff90a537585"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleIdentifierResolver._resolve2 (cognitive 25): SimpleIdentifierResolver._resolve2 has cognitive complexity 25 (threshold 15). Drivers by points: if/else 18 (21 pts), boolean chains 4 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fae651247913b67541ffc9ebb29a048286ad24b2886c3d57065fe33dbb3e0bb"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationVerifier._checkInternal (cognitive 25): AnnotationVerifier._checkInternal has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11 (19 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb7719169c9946efba0fac9c9ba062f4e91d0252c995d7d85b5bb10ed501d651"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementUsageDetector._isLocalParameter (cognitive 25): ElementUsageDetector._isLocalParameter has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (23 pts), loops 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (ElementUsageDetectorV2._isLocalParameter) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6594e929b072721b8a75de6f6aaf635948510f18a2b02c52c073f32b5ea4887"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementUsageDetectorV2.checkUsage (cognitive 25): ElementUsageDetectorV2.checkUsage has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (18 pts), loops 3 (4 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"150582ccee82f8f3396589fb2dce3ed0ba1050045b7c88ba3510429bd57685bc"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementUsageDetectorV2._isLocalParameter (cognitive 25): ElementUsageDetectorV2._isLocalParameter has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (23 pts), loops 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (ElementUsageDetector._isLocalParameter) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":1066}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f2b5b3f7f5bf03749da0ef312d532dfa31c46ddb9b0cfa1f4dc772eedbdd29"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportsVerifier.generateUnnecessaryImportHints (cognitive 25): ImportsVerifier.generateUnnecessaryImportHints has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (21 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/imports_verifier.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a9294e3dcf274c3d48bd7af880ddcbcde4060058799a0e1d04597850c7fe965"}},{"ruleId":"D2","level":"warning","message":{"text":"_ClassVerifier._checkDirectSuperTypes (cognitive 25): _ClassVerifier._checkDirectSuperTypes has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"382f3b6742dd7e62ccc7e3b6be237352b98a61ac1b8487a85e6a564dfc8184ab"}},{"ruleId":"D2","level":"warning","message":{"text":"RequiredParametersVerifier._check (cognitive 25): RequiredParametersVerifier._check has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (24 pts), loops 1 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/required_parameters_verifier.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"f75add45a671404e79f47c98826a4f4d4b79443fe934c1c83f9072ccab78fc15"}},{"ruleId":"D2","level":"warning","message":{"text":"AstBuilder.buildInitializer (cognitive 25): AstBuilder.buildInitializer has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15 (23 pts), match/switch 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"463ab189bef7aff0c5044765cf7c08a79dbb345570484f1208b7198460eca143"}},{"ruleId":"D2","level":"warning","message":{"text":"AstBuilder.endFormalParameter (cognitive 25): AstBuilder.endFormalParameter has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 9, match/switch 1, ternaries 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":1877}}}],"partialFingerprints":{"codehealthFindingId/v1":"5309b50ceb7b6240e5fa4778aea8d08d4bff58acd607b2f4f4a37ee2a4e2a531"}},{"ruleId":"D2","level":"warning","message":{"text":"DartFileEditBuilderImpl._getImportElement (cognitive 25): DartFileEditBuilderImpl._getImportElement has cognitive complexity 25 (threshold 15). Drivers by points: if/else 4 (15 pts), loops 3 (9 pts), boolean chains 1 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":2887}}}],"partialFingerprints":{"codehealthFindingId/v1":"d47bd0de716cc94c948501cc7a5a3b3612a6621e844372052dcaa7ca10226188"}},{"ruleId":"D2","level":"warning","message":{"text":"InliningTraceListener.finish (cognitive 25): InliningTraceListener.finish has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 4 (8 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"0adfcabb25cadb762d660fdc79bd3f6561c9c5fc2c93a73faf97bb913ccedc71"}},{"ruleId":"D2","level":"warning","message":{"text":"_RecipeGenerator.visitFunctionType (cognitive 25): _RecipeGenerator.visitFunctionType has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 5 (8 pts), ternaries 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_new.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2ebb29c2eb7fba1f934a1d853573953138fb6c73e4fae85c793e2c46d48c4c8"}},{"ruleId":"D2","level":"warning","message":{"text":"InlineWeeder.handleGenerativeConstructorFactory (cognitive 25): InlineWeeder.handleGenerativeConstructorFactory has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 3 (6 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9723}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8ad1799384f00186478a36e159f288e95df79755e7b85d0191f9ac11121edb1"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.simplifyExpressionPhi (cognitive 25): SsaInstructionSimplifier.simplifyExpressionPhi has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (11 pts), boolean chains 9, ternaries 4, loops 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc817e77c40fd548487e663af87fe7eebafdefd716a51d68827e1951fe2e30d1"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitFieldGet (cognitive 25): SsaInstructionSimplifier.visitFieldGet has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 1 (4 pts), boolean chains 2 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1769}}}],"partialFingerprints":{"codehealthFindingId/v1":"4db18c7dc3689f09f5712a27f0df29ec0802358cb013867541159f18d7f2f0b6"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitInvokeDynamicSetter (cognitive 25): SsaInstructionSimplifier.visitInvokeDynamicSetter has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 3 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2136}}}],"partialFingerprints":{"codehealthFindingId/v1":"afa95e778ce4955d37f5739b1a1d0156129f237093f91cdb8507fc5318ab72a5"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassHierarchyNode.printOn (cognitive 25): ClassHierarchyNode.printOn has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13 (21 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_set.dart"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"f26f5902d65717b17519588e7841e191b81af3a0a4cdc5486b48379aa126d95e"}},{"ruleId":"D2","level":"warning","message":{"text":"EvalPackageResolver.resolvePackageConfig (cognitive 25): EvalPackageResolver.resolvePackageConfig has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 4, loops 2 (4 pts), error handling 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/eval_packages.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"067115924b71231331837f552e81318b667de03fa893faa237b13b5bc108cd7d"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitClassDeclaration (cognitive 25): ProgramCompiler._emitClassDeclaration has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (17 pts), loops 4 (5 pts), boolean chains 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1170}}}],"partialFingerprints":{"codehealthFindingId/v1":"abd189d56bdcee55d925723bbaac5fad905cdb6f817ed6c75ee39ed973f90b42"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassPropertyModel._findExtensionMembers (cognitive 25): ClassPropertyModel._findExtensionMembers has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (17 pts), ternaries 1 (4 pts), boolean chains 3, loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/property_model.dart"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"56f0bc54903bac27c11e80aa24ecab92f98de1dd73d774c909a0e5c3010ed6f3"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedTypeBuilderImpl.buildSupertype (cognitive 25): NamedTypeBuilderImpl.buildSupertype has cognitive complexity 25 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 2 (6 pts), boolean chains 3, match/switch 1 (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd6b5714fe6ccd3689e09a1e91e121c434d2fbfca5d61269dcdac6045f556695"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedTypeBuilderImpl.computeTypeParameterBuilderVariance (cognitive 25): NamedTypeBuilderImpl.computeTypeParameterBuilderVariance has cognitive complexity 25 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (9 pts), boolean chains 1, match/switch 1 (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":860}}}],"partialFingerprints":{"codehealthFindingId/v1":"0253d74e4e71a7e13935df49a9ef68b6ef8938997561d78b890d651f09410894"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentFactoryImpl.computeAndValidateConstructorName (cognitive 25): FragmentFactoryImpl.computeAndValidateConstructorName has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16 (21 pts), boolean chains 2, ternaries 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":1751}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfbfdc23fce27c81370b294562ee7c653e44521e26393defd860b57971e97df4"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLibraryBuilder.checkTypesInOutline (cognitive 25): SourceLibraryBuilder.checkTypesInOutline has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 5, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"534729d748a331b32d3a2079afd504ffdeeeef296de3e611b4eebf69529dc6ec"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstListOrSetLiteralBuilder.translate (cognitive 25): _ConstListOrSetLiteralBuilder.translate has cognitive complexity 25 (threshold 15). Drivers by points: if/else 8 (17 pts), ternaries 2 (4 pts), loops 2, match/switch 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"a41dd0ebe48054851412a967634131d0e8e72963f54f706d7c3c77e1a1d3e4ca"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitDotShorthandPropertyGet (cognitive 25): InferenceVisitorImpl.visitDotShorthandPropertyGet has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (20 pts), boolean chains 3, loops 1, match/switch 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":14092}}}],"partialFingerprints":{"codehealthFindingId/v1":"c694d5f184fe45c4ead0eea8292b30675acf32241fc12526976cf2d0996f0408"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase._inferInstanceMethodInvocation (cognitive 25): InferenceVisitorBase._inferInstanceMethodInvocation has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 7, match/switch 1 (2 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3036}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d56586d2b72b26e527dba4a74b5f46f1a0847418f1f442030f9ad4802dfd2e0"}},{"ruleId":"D2","level":"warning","message":{"text":"_Processor._preprocessImportsAsNeeded (cognitive 25): _Processor._preprocessImportsAsNeeded has cognitive complexity 25 (threshold 15). Drivers by points: if/else 6 (19 pts), loops 2 (6 pts) (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"89be581277828dbb281cdddb1303017490b7d5c6930a90860b75f247404622c4"}},{"ruleId":"D2","level":"warning","message":{"text":"AstPrinter.writeFunctionNode (cognitive 25): AstPrinter.writeFunctionNode has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (20 pts), loops 3 (5 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/printer.dart"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea60308b668a4d65d7f92b5686dc758fee2071399a853d85a2737936b182cee"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitCompilationUnit (cognitive 25): _Visitor.visitCompilationUnit has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (20 pts), loops 3 (5 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/dangling_library_doc_comments.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"6edbbaf7863329b3fe2eea89d4f07eceb13c53b16f8161c1922880be91da972e"}},{"ruleId":"D2","level":"warning","message":{"text":"Isolate._update (cognitive 25): Isolate._update has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (11 pts), loops 5 (11 pts), boolean chains 2, ternaries 1 (nesting depth added 7). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":1708}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe41145cb6478c1e751ace99dceea440daa0fbb5d1e0bd5fe6d6ed187931e65a"}},{"ruleId":"D2","level":"warning","message":{"text":"TableSelectorAssigner._memberIdsForClass (cognitive 25): TableSelectorAssigner._memberIdsForClass has cognitive complexity 25 (threshold 15). Drivers by points: if/else 10 (16 pts), match/switch 1 (4 pts), boolean chains 2, loops 2, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/table_selector_assigner.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"aee4e7fcdb353be25d2963f81531f55ef6ec965db1a2e811d52a16c25a856f72"}},{"ruleId":"D2","level":"warning","message":{"text":"_TreeShakerPass2.defaultMember (cognitive 25): _TreeShakerPass2.defaultMember has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (20 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2321}}}],"partialFingerprints":{"codehealthFindingId/v1":"277d3d7ed66675b2e31385bacb086d7707aac086d77452ad4ee9eb492bcbde45"}},{"ruleId":"D2","level":"warning","message":{"text":"_SuggestionBuilder._addSuggestion (cognitive 25): _SuggestionBuilder._addSuggestion has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16 (25 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/completion/type_member_contributor.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d01617cf15d0c59800ca8aaa39b6c1b318743d4cf28b13a3412c598e66c63e"}},{"ruleId":"D2","level":"warning","message":{"text":"IDLType.__init__ (cognitive 25): IDLType.__init__ has cognitive complexity 25 (threshold 15). Drivers by points: if/else 12 (23 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":661}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ecfcc942a9f71924fcb212b558df9e3e00cf1fe83f0166acc01f54e1ec62a27"}},{"ruleId":"D2","level":"warning","message":{"text":"D3SymbolTreeMap.D3SymbolTreeMap._handleInodes (cognitive 25): D3SymbolTreeMap.D3SymbolTreeMap._handleInodes has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15 (18 pts), ternaries 4, boolean chains 3 (nesting depth added 3). Most of this is not in the body itself: 2 of the 25 points are its own statements and the rest belongs to 7 function literals inside it that branch (lines 464, 533, 429, \u2026). The decisions are inside those literals, which nothing outside this body can call, review or test on its own, so splitting the enclosing body is not the move available here. To reduce it, lift the literals\u0027 work into a named function or method at the enclosing scope and have each literal call it, then reduce whichever part then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa28593cdfc25ae12417752ead359ccca5435de545eca23cfa7a050e832e6f64"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeMultiLineRawString (cognitive 24): AbstractScanner.tokenizeMultiLineRawString has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (21 pts), loops 2 (3 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1575}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dd2d802b917bdb642f46bbf7f63758d0a1a19d7fd1c1570a477a36b38b77d4f"}},{"ruleId":"D2","level":"warning","message":{"text":"_BuilderGenerator._generateSignatureCall (cognitive 24): _BuilderGenerator._generateSignatureCall has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (22 pts), match/switch 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"f070ff028aaf31b58e037faa833b10eeda7566d14a02bd5fb9be3140877993d7"}},{"ruleId":"D2","level":"warning","message":{"text":"UnreachableIfFinder.helperForIfLikeStructure (cognitive 24): UnreachableIfFinder.helperForIfLikeStructure has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (18 pts), ternaries 2 (4 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/unreachable_if_finder.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb480066e3a49d82a2f97a44d2da150b7a5e73ad8ad26264306fd7fa7253d0d"}},{"ruleId":"D2","level":"warning","message":{"text":"NaiveTypeChecker._checkFunctionOverride (cognitive 24): NaiveTypeChecker._checkFunctionOverride has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 4 (6 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/naive_type_checker.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"70ad5947c0edd5d50bb5962b7e0c67c1f5cb3cc4cd59dfc44186ccd7f32d89ca"}},{"ruleId":"D2","level":"warning","message":{"text":"CompilationSet.compileAllFunctions (cognitive 24): CompilationSet.compileAllFunctions has cognitive complexity 24 (threshold 15). Drivers by points: loops 7 (16 pts), if/else 2 (8 pts) (nesting depth added 15). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/compilation_set.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f5d010b1e931d388b19463b27dccae9f2bf86a35720c7772ab18f3c6ac2fdb"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utils._getCompletionsHelper (cognitive 24): _Utils._getCompletionsHelper has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (21 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b7185e1d34d8507ba9bf416385f1751d05d6ebeb8284dc29378a8152b73abfb"}},{"ruleId":"D2","level":"warning","message":{"text":"_Double.compareTo (cognitive 24): _Double.compareTo has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (18 pts), ternaries 2 (5 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ed14f035e1d51d445cbb60ef4402529adb0d228ae4480f7001a9561742c357"}},{"ruleId":"D2","level":"warning","message":{"text":"_FunctionType.toString (cognitive 24): _FunctionType.toString has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 3 (5 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3202d2027f525e9ad1faf5865c8bfa8fedfc2ff7f2b7ac4f6ee4ba731b5a89"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64CodeGenerator.visitCompareAndBranch (cognitive 24): Arm64CodeGenerator.visitCompareAndBranch has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 4, match/switch 2, ternaries 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ddab987e962282122883b32cc1cc8ebeb24fc6da477b90e90f0501b1fffb874"}},{"ruleId":"D2","level":"warning","message":{"text":"LinearScanRegisterAllocator.allocate (cognitive 24): LinearScanRegisterAllocator.allocate has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 5 (7 pts), boolean chains 4 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c8674f13c382dead826823460020603e1e92efb77c8091357c75cc50a24b8b0"}},{"ruleId":"D2","level":"warning","message":{"text":"DependenciesCollector._enqueueInstanceMembers (cognitive 24): DependenciesCollector._enqueueInstanceMembers has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (22 pts), boolean chains 1, loops 1 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/deferred_load/dependencies.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd927d5c86406685068d8c14062898d086cbde189bf102aa341ee221c9cfa98d"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationsListener.endLiteralString (cognitive 24): AnnotationsListener.endLiteralString has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (20 pts), loops 2 (4 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b84104951b5d2a497b4d6d01fc3c5aef66fe26bcc7b585a895059bae668c80"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseMixinHeaderRecovery (cognitive 24): Parser.parseMixinHeaderRecovery has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (21 pts), boolean chains 2, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":3476}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7db5826137a4e7bd123f1f7ee37c22616e0c7480367a86691af079e2a7cdbae"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser._attemptPrecedenceLevelRecovery (cognitive 24): Parser._attemptPrecedenceLevelRecovery has cognitive complexity 24 (threshold 15). Drivers by points: boolean chains 13, if/else 5 (10 pts), loops 1 (nesting depth added 5). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7614}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b11373f132290c908f72c858a662ee06806a207c3571ae8ddbdc190e0d8a279"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseSend (cognitive 24): Parser.parseSend has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 8 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9337}}}],"partialFingerprints":{"codehealthFindingId/v1":"de32bb2b8c65b34be5dfa8492a97ed664b33193aee3f351e97722c8f6c1acf0f"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseMapPatternSuffix (cognitive 24): Parser.parseMapPatternSuffix has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":12070}}}],"partialFingerprints":{"codehealthFindingId/v1":"3867d191b848debef3e754fa44f818806b42a35969f54e05f13769e875fbea49"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeMultiLineRawString (cognitive 24): AbstractScanner.tokenizeMultiLineRawString has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (21 pts), loops 2 (3 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2352}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ab10ea211093684f9976f83abd6eed6a927a54e17283cc722550d1430998b68"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtensionIndex._indexExtensions (cognitive 24): ExtensionIndex._indexExtensions has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":1148}}}],"partialFingerprints":{"codehealthFindingId/v1":"23ec4ab5cf12fcd3758195e3d221515ab58af2fbdbbe0b56ed880a8e20e7e6ad"}},{"ruleId":"D2","level":"warning","message":{"text":"DartUnitHighlightsComputer._addCommentRanges (cognitive 24): DartUnitHighlightsComputer._addCommentRanges has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (21 pts), loops 2 (3 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"e79a23d30bc5f450065fccd0db574a0f35dd64fffd1c392a75dd506c0b871a17"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextManagerImpl._handleWatchEvent (cognitive 24): ContextManagerImpl._handleWatchEvent has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 5, match/switch 2 (4 pts), loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":952}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d4458f5a19754ff5b0d1a81bd799e4f7b828fb2454a6328f59a4d7a6a4886f6"}},{"ruleId":"D2","level":"warning","message":{"text":"FlutterOutlineComputer._addAttribute (cognitive 24): FlutterOutlineComputer._addAttribute has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (15 pts), ternaries 2 (8 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/flutter/flutter_outline_computer.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca345a39e8d8bcb8c2c463da729e7bb4f4ed265a055c429cea3272d18a9a82e0"}},{"ruleId":"D2","level":"warning","message":{"text":"ResultMerger.mergeOutline (cognitive 24): ResultMerger.mergeOutline has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (17 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5fffe32a7bf31ba9f2bbcab2a1ca9117f2a2955c83f4baa9410075e47478804"}},{"ruleId":"D2","level":"warning","message":{"text":"Driver.startAnalysisServer (cognitive 24): Driver.startAnalysisServer has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (19 pts), ternaries 2 (3 pts), error handling 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"2903876114dd306224697b5aa4074217472b61830d3f11ce35211eb3960a7d86"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper.addFieldsForInitializers (cognitive 24): DeclarationHelper.addFieldsForInitializers has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 5, loops 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"870a98c05e2388dace89328f525b69c672b5e2935c6c770036e6bd52d54a81c1"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitPropertyAccess (cognitive 24): InScopeCompletionPass.visitPropertyAccess has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 8 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2703}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba3fea463e550b6101140f005c44cde8c7991d136bc7f763c2ce37d8fdb24b5"}},{"ruleId":"D2","level":"warning","message":{"text":"KeywordHelper.addFieldDeclarationKeywords (cognitive 24): KeywordHelper.addFieldDeclarationKeywords has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 9 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"856e2ca37d3ecd17a5183d3c7ec71e3c97769ce25484fe47a3f1efbc6747d8d5"}},{"ruleId":"D2","level":"warning","message":{"text":"NotImportedCompletionPass.computeSuggestions (cognitive 24): NotImportedCompletionPass.computeSuggestions has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 2 (3 pts), match/switch 1 (3 pts), boolean chains 1, error handling 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/not_imported_completion_pass.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fbd8977d2632b2d9e7ef1ab8fa3b99351fded7fa264c60e5931d30e1fba4ac7"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementCompletionProcessor._checkExpressions (cognitive 24): StatementCompletionProcessor._checkExpressions has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (21 pts), boolean chains 2, ternaries 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"b42afc6cab4f464a80d54b345b61dd407e35e80f50732565deab9401bcf03af3"}},{"ruleId":"D2","level":"warning","message":{"text":"AddCallSuper.compute (cognitive 24): AddCallSuper.compute has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (17 pts), ternaries 1 (4 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_call_super.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"658434ffea6eb4f5440796b2f4e42c2c7e2dd97856a3099926fca5ea84b6366d"}},{"ruleId":"D2","level":"warning","message":{"text":"AddDiagnosticPropertyReference._fixAllDiagnosticPropertyReferences (cognitive 24): AddDiagnosticPropertyReference._fixAllDiagnosticPropertyReferences has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (17 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1d3c0767d1bb35c52c37cd858355c5aec2816873c69616fc76f6f5d2cef8f17"}},{"ruleId":"D2","level":"warning","message":{"text":"_AddInvocation.compute (cognitive 24): _AddInvocation.compute has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_super_constructor_invocation.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f2d7bf9fba3429e4c64a659d01f5a24c90f7a3836c5453c4bf11d3cebdbf693"}},{"ruleId":"D2","level":"warning","message":{"text":"BindToField._replaceParameterWithThis (cognitive 24): BindToField._replaceParameterWithThis has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 5, ternaries 1 (3 pts), match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/bind_to_field.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"e181f3d728fde3f57e6859bba4dc56e47b151c253e740a7030df5021b73ef1b0"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertMapFromIterableToForLiteral.compute (cognitive 24): ConvertMapFromIterableToForLiteral.compute has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (18 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"2222269d196b79bd5ebb3ff512ad06eb6a691e5b39462bd4401a79412ac5180f"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToSetLiteral.compute (cognitive 24): ConvertToSetLiteral.compute has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14 (22 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_set_literal.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d4f7cfae9700b2c3caabcfcd565424fc61fdb46749a6f90cc556c2c4cee7e69"}},{"ruleId":"D2","level":"warning","message":{"text":"_JoinIfWithElseBlock._compute (cognitive 24): _JoinIfWithElseBlock._compute has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/join_else_with_if.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"7602c76c77589676f1159140a8caeda1b57f663a11c36ea51ff387e040ddf0de"}},{"ruleId":"D2","level":"warning","message":{"text":"MakeRequiredNamedParametersFirst.compute (cognitive 24): MakeRequiredNamedParametersFirst.compute has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (20 pts), loops 3, boolean chains 1 (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/make_required_named_parameters_first.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e540dfd82a3748265a42474cbef597cd8545f23356df9235461ad625c41abd4b"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveDeadCode._handleDeadAtStartOfNode (cognitive 24): RemoveDeadCode._handleDeadAtStartOfNode has cognitive complexity 24 (threshold 15). Drivers by points: if/else 6 (11 pts), ternaries 4 (8 pts), boolean chains 4, match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_dead_code.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cee178fcde66ef77fa99358d86fcbeade08501450fb5c503b5d5e402cedf1db"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveUnexpectedUnderscores.compute (cognitive 24): RemoveUnexpectedUnderscores.compute has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 8, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unexpected_underscores.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ad4bb67bf8534e17102d06f500f925b568ef043f7781e82d36fc6816ef9af45"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveUnusedLocalVariable._deleteDeclarationInPatternField (cognitive 24): RemoveUnusedLocalVariable._deleteDeclarationInPatternField has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (22 pts), boolean chains 1, match/switch 1 (nesting depth added 14). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused_local_variable.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3bd8f2bb66157539a6e4d46a5be84ab31949363a3c8121a965083b47a10bdca"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplaceWithInterpolation._extractComponentsInto (cognitive 24): ReplaceWithInterpolation._extractComponentsInto has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 2, loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_interpolation.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"580231cb959a0c2c75c157db9d7e7d4756b875c11f11901af7403ab4cdbc379b"}},{"ruleId":"D2","level":"warning","message":{"text":"_ReferenceFinder.visitExtensionDeclaration (cognitive 24): _ReferenceFinder.visitExtensionDeclaration has cognitive complexity 24 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 4 (8 pts), boolean chains 3 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/import_analyzer.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ce805237aa663fd4d69c023c72bf3a09e456224a8163ed76bbc2aa231a2849e"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisDriver.workPriority (cognitive 24): AnalysisDriver.workPriority has cognitive complexity 24 (threshold 15). Drivers by points: if/else 20 (22 pts), loops 1 (2 pts) (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"79d50cde89a73692be583a576925b7b26258eeeea24bf046d66e595746c3ea32"}},{"ruleId":"D2","level":"warning","message":{"text":"_DiscoverAvailableFilesJob._initialize (cognitive 24): _DiscoverAvailableFilesJob._initialize has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 3 (5 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":3187}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8be7a7679b83af85bd845a7b3c8ff1955486ffda4945e520f0afba2e8db4531"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionImpl.correspondingParameter (cognitive 24): ExpressionImpl.correspondingParameter has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15 (23 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17913}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a7f8c94c57df41ded93657be84da7cfe4afab13c9fd0ed685b5ea2496806aa"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier._canBeEqual (cognitive 24): ConstantVerifier._canBeEqual has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (18 pts), ternaries 1 (4 pts), boolean chains 2 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"f50dace09e61c9dacfe8933490b06a85e48aec8bfccba810162152a23d100d5a"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorInvocationEvaluator.evaluateFactoryConstructorCall (cognitive 24): _ConstructorInvocationEvaluator.evaluateFactoryConstructorCall has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (14 pts), ternaries 3 (6 pts), boolean chains 4 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3027}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa3052a0becc50099a89b700e50894c04444f6fae32eda712abbe204f3e600ad"}},{"ruleId":"D2","level":"warning","message":{"text":"InheritanceManager3._topMerge (cognitive 24): InheritanceManager3._topMerge has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (22 pts), loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8383fce0c3b19d503eed0818bbdb96422efe717085529fead231e6bb9e44551"}},{"ruleId":"D2","level":"warning","message":{"text":"TopMergeHelper._functionTypes (cognitive 24): TopMergeHelper._functionTypes has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (19 pts), boolean chains 4, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/top_merge.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e221bc452c79e24253eec5042ba7256fe95aa8c3e066174499980c138f4f35"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver.resolveIndexReadWriteAssignmentTarget (cognitive 24): PropertyElementResolver.resolveIndexReadWriteAssignmentTarget has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (17 pts), ternaries 2 (4 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"93094c1b7a3fda0e9b18d11dc4ddbb96cd86aa682ea1c664e690cfb5aa336988"}},{"ruleId":"D2","level":"warning","message":{"text":"TypedLiteralResolver._inferSetOrMapLiteralType (cognitive 24): TypedLiteralResolver._inferSetOrMapLiteralType has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 11, loops 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"540baeb34d2426b571e1478658c5aebb688de075761cdb350a0af7f872fd5bb9"}},{"ruleId":"D2","level":"warning","message":{"text":"DeprecatedFunctionalityVerifier._checkForDeprecatedOptionalRedirectedParameters (cognitive 24): DeprecatedFunctionalityVerifier._checkForDeprecatedOptionalRedirectedParameters has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (22 pts), loops 1 (2 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/deprecated_functionality_verifier.dart"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3d65e29b21f30e33ea8953febe0b5e8b3777563ab4ddd3fbbbe13bdd987c6da"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportsVerifier.generateUnusedImportWarnings (cognitive 24): ImportsVerifier.generateUnusedImportWarnings has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (23 pts), loops 1 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/imports_verifier.dart"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"414ea567e217339399380eb1a26b4c75474f5230ac257cdad9e80b42c201f543"}},{"ruleId":"D2","level":"warning","message":{"text":"_ClassVerifier._checkForRecursiveInterfaceInheritance (cognitive 24): _ClassVerifier._checkForRecursiveInterfaceInheritance has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (18 pts), loops 3 (6 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"811243d225af84c73f9b063778e78c5f508eb06cd1471b1aafba03749fee0abd"}},{"ruleId":"D2","level":"warning","message":{"text":"LiteralElementVerifier._verifySpreadForListOrSet (cognitive 24): LiteralElementVerifier._verifySpreadForListOrSet has cognitive complexity 24 (threshold 15). Drivers by points: if/else 12 (22 pts), ternaries 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/literal_element_verifier.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8dc44c33d72050b5423aa07fb87835725686b46b9d30c8f41f4e2e347e00b7d"}},{"ruleId":"D2","level":"warning","message":{"text":"_DirectiveParser._parseArgument (cognitive 24): _DirectiveParser._parseArgument has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e8ea9d38bb924e31268d61d8e767bfb90018d04bf47e93bc18ed1a522867f6e"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForWrongNumberOfParametersForOperator (cognitive 24): ErrorVerifier._checkForWrongNumberOfParametersForOperator has cognitive complexity 24 (threshold 15). Drivers by points: boolean chains 18, if/else 6. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8149}}}],"partialFingerprints":{"codehealthFindingId/v1":"f66062ec063d6655ae27e6d676537394838b3f1d38b4ddfb18db5aac254c4ad1"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateCompatibleNativeType (cognitive 24): FfiVerifier._validateCompatibleNativeType has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 9, ternaries 1 (2 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1665}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e90976cca4ca485f2682df5d260fd0f0ad3d4fcd924b58e7ebafe2ffcbe100"}},{"ruleId":"D2","level":"warning","message":{"text":"InstanceMemberInferrer._setInducedModifier (cognitive 24): InstanceMemberInferrer._setInducedModifier has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (19 pts), boolean chains 5 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad89b46d4975d39bc19da03fc37c01c9152bed7befa6872b05d1feb41fdd50c3"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalDeclarationVisitor._visitCompilationUnit (cognitive 24): LocalDeclarationVisitor._visitCompilationUnit has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 4 (11 pts) (nesting depth added 10). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"6280bbc6a0b4d518efc363dd155eab62c376a8555ed31565395cedb3fb86daa8"}},{"ruleId":"D2","level":"warning","message":{"text":"InferrerEngine.updateParameterInputs (cognitive 24): InferrerEngine.updateParameterInputs has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15 (23 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ceedb5eb2852a0e0f83b16a821bbe2eddd286819b1c275363913a1eeb1b8e24"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystem.joinTypeMasks (cognitive 24): TypeSystem.joinTypeMasks has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 4, loops 2, ternaries 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_system.dart"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1a124af67da6474a29dde8b515c63471b684c73d9aef43e37bf74a20dd9cdfb"}},{"ruleId":"D2","level":"warning","message":{"text":"CodegenImpactTransformer.transformCodegenImpact (cognitive 24): CodegenImpactTransformer.transformCodegenImpact has cognitive complexity 24 (threshold 15). Drivers by points: loops 10, if/else 4 (8 pts), match/switch 3 (6 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/impact_transformer.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"dedd619dfbbc7a6cc5bbaa77f3f6a4ad4edcf12703fface689b6a20e1f5b1529"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeReferenceFinalizerImpl._allocateNames (cognitive 24): TypeReferenceFinalizerImpl._allocateNames has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 4 (7 pts), boolean chains 3 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/type_reference.dart"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7b57b7a5716ccc71b3f2f9fcb3a34554e4c7fae809ea7c0b584100b04488db3"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassStubGenerator.generateCallStubsForGetter (cognitive 24): ClassStubGenerator.generateCallStubsForGetter has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 3 (7 pts), ternaries 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/class_stub_generator.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"618874858d69d6d973aa766967a591ed6c4430aa53e8f0a160da537ff4871241"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramBuilder._buildMethod (cognitive 24): ProgramBuilder._buildMethod has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 8, ternaries 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":965}}}],"partialFingerprints":{"codehealthFindingId/v1":"552a52e2afa904a458c9a5b193eea6524f61ac594dfad392b269d74bfa791d97"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.handleArrayTypeInfo (cognitive 24): SsaInstructionSimplifier.handleArrayTypeInfo has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (23 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2318}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e88bf5142ac966571b4065f7263b853b4beca34d2291aa3a271cc3927b25d5c"}},{"ruleId":"D2","level":"warning","message":{"text":"ProtocolConverter._gettersForClassHierarchy (cognitive 24): ProtocolConverter._gettersForClassHierarchy has cognitive complexity 24 (threshold 15). Drivers by points: if/else 3 (8 pts), error handling 2 (7 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":801}}}],"partialFingerprints":{"codehealthFindingId/v1":"70d0fcbe44ee8c9ea1e5191e877936f01ddcf9e96bc557f1d8f949f0ba0db9ad"}},{"ruleId":"D2","level":"warning","message":{"text":"DDSRunner.start (cognitive 24): DDSRunner.start has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (19 pts), ternaries 4, error handling 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/dds_runner.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"63b36eec59f3adaf7507a3dc1cb6c236a891b9f15ad100119ecc7544343e4c22"}},{"ruleId":"D2","level":"warning","message":{"text":"DartDevelopmentServiceImpl._startDDSServer (cognitive 24): DartDevelopmentServiceImpl._startDDSServer has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (17 pts), ternaries 3, boolean chains 2, error handling 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/dds_impl.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b00d47fb71dd99d1b4b1af023f0e51932e206f8f456f7e98c60d70cac206e1b"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtensionBuilderImpl.lookupExtensionMemberByName (cognitive 24): ExtensionBuilderImpl.lookupExtensionMemberByName has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14 (20 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/extension_builder.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebcd346d3241b686f41ddefce2e8d083848c6461541168efc6d20363061868d2"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endLiteralString (cognitive 24): BodyBuilderImpl.endLiteralString has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (22 pts), loops 1 (2 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4704}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5bf02c63cff8c571481302a4d838e044a997098685c6dc16829956f77887654"}},{"ruleId":"D2","level":"warning","message":{"text":"DelayedGetterSetterCheck._checkGetterSetter (cognitive 24): DelayedGetterSetterCheck._checkGetterSetter has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (22 pts), boolean chains 2 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/delayed.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"3347f06910f9bf3e91d51351a595afe831754d8df20e2ad8a42a5e6482adffc2"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.endTypedef (cognitive 24): OutlineBuilder.endTypedef has cognitive complexity 24 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 1, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":3897}}}],"partialFingerprints":{"codehealthFindingId/v1":"35151a586091c2b4b0ff4b3736294105c962be8f2b40f787e84373c4da3c0772"}},{"ruleId":"D2","level":"warning","message":{"text":"_Processor.preprocessUri (cognitive 24): _Processor.preprocessUri has cognitive complexity 24 (threshold 15). Drivers by points: loops 4 (12 pts), if/else 7 (10 pts), boolean chains 2 (nesting depth added 11). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1a50ce2eda8eb875020a31cace338178f3c29dc3cec1b0dad54f5b50a54296d"}},{"ruleId":"D2","level":"warning","message":{"text":"StringToSource.analyze (cognitive 24): StringToSource.analyze has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 9, loops 1, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/strings.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bab7026ffc94edc7ba7126e71fdfc3f35edf690745a720ab05e25967f41be0a"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitPatternField (cognitive 24): _Visitor.visitPatternField has cognitive complexity 24 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/simplify_variable_pattern.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"f23dcafb407c1d961e368771e21991767f2bff585274515396785c5692ae0b22"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.check (cognitive 24): _Visitor.check has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (19 pts), ternaries 1 (3 pts), boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b5546b6f2f10efc0c97c2a6ac48c69f9bfb186c8e254907fea67511115de14"}},{"ruleId":"D2","level":"warning","message":{"text":"InspectPage._visitObject (cognitive 24): InspectPage._visitObject has cognitive complexity 24 (threshold 15). Drivers by points: if/else 20 (21 pts), error handling 1 (3 pts) (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/app/page.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"f488a6b34088a711c50f3c9dbe8f835be7a92b82a2fd4689bcb4524014bf5c62"}},{"ruleId":"D2","level":"warning","message":{"text":"SampleProfile._loadCommon (cognitive 24): SampleProfile._loadCommon has cognitive complexity 24 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/sample_profile/sample_profile.dart"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4669214f855fc8f295680ef928abe4ae49426de12b13d34b011e1d654e6d98e"}},{"ruleId":"D2","level":"warning","message":{"text":"LateLowering.getLocalLowering (cognitive 24): LateLowering.getLocalLowering has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14 (24 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (LateLowering.getFieldLowering) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bef021bc7327f9cf82c99d85465c7d1f28f15a752ecc5873561e81b3cce6430"}},{"ruleId":"D2","level":"warning","message":{"text":"LateLowering.getFieldLowering (cognitive 24): LateLowering.getFieldLowering has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14 (24 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (LateLowering.getLocalLowering) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"d09669d1202f271f3886658dd8ca4f9b11cb5c6774850486f5e513088cd0168f"}},{"ruleId":"D2","level":"warning","message":{"text":"NativeCodeOracle.handleNativeProcedure (cognitive 24): NativeCodeOracle.handleNativeProcedure has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (22 pts), boolean chains 1, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/native_code.dart"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"32e639d3453959bb8023a9808d446cde7d07a5d126dbc4d73caf5a0267843e5e"}},{"ruleId":"D2","level":"warning","message":{"text":"UnboxingInfoManager._updateUnboxingInfoOfMember (cognitive 24): UnboxingInfoManager._updateUnboxingInfoOfMember has cognitive complexity 24 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 5, loops 2 (4 pts), ternaries 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/unboxing_info.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddf7c1bbcff21e1b71e8d880536e3007580e73c9101c8541abfdcb0f78629e75"}},{"ruleId":"D2","level":"warning","message":{"text":"VMService._routeRequestImpl (cognitive 24): VMService._routeRequestImpl has cognitive complexity 24 (threshold 15). Drivers by points: if/else 11 (23 pts), error handling 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/vmservice.dart"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea351c4acffea1b0d8e8587d0f841aec4384f094b4ea363c5b36b9def28ea5ef"}},{"ruleId":"D2","level":"warning","message":{"text":"mdnreader._get_browser_compat_data (cognitive 24): mdnreader._get_browser_compat_data has cognitive complexity 24 (threshold 15). Drivers by points: if/else 7 (20 pts), loops 2 (4 pts) (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/mdnreader.py"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2a89e3e89ea39e79fedf95d63dd1397556b4c3a8d131dc0796b7f022ae59874"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionQualityMetricsComputer.gatherMetricsForSuggestions (cognitive 23): CompletionQualityMetricsComputer.gatherMetricsForSuggestions has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 2 (6 pts), boolean chains 3 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":929}}}],"partialFingerprints":{"codehealthFindingId/v1":"75518ac8462b4de159602fddb13081a5fab96d05d530973ec39ea9a24c860b4e"}},{"ruleId":"D2","level":"warning","message":{"text":"RelevanceDataCollector._recordTypeRelationships (cognitive 23): RelevanceDataCollector._recordTypeRelationships has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 4 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":2053}}}],"partialFingerprints":{"codehealthFindingId/v1":"18b8ca3d198346e06d4616d8410a6725393cb81304585e202ba577751af0a3c2"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator._handleVariableInitialization (cognitive 23): BytecodeGenerator._handleVariableInitialization has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (20 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":4725}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1fc62bc0963cb8d9b2cc54a921ee41b1abd4839f84cea8d6f7fa6a50adee240"}},{"ruleId":"D2","level":"warning","message":{"text":"DispatchTable.output (cognitive 23): DispatchTable.output has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dispatch_table.dart"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe870b9a1ef51861b6434b810e254fdfa857a05fb4a25d900cd91ef10c05527f"}},{"ruleId":"D2","level":"warning","message":{"text":"DynamicDispatchTable.outputTargetTable (cognitive 23): DynamicDispatchTable.outputTargetTable has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 3 (7 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dynamic_dispatch_table.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc69cd5ec975cf21039c0fbe83d758b4880dc4faccd5ea7932dbcdda6d24595"}},{"ruleId":"D2","level":"warning","message":{"text":"Driver._analyzeFiles (cognitive 23): Driver._analyzeFiles has cognitive complexity 23 (threshold 15). Drivers by points: if/else 2 (10 pts), loops 3 (6 pts), error handling 1 (5 pts), ternaries 1 (2 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/tool/checks/driver.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f917276351bac7a6e6fd392cdadb726a720701fa067034ef37771c2022b7f62"}},{"ruleId":"D2","level":"warning","message":{"text":"_SnapshotGraph._dfs (cognitive 23): _SnapshotGraph._dfs has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 5 (9 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"13db2183d870dd15778dc5b9089fdb03b21cdafb11e7db0e46c334c4781cf50c"}},{"ruleId":"D2","level":"warning","message":{"text":"_SnapshotGraph._buildDominators (cognitive 23): _SnapshotGraph._buildDominators has cognitive complexity 23 (threshold 15). Drivers by points: loops 7 (10 pts), if/else 4 (9 pts), ternaries 1 (4 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"835fdaa613a0995e680e7ddabcddbca3f1556509d7f9232b047ad57e3a1595e6"}},{"ruleId":"D2","level":"warning","message":{"text":"DartFuzz._emitMinimizedLiteralHelper (cognitive 23): DartFuzz._emitMinimizedLiteralHelper has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (18 pts), loops 1 (3 pts), match/switch 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbc42da7b0b8499b3f71bca749265a7c27220544d10b00daabb6832f198c177c"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpHeaders._parseCookies (cognitive 23): _HttpHeaders._parseCookies has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 4 (5 pts), error handling 1 (3 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"f480681c5ae8fd644e0d8a519e8033410aa93ca02b171cd0f724a7a038470a06"}},{"ruleId":"D2","level":"warning","message":{"text":"_ParameterParser.parseParameterValue (cognitive 23): _ParameterParser.parseParameterValue has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (20 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":790}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f769c7a2f637dfb25ac52d1f1cbefef3c774f48e552eb7d72e4ca1575e70d5"}},{"ruleId":"D2","level":"warning","message":{"text":"CustomHashMap.remove (cognitive 23): CustomHashMap.remove has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (16 pts), ternaries 1 (5 pts), loops 1 (2 pts) (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"c80352248ab85addbd748441208106997adf375b7f3aaa0bb45ea1eafd2d7095"}},{"ruleId":"D2","level":"warning","message":{"text":"_ModifiableList.setRange (cognitive 23): _ModifiableList.setRange has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 4 (6 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/list.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"e32c6c48770daae8c8dbfea2a3827bb106116ca5d7952261d0441bab845fce70"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringToBuffer (cognitive 23): _ChunkedJsonParser.parseStringToBuffer has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (22 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e487d25792edc71977f52b11e39d349a03372c6da67e96ac4844362a65f1ab9"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64CodeGenerator.visitAllocateArray (cognitive 23): Arm64CodeGenerator.visitAllocateArray has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (14 pts), ternaries 4 (7 pts), boolean chains 1, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2128}}}],"partialFingerprints":{"codehealthFindingId/v1":"a709fef0b28cb5a3c0b0ad88989f36ff8641223478b7841652fb7fda6dc6dd16"}},{"ruleId":"D2","level":"warning","message":{"text":"DevirtualizionOracle.isAlwaysStaticallyDispatchedTo (cognitive 23): DevirtualizionOracle.isAlwaysStaticallyDispatchedTo has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (18 pts), boolean chains 5 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/deferred_load/devirtualization_oracle.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"83ba0e7df751b62827e1aae99b518c9152028adba87024828d6ca934458a2236"}},{"ruleId":"D2","level":"warning","message":{"text":"CorrectionUtils.replaceSourceIndent (cognitive 23): CorrectionUtils.replaceSourceIndent has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 5, loops 3 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/correction_utils.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"19fc847f69bd4bb0f3cad405d3c466000410ae923d1cefc8775b9cf16fc88b37"}},{"ruleId":"D2","level":"warning","message":{"text":"InteropSpecializerFactory._getSpecializer (cognitive 23): InteropSpecializerFactory._getSpecializer has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/js/interop_specializer.dart"},"region":{"startLine":661}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a19a49df20903240dcd67a7b3c6b6c5cf93e13db627d64992558e29f4657a2"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiTransformer.ensureNativeTypeMatch (cognitive 23): FfiTransformer.ensureNativeTypeMatch has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (21 pts), boolean chains 1, match/switch 1 (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/common.dart"},"region":{"startLine":1922}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6bf31cffef627f7bd06e2fcec58e8e8ee5595e2dc6a12e445b360d1aaa599b5"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiNativeTransformer.visitProcedure (cognitive 23): FfiNativeTransformer.visitProcedure has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (13 pts), error handling 3 (6 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/native.dart"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d4a02f84a4eddd3a759998274fdee4ff8dfda2d5ac68ef2b58725fee94537a"}},{"ruleId":"D2","level":"warning","message":{"text":"Evaluator._visitExpression (cognitive 23): Evaluator._visitExpression has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (14 pts), match/switch 5 (9 pts) (nesting depth added 13). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bfae202431d665e08563a3354b048fba7396e12cc66ca2b8dbabf6d495f42b7"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeReferenceIdentifierContext.ensureIdentifier (cognitive 23): TypeReferenceIdentifierContext.ensureIdentifier has cognitive complexity 23 (threshold 15). Drivers by points: boolean chains 12, if/else 8 (11 pts) (nesting depth added 3). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":1511}}}],"partialFingerprints":{"codehealthFindingId/v1":"72bb97fa922acbeb561279a18fbc5a546461d002c012d763d834745878578c36"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseInitializers (cognitive 23): Parser.parseInitializers has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (20 pts), boolean chains 2, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4746}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0dd2c97ad66be3179c796f15eaf01e120230e33e82f92df01d1cf3959bc9598"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseFactoryMethod (cognitive 23): Parser.parseFactoryMethod has cognitive complexity 23 (threshold 15). Drivers by points: if/else 14 (19 pts), boolean chains 3, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6162}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fa21a7ceecef7ce97aad3582067d6e0c00d844e6e539fbbee5727664b573eaf"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser._computePrecedence (cognitive 23): Parser._computePrecedence has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 7 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7726}}}],"partialFingerprints":{"codehealthFindingId/v1":"61da92e6099018dc0b2f00845acef2039f876171607e76c88ce495e8f9404576"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseCascadeExpression (cognitive 23): Parser.parseCascadeExpression has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 4, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7777}}}],"partialFingerprints":{"codehealthFindingId/v1":"795d18317e659d9b400cf9c50a9ae0244a15034dc05ee041144839129da65e34"}},{"ruleId":"D2","level":"warning","message":{"text":"IdValue.decode (cognitive 23): IdValue.decode has cognitive complexity 23 (threshold 15). Drivers by points: if/else 19 (23 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/id.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"843cd39451cf2d78f4ded593d3dc5b744110393a534761bd191416322d413cb4"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalyticsManager.toHtml (cognitive 23): AnalyticsManager.toHtml has cognitive complexity 23 (threshold 15). Drivers by points: loops 6 (15 pts), if/else 8 (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analytics/analytics_manager.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"2804a39189d56f05f4b350638498dd120a540ba3327e9f52fdd6723ae41145a3"}},{"ruleId":"D2","level":"warning","message":{"text":"EditGetFixesHandler._computeDartFixes (cognitive 23): EditGetFixesHandler._computeDartFixes has cognitive complexity 23 (threshold 15). Drivers by points: error handling 2 (8 pts), if/else 3 (8 pts), loops 2 (7 pts) (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd459153ac9d3c893e88b6928a7bb628610be483f9796820bdc773afad874f3b"}},{"ruleId":"D2","level":"warning","message":{"text":"DartCodeActionsProducer.getFixActions (cognitive 23): DartCodeActionsProducer.getFixActions has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (17 pts), loops 1 (2 pts), ternaries 1 (2 pts), boolean chains 1, error handling 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/dart.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"745ce3efd2ac4640d43250aad868c60ea5010b6953312de79ed0699489a8487f"}},{"ruleId":"D2","level":"warning","message":{"text":"MigrationRunner._runRound (cognitive 23): MigrationRunner._runRound has cognitive complexity 23 (threshold 15). Drivers by points: loops 4 (9 pts), if/else 5 (8 pts), ternaries 2 (5 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/migration/migration_runner.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb68e89f2d71468d4a30da25e046325160a19ec0dde0607302c343b4d2c08c66"}},{"ruleId":"D2","level":"warning","message":{"text":"_MinimalEditComputer._addEditFor (cognitive 23): _MinimalEditComputer._addEditFor has cognitive complexity 23 (threshold 15). Drivers by points: boolean chains 12, if/else 7 (9 pts), loops 2 (nesting depth added 2). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/source_edits.dart"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"442b47c53e5fc243be51933d85710f21e8801a60912c2ed59214dff32e78df62"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginIsolate._computeEffectiveAnalysisRoots (cognitive 23): PluginIsolate._computeEffectiveAnalysisRoots has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 4 (8 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_isolate.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20addb65c04f3c25c0ed0dbf62095fbf3fa5b9635ea3030b6ca48bd47e60b9e"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementCompletionProcessor._complete_controlFlowBlock (cognitive 23): StatementCompletionProcessor._complete_controlFlowBlock has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 5, ternaries 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5e57222a134be44f27b39ee2820604a1a3c4e9250cedd959524d5e54cfdc451"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToContains.compute (cognitive 23): ConvertToContains.compute has cognitive complexity 23 (threshold 15). Drivers by points: if/else 13 (21 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_contains.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"224eb917dd900db7e7de1c918dc9e116355ae359746f467a84f8a27170cad3ab"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToInBodyConstructor._writeNameAndParameterList (cognitive 23): ConvertToInBodyConstructor._writeNameAndParameterList has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (21 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_in_body_constructor.dart"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"eddf59f19fb49430094487567f53772fc090af4ccb4dfbb318c50114c48b9707"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateExtensionGetter.compute (cognitive 23): CreateExtensionGetter.compute has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16 (18 pts), boolean chains 4, match/switch 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"836f83c07ed4bb06d8b8af3953a49c27f3536331054d756be9c90087fdb6fb42"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateMethod._createMethodFromMethodInvocation (cognitive 23): CreateMethod._createMethodFromMethodInvocation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 6, match/switch 1 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_method.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3483f8e5367d8a4b962d4ec1ec8e3fe10e2bb3ed1291cf09f8fa8dad1ee50b9"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveTypeName.compute (cognitive 23): RemoveTypeName.compute has cognitive complexity 23 (threshold 15). Drivers by points: if/else 13 (22 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_type_name.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"62064f00b98425fd310ee2aac5d8893bfb52b52e208a8573218dd4d2dbcf9898"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplacedBy._instanceInvocation (cognitive 23): ReplacedBy._instanceInvocation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (21 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e004a99cedd670a13931945c9028fbb93a31d0b640a1c43215c721d6c76fec6"}},{"ruleId":"D2","level":"warning","message":{"text":"MemberSorter._sortUnitMembers (cognitive 23): MemberSorter._sortUnitMembers has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (20 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/sort_members.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2d6c81092dc4fd1ea9487d274b7fa70a68ddd1dfd750d3d015defb8ae8bbf48"}},{"ruleId":"D2","level":"warning","message":{"text":"_PreviewVisitor.visitAnnotation (cognitive 23): _PreviewVisitor.visitAnnotation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 6, ternaries 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/widget_previews.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"49020302ab1abbc361f22368ac07aa7de34307b7f8832d1c7e9ed98f82707ff7"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractWidgetRefactoringImpl._checkSelection (cognitive 23): ExtractWidgetRefactoringImpl._checkSelection has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f79e458947fc6b1c006f2757a827636af164bc1e3a5f356b034671c1a16ac75"}},{"ruleId":"D2","level":"warning","message":{"text":"MoveFileRefactoringImpl.buildChange (cognitive 23): MoveFileRefactoringImpl.buildChange has cognitive complexity 23 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 5 (10 pts), error handling 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/move_file.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"34eb8b0bfec93f0f1ac7b41a38363e851514ced33b0ffc90375e7508c3a80bc7"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportElementReferencesVisitor.visitSimpleIdentifier (cognitive 23): ImportElementReferencesVisitor.visitSimpleIdentifier has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (21 pts), boolean chains 2 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"bff41becfe74c0239331fc2daa48c271e7475d765ea149930752cd37eb093195"}},{"ruleId":"D2","level":"warning","message":{"text":"InheritanceManager3._inheritCovariance (cognitive 23): InheritanceManager3._inheritCovariance has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 4 (7 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":1059}}}],"partialFingerprints":{"codehealthFindingId/v1":"a24f0426b89a9d6579fc7291ea67be02b0431203cfa2c97e562125a0132725bd"}},{"ruleId":"D2","level":"warning","message":{"text":"PrefixScope.PrefixScope (cognitive 23): PrefixScope.PrefixScope has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (18 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/scope.dart"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"5325140095775cd7d202611d7d3f73fac2828a1f1bb3abddcc33a3f5e2d6af5e"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtensionMemberResolver._chooseMostSpecific (cognitive 23): ExtensionMemberResolver._chooseMostSpecific has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 2 (4 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"e34384f9753a87223499b5e16dca5781073b9a031f9a446878784fa1e059365b"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedTypeResolver._instantiateElement (cognitive 23): NamedTypeResolver._instantiateElement has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15 (20 pts), loops 1 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cc8a0c3501e18b259b9b857bc4dd426f17231fad9b8a26eb23f5b6f2a5d77cd"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver._resolveUnqualifiedNameRead (cognitive 23): PropertyElementResolver._resolveUnqualifiedNameRead has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 7, ternaries 1 (3 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":2552}}}],"partialFingerprints":{"codehealthFindingId/v1":"16f8ac67aafaf90c52982dd8b13be5fcb745ee2f633f058d213a0cd01678384d"}},{"ruleId":"D2","level":"warning","message":{"text":"TypedLiteralResolver._inferCollectionElementType (cognitive 23): TypedLiteralResolver._inferCollectionElementType has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (20 pts), boolean chains 2, match/switch 1 (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"601a017b504e7d9621368b2ffd7539298b0376c3780c503596936fb8d1383296"}},{"ruleId":"D2","level":"warning","message":{"text":"BestPracticesVerifier._checkForUnnecessaryNoSuchMethod (cognitive 23): BestPracticesVerifier._checkForUnnecessaryNoSuchMethod has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 9 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":1456}}}],"partialFingerprints":{"codehealthFindingId/v1":"b12ff500cd8a27f949ea3a93838b2847fa45b8a5c5198273770c0edc41ee2516"}},{"ruleId":"D2","level":"warning","message":{"text":"DeprecatedFunctionalityVerifier._checkForDeprecatedOptionalSuperParameters (cognitive 23): DeprecatedFunctionalityVerifier._checkForDeprecatedOptionalSuperParameters has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (22 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/deprecated_functionality_verifier.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36737f9a8165f38e14d013f2e72e6c4217ce92d38beebdabc67c1211c3d77c7"}},{"ruleId":"D2","level":"warning","message":{"text":"LiteralElementVerifier._verifyElement (cognitive 23): LiteralElementVerifier._verifyElement has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 4, match/switch 1 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/literal_element_verifier.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"370e7b1a198eb3c9a90cdee879d97f7e8ac6df37e5eea98b925970461440ba91"}},{"ruleId":"D2","level":"warning","message":{"text":"MemberDuplicateDefinitionVerifier._checkExtensionStatic (cognitive 23): MemberDuplicateDefinitionVerifier._checkExtensionStatic has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (18 pts), loops 2 (5 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a91369a2eadddc62ce8ac54ac9a4ff27f888585fc97871aba318bba6974ef16"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForBaseClassOrMixinImplementedOutsideOfLibrary (cognitive 23): ErrorVerifier._checkForBaseClassOrMixinImplementedOutsideOfLibrary has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (13 pts), boolean chains 6, loops 2 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":3858}}}],"partialFingerprints":{"codehealthFindingId/v1":"42161a061c8af589dc22c35df6da80984cd90c06e83040407f772c5044d7e080"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForWrongTypeParameterVarianceInMethod (cognitive 23): ErrorVerifier._checkForWrongTypeParameterVarianceInMethod has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 3 (7 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8241}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa132281923782ea6cf0f0f26e91c8c02fdaac385299bf22e15eb3ae2cadefd4"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor.computeWhyNotPromotedMessages (cognitive 23): ResolverVisitor.computeWhyNotPromotedMessages has cognitive complexity 23 (threshold 15). Drivers by points: if/else 6 (21 pts), loops 1 (2 pts) (nesting depth added 16). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8abf81132b5b23356fa033c4fb45d38b49cf4e9218e36baaf1a080ad68d71f7"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor.setWriteElement (cognitive 23): ResolverVisitor.setWriteElement has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 3, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":1949}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e277eb7fde466276f19d69844dfabcf553e5452f9dcced6c0072dd1367893a9"}},{"ruleId":"D2","level":"warning","message":{"text":"IgnoreInfo.isIgnoreForFileComment (cognitive 23): IgnoreInfo.isIgnoreForFileComment has cognitive complexity 23 (threshold 15). Drivers by points: if/else 21 (22 pts), loops 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/ignore_comments/ignore_info.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1565783529b494ee974f5633efeda2638815c311fc8c22966fbb44a909feb1f"}},{"ruleId":"D2","level":"warning","message":{"text":"DartEditBuilderImpl._canWriteType (cognitive 23): DartEditBuilderImpl._canWriteType has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 7, loops 1 (2 pts) (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1131}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1347b9eb74d5b2e14dbff3f9f56a57645776713798f6b6c6aed44d26ccf0067"}},{"ruleId":"D2","level":"warning","message":{"text":"DartFileEditBuilderImpl._insertDocImportIntoLibraryDirective (cognitive 23): DartFileEditBuilderImpl._insertDocImportIntoLibraryDirective has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (11 pts), ternaries 3 (6 pts), boolean chains 5, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":3210}}}],"partialFingerprints":{"codehealthFindingId/v1":"c68baf2c338373f77ba5c83050919e7172049aab550aa78c9323ac2d3bb3982c"}},{"ruleId":"D2","level":"warning","message":{"text":"MapTracerVisitor.visitDynamicCallSiteTypeInformation (cognitive 23): MapTracerVisitor.visitDynamicCallSiteTypeInformation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (21 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/map_tracer.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c9dd73701884ed3b6ee4bf5633bfb50148377e853a827df4011918f204d8c33"}},{"ruleId":"D2","level":"warning","message":{"text":"TracerVisitor.visitDynamicCallSiteTypeInformation (cognitive 23): TracerVisitor.visitDynamicCallSiteTypeInformation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 17 (21 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e96abcf75767571291f13baade27c8bc459ba9b2e568360fd1d95d9909267da"}},{"ruleId":"D2","level":"warning","message":{"text":"CallPosition.getSemanticPositionForCall (cognitive 23): CallPosition.getSemanticPositionForCall has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 9, loops 1 (2 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bc26561cead797745edeb55cad971b9a9c715d621fb4f8d074c037627f8a5de"}},{"ruleId":"D2","level":"warning","message":{"text":"_RecipeToIdentifier.visitFunctionType (cognitive 23): _RecipeToIdentifier.visitFunctionType has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 5 (9 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/type_reference.dart"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26736bc40520525c1cacd4fb283d1184717c662a2322208fe66847511abffcc"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitStringify (cognitive 23): SsaInstructionSimplifier.visitStringify has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (18 pts), ternaries 1 (3 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2407}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d2b01e865ae4474df2cce0b37a8e5b57a16e6e3458c0fa4c64d70b1d70ab294"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaValueRangeAnalyzer.visitConditionalBranch (cognitive 23): SsaValueRangeAnalyzer.visitConditionalBranch has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (23 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9eaafcf41614b829f83981ffea46c7196683c407ce517095c56b4fa209eb851"}},{"ruleId":"D2","level":"warning","message":{"text":"_DominatorFinder.run (cognitive 23): _DominatorFinder.run has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 4 (7 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/graph.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"8026d15d647ea2c47529b0ab6a0c8b111e90992aa839bd9ad576a9818e0f6413"}},{"ruleId":"D2","level":"warning","message":{"text":"BuildCliSubcommand.run (cognitive 23): BuildCliSubcommand.run has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16 (19 pts), boolean chains 3, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/build.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"8543d15a0f933a1c5b13735e702322cf96b9318d9c21f55281eab32a850c64ba"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitFactoryInvocation (cognitive 23): ProgramCompiler._emitFactoryInvocation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (16 pts), ternaries 3, boolean chains 2, match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7461}}}],"partialFingerprints":{"codehealthFindingId/v1":"877857bf7adaf83915396583fb6840d90da48ff8f8a392ddf50f2ae3b80d1374"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitCast (cognitive 23): ProgramCompiler._emitCast has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 4 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7758}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0f28e9892a9e1d321d304dcfd46ebf9783f651e29b4354d824de3fa7522d76"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitJSInteropClassNonExternalMembers (cognitive 23): LibraryCompiler._emitJSInteropClassNonExternalMembers has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 4, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1601}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9a136416a814a93444b0df75f10934dc06f154f5849d65e423f95ea7d09f5e4"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitFactoryInvocation (cognitive 23): LibraryCompiler._emitFactoryInvocation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (16 pts), ternaries 3, boolean chains 2, match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8328}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d69edfe0115dcf2b6a502838aced9d6a4ff1635aeca5c5bf76bf7cc8b1e64de"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitCast (cognitive 23): LibraryCompiler._emitCast has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 4 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8625}}}],"partialFingerprints":{"codehealthFindingId/v1":"e784da4853581850aa6755c87d1e47ed4bfac7f9d7f6923d040db7f4577decd8"}},{"ruleId":"D2","level":"warning","message":{"text":"Import.finalizeImports (cognitive 23): Import.finalizeImports has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/import.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"804eaedb7192c7e466caa4031fbbe214bb517a196819f31378a00e35c4db6deb"}},{"ruleId":"D2","level":"warning","message":{"text":"_InitializationFromUri.initialize (cognitive 23): _InitializationFromUri.initialize has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (10 pts), ternaries 2 (8 pts), boolean chains 4, error handling 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3369}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2e01c1a47be441d2f87f9b76ef549d7e784a0332d62ef3cf7e356134364c51"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalSerializer.initialize (cognitive 23): IncrementalSerializer.initialize has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 4 (7 pts), error handling 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_serializer.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af2602fa29764fcaa1691b76abd57f976e37dc7700ceac11e53398824657625"}},{"ruleId":"D2","level":"warning","message":{"text":"FactoryEncoding._isCyclicRedirectingFactory (cognitive 23): FactoryEncoding._isCyclicRedirectingFactory has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (9 pts), ternaries 4 (7 pts), boolean chains 6, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d0c20dad99ba078cbb9715d411c651f4a4818347861cf8410a30e92928a5303"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator._evaluate (cognitive 23): ConstantEvaluator._evaluate has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (20 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2820}}}],"partialFingerprints":{"codehealthFindingId/v1":"034360979fedc389526e095319fa1f21a46798053e2622ae476fa4b864f27226"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelCompiledData.getOffsetFromId (cognitive 23): KernelCompiledData.getOffsetFromId has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (23 pts) (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/kernel_id_testing.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ad172d7cd77b983257517de90de81b07d08d1dee5a205ce15e9460265b0e5a"}},{"ruleId":"D2","level":"warning","message":{"text":"MergeVisitor.mergeFunctionTypes (cognitive 23): MergeVisitor.mergeFunctionTypes has cognitive complexity 23 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 5 (8 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/merge_visitor.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"53a977e570c5cf49471612b57368559f41b52194dd9b028fe50d2cfcb9e423e2"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._visitConstructorInvocation (cognitive 23): _Visitor._visitConstructorInvocation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 4, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_redundant_argument_values.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1ee341108608367578a26e1e3596dc2aa465f6bbe4ab2ae1222550c7f07c007"}},{"ruleId":"D2","level":"warning","message":{"text":"_DeclarationVisitor.checkPatternElements (cognitive 23): _DeclarationVisitor.checkPatternElements has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 2 (4 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/parameter_assignments.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd3e5aab77d28e22f406fdc5f3a839d090e1ee3fd3d7c0573cbc4d162d1a0a71"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitMethodInvocation (cognitive 23): _Visitor.visitMethodInvocation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 3 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_iterable_whereType.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"acfbdf999f6789420f839d0a859f86f3b44039de90ace4deb138e1d2ad920c1b"}},{"ruleId":"D2","level":"warning","message":{"text":"_DeclarationGatherer.addDeclarations (cognitive 23): _DeclarationGatherer.addDeclarations has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (21 pts), boolean chains 1, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unreachable_from_main.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"17e74aad64bce5b1ad78c99eb98c4588bc0bc6c96744d2a081bde2aaa478937b"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitIfElement (cognitive 23): _Visitor.visitIfElement has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_null_aware_elements.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"2131321079696cef0b8e967d83eb3409e6082bfa0f33242220b91e94a5d190c7"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseType (cognitive 23): Parser.parseType has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/testing/type_parser.dart"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"90173f0202c9d2cc74224c30ef93514c0cf0394063a1bf09c1b9c8f8936ee6ae"}},{"ruleId":"D2","level":"warning","message":{"text":"WidgetCreatorTracker._transformWidgetConstructors (cognitive 23): WidgetCreatorTracker._transformWidgetConstructors has cognitive complexity 23 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 4, loops 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd1b7d8b6261ba77e9c71a4b6995ffe689adf0d3c6a86b8b21c28a45ccb76e64"}},{"ruleId":"D2","level":"warning","message":{"text":"_WorkList.processInvocation (cognitive 23): _WorkList.processInvocation has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (23 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1979}}}],"partialFingerprints":{"codehealthFindingId/v1":"93df2b96f1ac7e5703cf3406b2e16c3857f77d5944a29cbadf0c0f359b8ceb02"}},{"ruleId":"D2","level":"warning","message":{"text":"SummaryCollector.rawArguments (cognitive 23): SummaryCollector.rawArguments has cognitive complexity 23 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 3 (8 pts), boolean chains 1, match/switch 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbd239c997086c41c84f6593ef98cbc22e75f7745eea0bb08e12e6f272c100c1"}},{"ruleId":"D2","level":"warning","message":{"text":"SetType.union (cognitive 23): SetType.union has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12 (20 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97ba1a389407547d49722ea36bf67ed4fa83a2b3a06316871d3c147dda5d432"}},{"ruleId":"D2","level":"warning","message":{"text":"WideConeType.intersection (cognitive 23): WideConeType.intersection has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15 (21 pts), loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"29610298d816917899ec741d71cf77b7028f99a83f2a63387433ce797c193442"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleUnreachableCodeElimination.visitSwitchStatement (cognitive 23): SimpleUnreachableCodeElimination.visitSwitchStatement has cognitive complexity 23 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 3 (4 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/unreachable_code_elimination.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"8898cb5583c656fbf57dd3b01d6c0c66245ac985f940eb6318aa32d3d9494702"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlDartGenerator.AddMembers (cognitive 23): HtmlDartGenerator.AddMembers has cognitive complexity 23 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 4 (6 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"483693439b5f0dac89a51e2b5044c7c931706483fda27dd039272a9bd3351d2c"}},{"ruleId":"D2","level":"warning","message":{"text":"timeline.processTimelineResponse (cognitive 23): timeline.processTimelineResponse has cognitive complexity 23 (threshold 15). Drivers by points: loops 3 (12 pts), if/else 6 (11 pts) (nesting depth added 14). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/web/timeline.js"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"60acddbb6048339c6cbdb63b7dfaa968013426bbf8fee664cea987086b2fd4a5"}},{"ruleId":"D2","level":"warning","message":{"text":"graphexplorer.Graph.loadDartHeapSnapshot (cognitive 23): graphexplorer.Graph.loadDartHeapSnapshot has cognitive complexity 23 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 6 (8 pts), ternaries 1 (3 pts), match/switch 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"f245858903519fd88bdeaff1a6322deec37b2e057822c777defec7fe57ca5034"}},{"ruleId":"D2","level":"warning","message":{"text":"computeDominators (cognitive 23): computeDominators has cognitive complexity 23 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 4 (7 pts), ternaries 1 (4 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"12957f31e72fb66903d082c1271ca03db69a2452892608b3cdf4f260bcacf46d"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeHex (cognitive 22): AbstractScanner.tokenizeHex has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 5, ternaries 1 (3 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1225}}}],"partialFingerprints":{"codehealthFindingId/v1":"d21be260cde04803f28645cc7f4e40ebf65cddb4b3e05ba545efdaad28d68954"}},{"ruleId":"D2","level":"warning","message":{"text":"DartLanguageServerBenchmark._launch (cognitive 22): DartLanguageServerBenchmark._launch has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (13 pts), ternaries 3 (6 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/language_server_benchmark.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b6f050640babaa1aa9d9876a1bf6e91602deebaadb953c3154b5f6dd4a15899"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeShapeMetricsComputer._writeChildData (cognitive 22): CodeShapeMetricsComputer._writeChildData has cognitive complexity 22 (threshold 15). Drivers by points: loops 5 (14 pts), if/else 3 (8 pts) (nesting depth added 14). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/code_metrics.dart"},"region":{"startLine":1374}}}],"partialFingerprints":{"codehealthFindingId/v1":"f83368ad48b73ac0f8182c13e7c7a9ddd801fb034a02d401b3729d896b09534b"}},{"ruleId":"D2","level":"warning","message":{"text":"Translator.getClosure (cognitive 22): Translator.getClosure has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 4, ternaries 2, boolean chains 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1343}}}],"partialFingerprints":{"codehealthFindingId/v1":"e625e29a0a0b4dd6c63fa1aca0add2d70c0e14f3fd187bd3d42ca346c74a9123"}},{"ruleId":"D2","level":"warning","message":{"text":"_DartWasmLibraryChecks.visitStaticInvocation (cognitive 22): _DartWasmLibraryChecks.visitStaticInvocation has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 2 (6 pts), boolean chains 1 (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/wasm_library_checks.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f83d73948450ec03f7435b9570a771fd3115a71aa2d7ad3e9f1f9b9979b2a60"}},{"ruleId":"D2","level":"warning","message":{"text":"_VerifyingVisitor.visitProcedure (cognitive 22): _VerifyingVisitor.visitProcedure has cognitive complexity 22 (threshold 15). Drivers by points: boolean chains 11, if/else 11. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e07c00cf53057bdd038ef13598437b2aa37d0859c5b6bc742a6a7df6702ff72"}},{"ruleId":"D2","level":"warning","message":{"text":"StatusFile.read (cognitive 22): StatusFile.read has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (11 pts), error handling 2 (7 pts), loops 2 (4 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/status_file/lib/status_file.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"30f9aa41ae7d807dee5bf22557f64e676b87fe237e7e14ad7422461de4a72e53"}},{"ruleId":"D2","level":"warning","message":{"text":"Api.parse (cognitive 22): Api.parse has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (11 pts), boolean chains 6, loops 3 (5 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab4600a0f193dfdf56e68bbe5bf5cf6b27e53c843a6d36930ec6ca823372935a"}},{"ruleId":"D2","level":"warning","message":{"text":"Type.generateAssert (cognitive 22): Type.generateAssert has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 2 (5 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":965}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f7a3452cb2d10b9021858265aa6d00cdad36a146a943aba910a317557dd5afb"}},{"ruleId":"D2","level":"warning","message":{"text":"_StringBase.indexOf (cognitive 22): _StringBase.indexOf has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"065e1d75a5c299af450832f1adfd0b9ffdb173e4275da127507c0d6585909157"}},{"ruleId":"D2","level":"warning","message":{"text":"int._parseRadix (cognitive 22): int._parseRadix has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 3, loops 2, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/int_patch.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"04dae99a6a0dcb266a3f388a7be2fb3d6e526ed250fab2589072010d145b4510"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64CodeGenerator._prepareNamedParameters (cognitive 22): Arm64CodeGenerator._prepareNamedParameters has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (12 pts), ternaries 3 (5 pts), loops 4, boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb53b135ec7e3cf2cfb18f97d94428102f7c7765d896392013629e2e9a73e110"}},{"ruleId":"D2","level":"warning","message":{"text":"RegisterAllocationChecker.computeInOut (cognitive 22): RegisterAllocationChecker.computeInOut has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 5 (8 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/regalloc_checker.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fd7bcf39ac1c9efceebdf3990ac119713bb27e1d14a01f6f6c730aabb55047b"}},{"ruleId":"D2","level":"warning","message":{"text":"DateTime.parse (cognitive 22): DateTime.parse has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (16 pts), ternaries 1 (4 pts), loops 1 (2 pts) (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/date_time.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"99dc39ef5125e98ff07f4395078f63980a83d22d1b13a57025fbfe74e3732989"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionRegistry.getFunction (cognitive 22): FunctionRegistry.getFunction has cognitive complexity 22 (threshold 15). Drivers by points: boolean chains 11, if/else 6, ternaries 2 (4 pts), match/switch 1 (nesting depth added 2). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/functions.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dde319ace61bfb4f0197b78f3266820747ccf3461d9ad0080b85688cbb590d7"}},{"ruleId":"D2","level":"warning","message":{"text":"SSALivenessAnalysis.computeInitialSets (cognitive 22): SSALivenessAnalysis.computeInitialSets has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 4 (11 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/liveness_analysis.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"898889bfc46e4761f04d7660c7fe065a2b9f83fc577b9ab99f3a87e744eab339"}},{"ruleId":"D2","level":"warning","message":{"text":"ValueNumbering.run (cognitive 22): ValueNumbering.run has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 3 (5 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/value_numbering.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"32bbbbaffd6ae70800a5baef9ff53312d8aef7b4115ceca2a2844b1d5bb89ef0"}},{"ruleId":"D2","level":"warning","message":{"text":"ListPatternStaticType.witnessToDart (cognitive 22): ListPatternStaticType.witnessToDart has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 4, boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/list.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c094fd8fef9264ed32023735547d734bf3f2d5cb94cbb4592c98f347bc3acfb"}},{"ruleId":"D2","level":"warning","message":{"text":"ModifierContext.parseFormalParameterModifiers (cognitive 22): ModifierContext.parseFormalParameterModifiers has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 1, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"d13ae34788f821b5a9a91570323cfbd93f62bbeac45c0a5980f1ef05f9dcf81e"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseEnumHeaderOpt (cognitive 22): Parser.parseEnumHeaderOpt has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 2, ternaries 1 (2 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":2737}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d70edb62be1e1f3b431543281c5c9cb923cb28fe2bfc038d911a8cd28731fac"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.computeTypeAfterIsOrAs (cognitive 22): Parser.computeTypeAfterIsOrAs has cognitive complexity 22 (threshold 15). Drivers by points: boolean chains 14, if/else 4 (8 pts) (nesting depth added 4). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9647}}}],"partialFingerprints":{"codehealthFindingId/v1":"d877f9ee992ed32732e51c8419deeee9f0d862bd244c9c740e51f21dfda3c202"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.looksLikeExpressionAfterAwaitOrYield (cognitive 22): Parser.looksLikeExpressionAfterAwaitOrYield has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 10 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10551}}}],"partialFingerprints":{"codehealthFindingId/v1":"80bede62593818cf6fc2665ca1e22e4a59c40ed64d72dfc80376bb83115255d5"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeHex (cognitive 22): AbstractScanner.tokenizeHex has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 5, ternaries 1 (3 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1610}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd7ba4910aff26538e6b302c2da1e77c8bf63e8c1bafcc6c9066fc5a58838a61"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAnalyzer.analyzeMapPattern (cognitive 22): TypeAnalyzer.analyzeMapPattern has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (18 pts), boolean chains 2, loops 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":1482}}}],"partialFingerprints":{"codehealthFindingId/v1":"214bbf472e34ef8b9774db596edcb196c0cf45475bb372bf37b1501933bc247c"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractRefactorCommandHandler.getRefactoring (cognitive 22): AbstractRefactorCommandHandler.getRefactoring has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (15 pts), ternaries 3 (6 pts), match/switch 1 (nesting depth added 11). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a7a8ae2b19ea6be9c617a3fa0085df0af624c50ce42c9c2aa706b6ae680457f"}},{"ruleId":"D2","level":"warning","message":{"text":"DevAnalysisServer.processDirectories (cognitive 22): DevAnalysisServer.processDirectories has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 3, ternaries 2, loops 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/dev_server.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc188509f4abab8f84d31ebb27fbfaa1d67fd71d2cb117766f4bfe2ef807dc6c"}},{"ruleId":"D2","level":"warning","message":{"text":"Driver.start (cognitive 22): Driver.start has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (12 pts), boolean chains 4, ternaries 3, error handling 1 (2 pts), match/switch 1 (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"60531fad448ae0129b9160c968d6c62a241b5e7349555b5aa37f0729f87d159d"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._addExternalTopLevelDeclarations (cognitive 22): DeclarationHelper._addExternalTopLevelDeclarations has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (19 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"34bd35dc9a95606d5393aeef3762074574079399df81d9f7e0baea0341f287f7"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitExtensionDeclaration (cognitive 22): InScopeCompletionPass.visitExtensionDeclaration has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1285}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e6a560c3515331e48802f964a1604cfa9070b9dc985fda7260a44fcd787c35"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitMixinDeclaration (cognitive 22): InScopeCompletionPass.visitMixinDeclaration has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (20 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2178}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe834c61a5f36f03ac88fab75ce9eb2c878e761daad401e329a099c59f222ca3"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementCompletionProcessor._complete_switchStatement (cognitive 22): StatementCompletionProcessor._complete_switchStatement has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (16 pts), ternaries 1 (4 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"74186dd706d2d0476d5a236aa4d7547811f149f7341ef873483d95b470cb55d1"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToExpressionFunctionBody.compute (cognitive 22): ConvertToExpressionFunctionBody.compute has cognitive complexity 22 (threshold 15). Drivers by points: if/else 17 (19 pts), boolean chains 3 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_expression_function_body.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"db97a3452b475e8011dcb621e50201e8816f8af0c611bc6af0eed8a9e32fd986"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToWildcardVariable.compute (cognitive 22): ConvertToWildcardVariable.compute has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 2, match/switch 1 (2 pts), loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_wildcard_variable.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"82db006bdf579ada2605581f3c9f9bd8683cf3d6915a8b00188b508ab4e24584"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateMissingOverrides.compute (cognitive 22): CreateMissingOverrides.compute has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 3, boolean chains 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_missing_overrides.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f4a4c8c7041685bdbd2b61e41a6c3e2900cf0b1305866e06f13f87bbdbcfaa9"}},{"ruleId":"D2","level":"warning","message":{"text":"FlutterParentAndChild.swapParentAndChild (cognitive 22): FlutterParentAndChild.swapParentAndChild has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (17 pts), loops 3, boolean chains 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_swap_with_child.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"e67e360dfbd76d1782f66b8126d6931ad2fc95c8c1eedd6724ff1dcc5d164748"}},{"ruleId":"D2","level":"warning","message":{"text":"AddTypeParameter.validate (cognitive 22): AddTypeParameter.validate has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (20 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/add_type_parameter.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a7b28b5d118346f86adfe767929a192ba5e6c1aa7355f9ba28dc2fbfd7f6abb"}},{"ruleId":"D2","level":"warning","message":{"text":"_MatcherBuilder.buildMatchersForNode (cognitive 22): _MatcherBuilder.buildMatchersForNode has cognitive complexity 22 (threshold 15). Drivers by points: if/else 17 (20 pts), boolean chains 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d573146b5b8ff68188565945882c5eb61317f68e6dd5a5ca49876a41486d83"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameParameter.apply (cognitive 22): RenameParameter.apply has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (21 pts), boolean chains 1 (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename_parameter.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bc2dd82baea6e237f8549f5e710e4b26fe5565cc91a1280afc82ceae3b5bfeb"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameParameter.validate (cognitive 22): RenameParameter.validate has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 1 (3 pts) (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename_parameter.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"f58ad6ffdf62b406bf6214f4d88d0d85fa7fa3f4ff4061322d81447358477628"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractWidgetRefactoringImpl._writeWidgetDeclaration (cognitive 22): ExtractWidgetRefactoringImpl._writeWidgetDeclaration has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (16 pts), loops 3 (4 pts), boolean chains 1, ternaries 1 (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c0af549b69c57830106f469c59c5a6bbbc1d47d399e18d9ff8cc94283c7a05"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameConstructorRefactoringImpl.buildChange (cognitive 22): RenameConstructorRefactoringImpl.buildChange has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (20 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_constructor.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee148798f84d7c2d657c64f85ae2b03a61800c911a8eba6de56792160a70fcd"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextRootImpl._isExcluded (cognitive 22): ContextRootImpl._isExcluded has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 4 (6 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_root.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecef10314c08bf2e57f5b2928f9c5186e2bc67de36ba810b215d91e41d53ad9c"}},{"ruleId":"D2","level":"warning","message":{"text":"_IndexContributor.visitSimpleIdentifier (cognitive 22): _IndexContributor.visitSimpleIdentifier has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14 (18 pts), boolean chains 4 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":1405}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c50db077126e3cf7f11332d609487d27f3d3dddbb5eeac25329978e6ffb82d7"}},{"ruleId":"D2","level":"warning","message":{"text":"Search.references (cognitive 22): Search.references has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13, boolean chains 9. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"703f09d17a899b18b02a17210eb58e80fbb1ba398ad4ae23bbb888e96178fa88"}},{"ruleId":"D2","level":"warning","message":{"text":"Search._searchReferences_Field (cognitive 22): Search._searchReferences_Field has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 4 (5 pts), match/switch 1 (3 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a2db8c6f7e37a2103d8d697c4381aedcc7bf4c0d215ec554460c16d05506c9"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVisitor.visitBinaryOperatorInvocation (cognitive 22): ConstantVisitor.visitBinaryOperatorInvocation has cognitive complexity 22 (threshold 15). Drivers by points: if/else 21, match/switch 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"63923f5ad8a8f3602de3502b18f67830d58348c1dab9700bc02085676a33220b"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystemImpl._futureTypeOfBounded (cognitive 22): TypeSystemImpl._futureTypeOfBounded has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (21 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1822}}}],"partialFingerprints":{"codehealthFindingId/v1":"63831f0a36ef7f92e869615a783243046c70b61d630dd1ad347f636f2884c68e"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodInvocationResolver.resolve (cognitive 22): MethodInvocationResolver.resolve has cognitive complexity 22 (threshold 15). Drivers by points: if/else 15 (20 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b675afb8e0492444b38c76a5fc2b513e23106268b960f8c3f9569e38478bdbb"}},{"ruleId":"D2","level":"warning","message":{"text":"_ErrorHelper.reportNullOrNonTypeElement (cognitive 22): _ErrorHelper.reportNullOrNonTypeElement has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14 (16 pts), boolean chains 6 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"e12fcf2d7c2691ca29690446b9d374f436ff6f8b25d6db962994702ef1e8b636"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordTypeAnnotationResolver.reportInvalidFieldNames (cognitive 22): RecordTypeAnnotationResolver.reportInvalidFieldNames has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (20 pts), boolean chains 1, loops 1 (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/record_type_annotation_resolver.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"c740413f1f1af958f47edb2931c64f43178ec26bea5e440db52958bd1092a7fe"}},{"ruleId":"D2","level":"warning","message":{"text":"TypedLiteralResolver.resolveSetOrMapLiteral (cognitive 22): TypedLiteralResolver.resolveSetOrMapLiteral has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (20 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"6471575d7c308ceb2e7f8f519ca9ea08ddafe4537ac97b8bc1ab23ccd7b268ed"}},{"ruleId":"D2","level":"warning","message":{"text":"_Constructor.updateWithInitializers (cognitive 22): _Constructor.updateWithInitializers has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (20 pts), boolean chains 1, loops 1 (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/constructor_fields_verifier.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe853743792ff59524fa4c1da81e4d6a561147fd82086f0c526e93676f1202c2"}},{"ruleId":"D2","level":"warning","message":{"text":"AstBuilder.endVariablesDeclaration (cognitive 22): AstBuilder.endVariablesDeclaration has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (20 pts), boolean chains 2 (nesting depth added 14). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":3625}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b2d768d2f45ae2102a4f076d974f860771f21507941aedc31f930bd5eac4fac"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryExportRequirements.build (cognitive 22): LibraryExportRequirements.build has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 3 (6 pts), match/switch 1 (3 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/requirements.dart"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc267be59190eea9f826c1d816dbc895fbcd70ada65dc026d7b231136ac619a7"}},{"ruleId":"D2","level":"warning","message":{"text":"SdkConstraintExtractor._initializeTextAndOffset (cognitive 22): SdkConstraintExtractor._initializeTextAndOffset has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (19 pts), error handling 1 (2 pts), boolean chains 1 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/hint/sdk_constraint_extractor.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"31cd24b1d4bacfc031f8b5342594fe793ca1311151ea071cc430784e4c893d21"}},{"ruleId":"D2","level":"warning","message":{"text":"DartEditBuilderImpl.writeConstructorDeclaration (cognitive 22): DartEditBuilderImpl.writeConstructorDeclaration has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16 (20 pts), loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"6127d045e1b707f4d5b8c4b2b99d7badd948f04a71967d8166263ce1906d0e85"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelInfoCollector.visitLibrary (cognitive 22): KernelInfoCollector.visitLibrary has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (19 pts), loops 2, boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"28da3c13a8efbd6ca540e66213958db56e397c4cf9f58c427534bbb31c7dd2f1"}},{"ruleId":"D2","level":"warning","message":{"text":"DumpInfoTask.buildDumpInfoData (cognitive 22): DumpInfoTask.buildDumpInfoData has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 6 (9 pts), ternaries 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"c99fee8701b2169795a054399034f83ae80e9f9663a7aa39696f2c862cd3c3e4"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelTypeGraphBuilder.visitLogicalExpression (cognitive 22): KernelTypeGraphBuilder.visitLogicalExpression has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (22 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2265}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd619005500a967537d3f1cf94a7f42cf0ffd4746a4ca4dd986aece382e8e7c"}},{"ruleId":"D2","level":"warning","message":{"text":"TracerVisitor.analyzeStoredIntoList (cognitive 22): TracerVisitor.analyzeStoredIntoList has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 2 (5 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 2 other methods here (TracerVisitor.analyzeStoredIntoSet, TracerVisitor.analyzeStoredIntoMap) 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":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"a824fa8cffc7a4ae691b18dd68986f7bca02e77bf53bf149a96751c171fa1fc8"}},{"ruleId":"D2","level":"warning","message":{"text":"TracerVisitor.analyzeStoredIntoSet (cognitive 22): TracerVisitor.analyzeStoredIntoSet has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 2 (5 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 2 other methods here (TracerVisitor.analyzeStoredIntoList, TracerVisitor.analyzeStoredIntoMap) 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":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8ba0a8e9c98dec5da10f23d70f2f47b7adcc2b029214bff56a4a44eb745c21"}},{"ruleId":"D2","level":"warning","message":{"text":"TracerVisitor.analyzeStoredIntoMap (cognitive 22): TracerVisitor.analyzeStoredIntoMap has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 2 (5 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 2 other methods here (TracerVisitor.analyzeStoredIntoList, TracerVisitor.analyzeStoredIntoSet) 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":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b4bd0317f3b7ae9e5d5fbe0fd7fd2ad1e417e262419950fcc1e93f678d3e8a4"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordTypeMask.isInMask (cognitive 22): RecordTypeMask.isInMask has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"2573ed04a575a27df6e87512f19640029a46e4bf2d0f00d39f5cb42e1d1375bc"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentEmitter.emitTypeRules (cognitive 22): FragmentEmitter.emitTypeRules has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (8 pts), ternaries 2 (7 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":2122}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9227102f75072b11b0acc1702cc90d1506fea33abd6f442359a2b376af9fed0"}},{"ruleId":"D2","level":"warning","message":{"text":"JsKernelToElementMap.JsKernelToElementMap (cognitive 22): JsKernelToElementMap.JsKernelToElementMap has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 6 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f031b7b90d49f483d97535750f898e7e3458ba5056ca84be2fd5a2b556fc0de"}},{"ruleId":"D2","level":"warning","message":{"text":"JsKernelToElementMap._buildClosureClassFields (cognitive 22): JsKernelToElementMap._buildClosureClassFields has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (20 pts), loops 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1923}}}],"partialFingerprints":{"codehealthFindingId/v1":"e190ebb2ff2c42f17d43a77dede55bcc37fe02a4509510a34494193726511565"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator._expressionType (cognitive 22): SsaCodeGenerator._expressionType has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (14 pts), ternaries 1 (4 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"17b4ec7ec966c7a489e5d14aa8d4128413318b14d3073bb18f1ac51e24594817"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaTrustedLateCheckRemover.visitLateCheck (cognitive 22): SsaTrustedLateCheckRemover.visitLateCheck has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (21 pts), loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75c661e49f5c0dd552b2f9eb0e7e1be4fcbf10d12b8dc2970669c134d4355ab"}},{"ruleId":"D2","level":"warning","message":{"text":"ShiftRightSpecializer.tryConvertToBuiltin (cognitive 22): ShiftRightSpecializer.tryConvertToBuiltin has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (19 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":1286}}}],"partialFingerprints":{"codehealthFindingId/v1":"68c8d2524a96e8203bfa49bd5f17653d424aca88eb0ec1e90274181b072da161"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitTypeEval (cognitive 22): SsaInstructionSimplifier.visitTypeEval has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (22 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2504}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c96071a7654fb5d23b98897e8db43bd59718ce323cc6fa54cf7d44c4a3f4ed"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitShiftRight (cognitive 22): SsaInstructionSimplifier.visitShiftRight has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (14 pts), ternaries 1 (5 pts), boolean chains 3 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2939}}}],"partialFingerprints":{"codehealthFindingId/v1":"909582f4f2dce72bd71dd3c94ac15bd02d83e2c412634652571edf3f44f37988"}},{"ruleId":"D2","level":"warning","message":{"text":"SideEffects.toString (cognitive 22): SideEffects.toString has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/side_effects.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"05bfa7df08356ecaa874df9631bb2205fb5e906d0f97352fff135c349dfd85dc"}},{"ruleId":"D2","level":"warning","message":{"text":"DartDebugAdapter._configureIsolateSettings (cognitive 22): DartDebugAdapter._configureIsolateSettings has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 2, error handling 2, loops 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":790}}}],"partialFingerprints":{"codehealthFindingId/v1":"225dfae4bc7549870d785215bdc01d488b1c6552540ff52b95b771add96a1891"}},{"ruleId":"D2","level":"warning","message":{"text":"BaseDebugAdapter.handleIncomingRequest (cognitive 22): BaseDebugAdapter.handleIncomingRequest has cognitive complexity 22 (threshold 15). Drivers by points: if/else 22. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/base_debug_adapter.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f2eac0d52c1416ead5333f4541c488234dd77905af2af245e2c6d3fd94ddeb3"}},{"ruleId":"D2","level":"warning","message":{"text":"InstallCommand._parseArguments (cognitive 22): InstallCommand._parseArguments has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 5, ternaries 2 (4 pts), error handling 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/install.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"223e78ffe8e6f95113a9c08d0ee49e33c3cc44cc047111a38109db9368b2b497"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionTypeBuilderImpl.substituteRange (cognitive 22): FunctionTypeBuilderImpl.substituteRange has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/function_type_builder.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e7609fe37021c94d22b5f89a768fbb2856051ba70a7393917ba9bf142606c55"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordTypeBuilderImpl.printOn (cognitive 22): RecordTypeBuilderImpl.printOn has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 2 (4 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/record_type_builder.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3af41541b69d4dc347d1ae8ef9152c8ee2c00a1f417feb2d00aa439cf8195c3"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endSwitchBlock (cognitive 22): BodyBuilderImpl.endSwitchBlock has cognitive complexity 22 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 3 (5 pts), ternaries 2 (5 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":5371}}}],"partialFingerprints":{"codehealthFindingId/v1":"f189e164a8009e503c5135cf78ac1ae27a33bdeb518249014f9beb9f6e4a5b8b"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.isSubtype (cognitive 22): ConstantEvaluator.isSubtype has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5772}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fca8d7fbfc626529afcb1ea70a84adbd1556ca6538978e8db75405d176f3ea1"}},{"ruleId":"D2","level":"warning","message":{"text":"CfeSealedClassOperations.getDirectSubclasses (cognitive 22): CfeSealedClassOperations.getDirectSubclasses has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 3 (5 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab496f42c223d40924aa940b8e58277b24b708ac9ee770a44f931d6ec6689d4"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceExtensionTypeDeclarationBuilder._buildRepresentationType (cognitive 22): SourceExtensionTypeDeclarationBuilder._buildRepresentationType has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (22 pts) (nesting depth added 13). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"c44fbdc3616f6699929746e1908c4839658f9515a0c82320f5b67bf752dfedda"}},{"ruleId":"D2","level":"warning","message":{"text":"DartTypeToTextVisitor.visitFunctionType (cognitive 22): DartTypeToTextVisitor.visitFunctionType has cognitive complexity 22 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_testing_utils.dart"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cb5d80f2f1f1d48999c00ced2f46822ac4e9167f84c78c95733b82285189399"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase._computeAssignabilityKind (cognitive 22): InferenceVisitorBase._computeAssignabilityKind has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 4, match/switch 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":859}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd0525f108ceb0f18098d4787ab32d15ca278dc667f1fdc25d44a8598d051412"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase.findInterfaceMember (cognitive 22): InferenceVisitorBase.findInterfaceMember has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 4, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1394}}}],"partialFingerprints":{"codehealthFindingId/v1":"d518c259c499335b21d7c23f7ce7c85496c0363f44974d48167ace8288dcbb91"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase.preCheckInvocationContravariance (cognitive 22): InferenceVisitorBase.preCheckInvocationContravariance has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 8 (nesting depth added 8). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":5010}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5fc44b5c0ce76782647edf50f4cc42687b5764cc15f6dd47cd72a73ef00ded8"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitFieldDeclaration (cognitive 22): _Visitor.visitFieldDeclaration has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_field_initializers_in_const_classes.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb0148882acff3a63a9953771fbaba064b793963463dfac7c9eb773a83ba0948"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitClassDeclaration (cognitive 22): _Visitor.visitClassDeclaration has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (19 pts), boolean chains 2, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/hash_and_equals.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"36f3e7158df2a3ebdb9c305cf25a915a009895bc84f392be4c162c8c0811d8e7"}},{"ruleId":"D2","level":"warning","message":{"text":"StackTraceHeader.tryParseHeaderLine (cognitive 22): StackTraceHeader.tryParseHeaderLine has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (20 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/convert.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"891128798ca2be3c50cb47f04db215dfd1357d69726ecc1380c1f751e3352b46"}},{"ruleId":"D2","level":"warning","message":{"text":"LineNumberProgramHeader.fromReader (cognitive 22): LineNumberProgramHeader.fromReader has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 3 (5 pts), boolean chains 1, ternaries 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/dwarf.dart"},"region":{"startLine":1402}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e0fec94c57b7e868654eb1c7af5600216e47b7f461f2b49103be7b3b61817e"}},{"ruleId":"D2","level":"warning","message":{"text":"DebuggerLocation._completeFunction (cognitive 22): DebuggerLocation._completeFunction has cognitive complexity 22 (threshold 15). Drivers by points: if/else 6 (17 pts), loops 2 (5 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger_location.dart"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2380e395d8b34e04c92723ad1b140d4150279a4b77b992264444884b45593dc"}},{"ruleId":"D2","level":"warning","message":{"text":"Instructions.serialize (cognitive 22): Instructions.serialize has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/instructions.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"5567dda2a6564359e83e827fdfcc9390009fa1d2e96e8e2ed75ff165cccc3357"}},{"ruleId":"D2","level":"warning","message":{"text":"ModulePrinter.print (cognitive 22): ModulePrinter.print has cognitive complexity 22 (threshold 15). Drivers by points: loops 6 (11 pts), if/else 6 (9 pts), boolean chains 1, ternaries 1 (nesting depth added 8). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/printer.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea1d2b23aa25d902b4d127a1c6ad7c30350c8a65caa0f6c155bc878bb4980736"}},{"ruleId":"D2","level":"warning","message":{"text":"_ClassInfo._initDispatchTargets (cognitive 22): _ClassInfo._initDispatchTargets has cognitive complexity 22 (threshold 15). Drivers by points: if/else 7 (13 pts), ternaries 2 (4 pts), boolean chains 3, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/dynamic_interface_annotator.dart"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f22060d2c98c5f744fdcf9b2b8b9421df56525b95210b4fe5db6c34c726d45d"}},{"ruleId":"D2","level":"warning","message":{"text":"SummaryCollector._makeNarrow (cognitive 22): SummaryCollector._makeNarrow has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 6, ternaries 1 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":1379}}}],"partialFingerprints":{"codehealthFindingId/v1":"120da345386a08e375393f070a039a4bfb2aa23f4669c1e89d64516d39dc753d"}},{"ruleId":"D2","level":"warning","message":{"text":"TreeShaker.addUsedMember (cognitive 22): TreeShaker.addUsedMember has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11 (20 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":1092}}}],"partialFingerprints":{"codehealthFindingId/v1":"58ee9e64b0ac1af6ed482b2aa98ec689650abe5781745c9f09004b6765b8d1a6"}},{"ruleId":"D2","level":"warning","message":{"text":"WideConeType.union (cognitive 22): WideConeType.union has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12 (19 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"63ddb5fcc59c97fc5bd1538985c5facc6c38e6ed9a3c345a684a59353eab5928"}},{"ruleId":"D2","level":"warning","message":{"text":"DevFS._writeDevFSFile (cognitive 22): DevFS._writeDevFSFile has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13 (20 pts), error handling 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/devfs.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd9738756e724bd4044939be97d63054a8ccc66b26fbec1eefe23b1ae186a5e5"}},{"ruleId":"D2","level":"warning","message":{"text":"idlsync.remove_obsolete_webcore_files (cognitive 22): idlsync.remove_obsolete_webcore_files has cognitive complexity 22 (threshold 15). Drivers by points: if/else 4 (16 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlsync.py"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"bce4ca0fc939bd7015d6bebb20d6cbe2be2f9728582bdbbfd10aad013709b6fe"}},{"ruleId":"D2","level":"warning","message":{"text":"Version.__lt__ (cognitive 22): Version.__lt__ has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16, boolean chains 6. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fa5e8f0a29ff22aae6656f7c471955457bc068ebeceb855fc72b1cdab02ca9c"}},{"ruleId":"D2","level":"warning","message":{"text":"(anonymous)::hotRestart (cognitive 22): (anonymous)::hotRestart has cognitive complexity 22 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 5, loops 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee6de1fe44d6e5602f234eb7aaa6260a0afec744eb1ad953204e71aa4c0b83ca"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeLanguageVersionOrSingleLineComment (cognitive 21): AbstractScanner.tokenizeLanguageVersionOrSingleLineComment has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13, loops 6, boolean chains 2. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1386}}}],"partialFingerprints":{"codehealthFindingId/v1":"9151a286e41e77471aefef5ef2f3a275ec9827d30d31377f6af5f802bb0c8c63"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator.getClassDeclaration (cognitive 21): BytecodeGenerator.getClassDeclaration has cognitive complexity 21 (threshold 15). Drivers by points: if/else 15 (19 pts), boolean chains 1, ternaries 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aec6a17b599b608874bddd9c580760b9c8e4c82c46a1b479c9f101381fdf505"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator.end (cognitive 21): BytecodeGenerator.end has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (21 pts) (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":2041}}}],"partialFingerprints":{"codehealthFindingId/v1":"110497a60f48c98ffc13ea0b8c40d0fde3a6b7ba39e71be98058a70464245c96"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator.getClosureDeclaration (cognitive 21): BytecodeGenerator.getClosureDeclaration has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 2, boolean chains 1, match/switch 1, ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":2681}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f9832c968d5aacd900842ecf92d2301b11197c4c73530744064ec5281a158a"}},{"ruleId":"D2","level":"warning","message":{"text":"Component.write (cognitive 21): Component.write has cognitive complexity 21 (threshold 15). Drivers by points: loops 14, if/else 5 (7 pts) (nesting depth added 2). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8db3d0d6e32060bb51e18ad59cd26a236763f6ad52cff71961752f44d685c45"}},{"ruleId":"D2","level":"warning","message":{"text":"_Allocator._visitFunction (cognitive 21): _Allocator._visitFunction has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 3, loops 1 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/local_vars.dart"},"region":{"startLine":948}}}],"partialFingerprints":{"codehealthFindingId/v1":"830a05bef3798698fc533dc0a85020fcb5f96596625db9a7123ee412a6f74109"}},{"ruleId":"D2","level":"warning","message":{"text":"AstCodeGenerator.visitTryCatch (cognitive 21): AstCodeGenerator.visitTryCatch has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (16 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a7ca2d3ccf94e06f4a7da48f76ad79c6a67910b7bf1e47e1f009c3a49eff47d"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstantAccessor._defineConstantInModule (cognitive 21): _ConstantAccessor._defineConstantInModule has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 2 (5 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":2051}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f5153022f581d803b41aa01e59c1174faf3d1345442a3e43690560191fa1465"}},{"ruleId":"D2","level":"warning","message":{"text":"_UsageCollector._findVariablesStoredInFields (cognitive 21): _UsageCollector._findVariablesStoredInFields has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 3 (5 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constructor_info.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff5d74d2afa9beba856fa721f07bc2f74fac6503361d6695b0545fb301a55c6f"}},{"ruleId":"D2","level":"warning","message":{"text":"DynamicDispatchTable.outputClassIdTable (cognitive 21): DynamicDispatchTable.outputClassIdTable has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dynamic_dispatch_table.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"c66307ba89a21a48fd0f1d4ab0dacae0b6362b88d3df75f7d7bd25a2ecd533f1"}},{"ruleId":"D2","level":"warning","message":{"text":"ParameterInfo.fromMember (cognitive 21): ParameterInfo.fromMember has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (11 pts), ternaries 2 (6 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/param_info.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ce9537e9b186c35728ea019594bc6d7a77219463dd419c8d89a0a7396457c38"}},{"ruleId":"D2","level":"warning","message":{"text":"FrontendCompiler.invalidateIfInitializingFromDill (cognitive 21): FrontendCompiler.invalidateIfInitializingFromDill has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (13 pts), error handling 3 (5 pts), loops 2 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":1335}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5e1eb24ace1f42af8c670ae9e7af71badcf3a334154613a491333dc495c011a"}},{"ruleId":"D2","level":"warning","message":{"text":"Type.generateSerializedFieldAccess (cognitive 21): Type.generateSerializedFieldAccess has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 3, loops 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":928}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7e32c7172d2a96d16b461d3f53135e604bad2b7f72c7febae4b02beca6da3e"}},{"ruleId":"D2","level":"warning","message":{"text":"_ProgramInfoBuilder.getInfoNodeFor (cognitive 21): _ProgramInfoBuilder.getInfoNodeFor has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 1 (5 pts), match/switch 1 (3 pts) (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/v8_profile.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d35acf9d83eb02c9f452900f1490ea4d015fb7a7aa5eb18bb83682329dc32e3"}},{"ruleId":"D2","level":"warning","message":{"text":"AppWindowCreateWindowOptions.AppWindowCreateWindowOptions (cognitive 21): AppWindowCreateWindowOptions.AppWindowCreateWindowOptions has cognitive complexity 21 (threshold 15). Drivers by points: if/else 21. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/app_window.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"509ebfe42987ebbbb410803118ac296cb0abca2d4f38414cb79a5b5366a13c3e"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpOutgoing.addStream (cognitive 21): _HttpOutgoing.addStream has cognitive complexity 21 (threshold 15). Drivers by points: if/else 15 (21 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1846}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3f774a7767f8b56442f07bcff6a4518365a6bc42b2918cb3925365928ab15d2"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpOutgoing.close (cognitive 21): _HttpOutgoing.close has cognitive complexity 21 (threshold 15). Drivers by points: if/else 15 (20 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1934}}}],"partialFingerprints":{"codehealthFindingId/v1":"58bcb06a30860ed32bcd316753b3c22669dc1f0b1b57617d7cd24e421320ba22"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpParser._headersEnd (cognitive 21): _HttpParser._headersEnd has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12, boolean chains 9. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eb82e1b2d5991360f3f64e02ef9aced7bf614501c17087aaf3883862868498c"}},{"ruleId":"D2","level":"warning","message":{"text":"CustomHashMap.[] (cognitive 21): CustomHashMap.[] has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (12 pts), ternaries 1 (6 pts), loops 1 (3 pts) (nesting depth added 15). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"336296485b6eff07161452c7a80083c0b45f9f41afb700ea7211fe41c4df30ed"}},{"ruleId":"D2","level":"warning","message":{"text":"Primitives.parseInt (cognitive 21): Primitives.parseInt has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"d15a0223b8f61a53e4ddd8409adf444b564dfab387558cfbcee7e55a1318d3cc"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64Assembler._emitAddSub (cognitive 21): Arm64Assembler._emitAddSub has cognitive complexity 21 (threshold 15). Drivers by points: ternaries 9 (18 pts), if/else 2, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":1190}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4ffeb00c1c7fc8e1738f535d7e196068ee46b187c6444efce079c7fa12c0905"}},{"ruleId":"D2","level":"warning","message":{"text":"_LineSplitterSink._addLines (cognitive 21): _LineSplitterSink._addLines has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (20 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/line_splitter.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"0561b7cfe30d93237180e5230dbf6937d4f801ff23b61f0eabab0c18bd9a5958"}},{"ruleId":"D2","level":"warning","message":{"text":"DependenciesCollector.directReferenceDependencies (cognitive 21): DependenciesCollector.directReferenceDependencies has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/deferred_load/dependencies.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8a81739873a5cd9134b01710610282b6069979c182eac0aaa0ec0ed933a2f4"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser._isConstructor (cognitive 21): Parser._isConstructor has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16 (21 pts) (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5721}}}],"partialFingerprints":{"codehealthFindingId/v1":"169b89710685d11784189c41dec77b5035e06d716a5b5ae1d79921e7c6142c02"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeLanguageVersionOrSingleLineComment (cognitive 21): AbstractScanner.tokenizeLanguageVersionOrSingleLineComment has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13, loops 6, boolean chains 2. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"2795024ff16b994c8cfe9e825e9974ab83a14c22a10085c5572652034a478eeb"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAnalyzer.analyzeRecordPattern (cognitive 21): TypeAnalyzer.analyzeRecordPattern has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (13 pts), loops 3 (5 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":2079}}}],"partialFingerprints":{"codehealthFindingId/v1":"f88ce51b922faea8ce6c132e56514132c8400e571bd96ffcf104f8ecaec94587"}},{"ruleId":"D2","level":"warning","message":{"text":"EditGetAvailableRefactoringsHandler.handle (cognitive 21): EditGetAvailableRefactoringsHandler.handle has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (21 pts) (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_get_available_refactorings.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"85a2029b18558791d04b19c0759d5b38dc9bd27a269f36fe65d6575351d4e337"}},{"ruleId":"D2","level":"warning","message":{"text":"LspAnalysisServer.handleMessage (cognitive 21): LspAnalysisServer.handleMessage has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (12 pts), ternaries 3 (6 pts), error handling 2, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdfc3eea80b3f903efd8af3fefa07d76b265fc6f828d7e85d2423f2659aa745"}},{"ruleId":"D2","level":"warning","message":{"text":"ResultMerger.mergeRefactorings (cognitive 21): ResultMerger.mergeRefactorings has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 4 (5 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"4714f5a085587031d8fe11c33cacba2abdae4750f81352d4691124a373c4b08e"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper.addMembersFromExtensionElement (cognitive 21): DeclarationHelper.addMembersFromExtensionElement has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (10 pts), boolean chains 5, loops 3 (5 pts), ternaries 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"bacaaecaedb82f26b5b63295b9b57c6cf740dd769cf99c66c4cfef21eeb19aeb"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._addLocalDeclarations (cognitive 21): DeclarationHelper._addLocalDeclarations has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (18 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1309}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd436a3db11941ab1d37ceaef8dd83be5ac583082643c28207b1b362c19e7d54"}},{"ruleId":"D2","level":"warning","message":{"text":"FeatureComputer.computeElementKind (cognitive 21): FeatureComputer.computeElementKind has cognitive complexity 21 (threshold 15). Drivers by points: if/else 20, boolean chains 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (FeatureComputer.computeElementKind2) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f0aa0f19d23f7888ebb02d7f945785ea919f5b918e18159052eb24e302e323"}},{"ruleId":"D2","level":"warning","message":{"text":"FeatureComputer.computeElementKind2 (cognitive 21): FeatureComputer.computeElementKind2 has cognitive complexity 21 (threshold 15). Drivers by points: if/else 20, boolean chains 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages. This shape REPEATS in the file: one other method here (FeatureComputer.computeElementKind) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"f30485d94697fde23e56b3f38c037242610048e8acb9c87bd7181ab1cdc56f5f"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitFormalParameterList (cognitive 21): InScopeCompletionPass.visitFormalParameterList has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e3de1fb02d6b7fbc7a407752bec0a5ed80d40b1ce663b8c802b2c177fba9902"}},{"ruleId":"D2","level":"warning","message":{"text":"YamlCompletionGenerator._producerForPath (cognitive 21): YamlCompletionGenerator._producerForPath has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 4, ternaries 1 (4 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/yaml_completion_generator.dart"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c34b129a11a8c74c68fca9e83c57deb2c61bead5563a6e997616f2edf5bbba1"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateExtensionSetter.compute (cognitive 21): CreateExtensionSetter.compute has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14 (16 pts), boolean chains 4, match/switch 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"7213a682deb7b41e483f41997436e91487656c58de6c287e2e13a295fd677205"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateField._proposeFromIdentifier (cognitive 21): CreateField._proposeFromIdentifier has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 5, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_field.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f04c582c983d89d7ae848e86df883bbb2eb664d2542de0142d2901ab5b6880b"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateMixin.producers (cognitive 21): CreateMixin.producers has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (19 pts), match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"f45d5edf1e1ad559d8661fcee86c06cd826818df0e2490b13501a8eb5d173457"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateParameter.compute (cognitive 21): CreateParameter.compute has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (15 pts), boolean chains 6 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_parameter.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ea8b716c091b799ee8df851df3ceb602f342f0cc597b819571ad10760c9fbc6"}},{"ruleId":"D2","level":"warning","message":{"text":"DestructureLocalVariableAssignment.computeObjectPattern (cognitive 21): DestructureLocalVariableAssignment.computeObjectPattern has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 5 (8 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/destructure_local_variable_assignment.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"6af85ae1e4372238abf818654ba9435a88532e05c524fba9e9d14547a2cfb5bd"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveThisAlias._resolveNameInScope (cognitive 21): RemoveThisAlias._resolveNameInScope has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (13 pts), ternaries 2 (4 pts), boolean chains 2, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_this_alias.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"706349928d023fde950578ab32698e2cd23ae5a1c8b03636ee17fb3ef8f45c13"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveUnusedLocalVariable._deleteDeclaration (cognitive 21): RemoveUnusedLocalVariable._deleteDeclaration has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (17 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused_local_variable.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"17f7c9586183f4dfad6b34e3e28a419fbd5fed5c8d0137309727d45c2bd7d4f9"}},{"ruleId":"D2","level":"warning","message":{"text":"Rename.apply (cognitive 21): Rename.apply has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (18 pts), boolean chains 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/rename.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"49b6a4fdd14597e4ce691fc6a6bc53791b027e9e4708028f26a1aa8bcd878278"}},{"ruleId":"D2","level":"warning","message":{"text":"TransformSetParser._translateCodeTemplate (cognitive 21): TransformSetParser._translateCodeTemplate has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":707}}}],"partialFingerprints":{"codehealthFindingId/v1":"11b454af1e47e88800ce5da74a04d9323fd9e22e420a1addc1f5b5150a654798"}},{"ruleId":"D2","level":"warning","message":{"text":"_SignatureUpdater._rewriteToNamedSuper (cognitive 21): _SignatureUpdater._rewriteToNamedSuper has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (19 pts), loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":1195}}}],"partialFingerprints":{"codehealthFindingId/v1":"ada4b4c2d7e960c969e25be448501d6c52c0e66b2fcdfd0512d8cc9cd677760d"}},{"ruleId":"D2","level":"warning","message":{"text":"_ApplyState._applyCannotIgnore (cognitive 21): _ApplyState._applyCannotIgnore has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 2 (6 pts), ternaries 1 (5 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parser.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7c124ab45ee3db0db099433c4d2196ad54c3971d5f96d526507d9654ed3c66a"}},{"ruleId":"D2","level":"warning","message":{"text":"Search._addResults (cognitive 21): Search._addResults has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 4 (7 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"09cb64073cc37cef0bfdf06e1a702db58299555fb5a46cfd8151f3f7265ad6b0"}},{"ruleId":"D2","level":"warning","message":{"text":"_LocalReferencesVisitor.visitSimpleIdentifier (cognitive 21): _LocalReferencesVisitor.visitSimpleIdentifier has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":2039}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c817714aca7984a2ca6e72ffd5699fd30f86eb9f3c176656ebb89865d8149b9"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportDirectiveImpl.areSyntacticallyIdenticalExceptUri (cognitive 21): ImportDirectiveImpl.areSyntacticallyIdenticalExceptUri has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 4, loops 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":29605}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7bc54fb80703459e3a7d72fd0eac9702d19926e82df730e655bd5229366d69b"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier._validateFieldInitializers (cognitive 21): ConstantVerifier._validateFieldInitializers has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (15 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"71c5fc33be82b82471990ee3bc3affd9f5d89d86f64e03eb6c9cf6726b58dbdc"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVisitor._getDeferredLibraryError (cognitive 21): ConstantVisitor._getDeferredLibraryError has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16 (19 pts), boolean chains 1, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2191}}}],"partialFingerprints":{"codehealthFindingId/v1":"07554f043d86d75f56a4363fec48f6968a2ba4276b104c90e4fedbd6a7a77a1e"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorInvocationEvaluator._checkFromEnvironmentArguments (cognitive 21): _ConstructorInvocationEvaluator._checkFromEnvironmentArguments has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3210}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3ab91f3a8c425196ded91b5f545a89dfb732a8ca7d9693e034b949f047b8049"}},{"ruleId":"D2","level":"warning","message":{"text":"_Collector._nameExpression (cognitive 21): _Collector._nameExpression has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 5 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"50e366788b80460d9568805bb4a7459935be132bba41f67c2a896a95735f9fa1"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystemImpl.isMoreBottom (cognitive 21): TypeSystemImpl.isMoreBottom has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (14 pts), boolean chains 7 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1039}}}],"partialFingerprints":{"codehealthFindingId/v1":"481e2bfd62328b32fa42a0a2a26e9382c34822f217e0f57029a7e4d618e22363"}},{"ruleId":"D2","level":"warning","message":{"text":"InvocationInferrer._resolveDeferredFunctionLiterals (cognitive 21): InvocationInferrer._resolveDeferredFunctionLiterals has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (20 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"08816e34e4ccf4b621c66cc0a7f57ccde3ee938242344d044cb43ad123917f4f"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateFfiMethodInvocation (cognitive 21): FfiVerifier._validateFfiMethodInvocation has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (19 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1780}}}],"partialFingerprints":{"codehealthFindingId/v1":"183683301e372d7a0643806ad262a79329b50fda4eae1a87be9e124b485b5464"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentEmitter.emitInstanceMethodAliases (cognitive 21): FragmentEmitter.emitInstanceMethodAliases has cognitive complexity 21 (threshold 15). Drivers by points: if/else 2 (9 pts), loops 3 (6 pts), ternaries 1 (6 pts) (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1338}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a042a41c5ba29627c87612ff38b96a1ddc25eb0c69f68570a5dae184dec682e"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder.visitStaticInvocation (cognitive 21): KernelSsaGraphBuilder.visitStaticInvocation has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 5 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5079}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f684a5db2fe43bfa68e5350447f186dac4e6ae2a8d72052197426f113ed8908"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.handleDelayedVariableDeclarations (cognitive 21): SsaCodeGenerator.handleDelayedVariableDeclarations has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (17 pts), boolean chains 2, loops 2 (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"032032229dedf963661d782626d53760e375fcb2ec5e90d2a85bfeb4eba182f7"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSelection._computeBitWidth (cognitive 21): SsaInstructionSelection._computeBitWidth has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 4 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"d952bb1d2f3e21bdcee64ecf2b04e4be84addace0a05e15ed8feadda1b5c0fc0"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitBitAnd (cognitive 21): SsaInstructionSimplifier.visitBitAnd has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (20 pts), boolean chains 1 (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2796}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa600a2d47c6ec19326d4864981490257d1b63abe03c77d15007ff34aa95afc"}},{"ruleId":"D2","level":"warning","message":{"text":"DartDebugAdapter.stackTraceRequest (cognitive 21): DartDebugAdapter.stackTraceRequest has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (12 pts), ternaries 2 (5 pts), boolean chains 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":1837}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0fc9a8824fd5452bf06307edf4b7b1b65dcb820a333621333af699b42c27541"}},{"ruleId":"D2","level":"warning","message":{"text":"DdsIsolateManager.initializeIsolates (cognitive 21): DdsIsolateManager.initializeIsolates has cognitive complexity 21 (threshold 15). Drivers by points: if/else 4 (12 pts), match/switch 1 (5 pts), loops 1 (2 pts), boolean chains 1, error handling 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/src/dds_isolate_manager.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e3c4ffa47af101415deef5cc009712048476a96230a1dc94be6801098d27dd8"}},{"ruleId":"D2","level":"warning","message":{"text":"FixCommand._compareFixesInDirectory (cognitive 21): FixCommand._compareFixesInDirectory has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 3, ternaries 1 (3 pts), error handling 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/fix.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"929a2b5a019ef044314b4c77874cfb95dcce04648d900d52b802ed1dcf1f7cad"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncRewriterBase.visitFor (cognitive 21): AsyncRewriterBase.visitFor has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (8 pts), ternaries 3 (8 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":1241}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc33498b53d5166ca7aa48411ca66a02e86ee775b82d6db9f56af4bfae0ee57a"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler.emitModule (cognitive 21): ProgramCompiler.emitModule has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (13 pts), loops 3 (4 pts), ternaries 2 (4 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"6183e62b5269bf0151d1e76078ea222773476fe00d5e02333ea4b2d82fe54e5e"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitJSInteropClassNonExternalMembers (cognitive 21): ProgramCompiler._emitJSInteropClassNonExternalMembers has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 2, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ffe428aa405b1e73722b719b86cddf1741c51f2a9b7bbbc8bef6775e517031f"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._coerceBitOperationResultToUnsigned (cognitive 21): ProgramCompiler._coerceBitOperationResultToUnsigned has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6181}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fe83dcefc03cd048f4185933cf15aa5f69b604c12dce304c5f5464a20ef5b9b"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitSuperTarget (cognitive 21): ProgramCompiler._emitSuperTarget has cognitive complexity 21 (threshold 15). Drivers by points: ternaries 5 (7 pts), boolean chains 6, if/else 5 (6 pts), loops 1 (2 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6579}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9fb58e9b36f788a3a8c53f7627acd0e50370694a9e506a2e3fa8ed93760cee5"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._coerceBitOperationResultToUnsigned (cognitive 21): LibraryCompiler._coerceBitOperationResultToUnsigned has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6870}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ae5f60860f8e27027a7f3213e32a80a628dca5ff154732256d35b71d5f25e7c"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitSuperTarget (cognitive 21): LibraryCompiler._emitSuperTarget has cognitive complexity 21 (threshold 15). Drivers by points: ternaries 5 (7 pts), boolean chains 6, if/else 5 (6 pts), loops 1 (2 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7268}}}],"partialFingerprints":{"codehealthFindingId/v1":"08485c6cceba0b752851ca4e25a3f43c3396f6cab8560b7f1c54b82a2e361d1e"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler._convertSourceLibraryBuildersToDill (cognitive 21): IncrementalCompiler._convertSourceLibraryBuildersToDill has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 3 (9 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"778693da2e5b71c681e47e578ab3d0e2e71ae3bd0c2d2363cbf652d08b84218a"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler._cleanupSourcesForBuilder (cognitive 21): IncrementalCompiler._cleanupSourcesForBuilder has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1912}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b32dad7be3cd9d16868e739cad01cb3c0fb3ccdfc521ee8540632335cc2ac8b"}},{"ruleId":"D2","level":"warning","message":{"text":"TransitiveDependenciesCalculator._calculateTransitiveHashes (cognitive 21): TransitiveDependenciesCalculator._calculateTransitiveHashes has cognitive complexity 21 (threshold 15). Drivers by points: if/else 3 (10 pts), loops 6 (10 pts), boolean chains 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":4168}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3db352b8600915923807590a3d254fb0bce9cb4fa80a7348eb809715ea58486"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedTypeBuilderImpl.resolveIn (cognitive 21): NamedTypeBuilderImpl.resolveIn has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (18 pts), boolean chains 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"305690fcfe8a5cbe678dc94ce238559417e2fc747d2fc770c0147a4317711038"}},{"ruleId":"D2","level":"warning","message":{"text":"_ExtensionTypeConstructorEncodingMixin._build (cognitive 21): _ExtensionTypeConstructorEncodingMixin._build has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (12 pts), ternaries 2 (4 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"540a00d6a4fc737b5a35fa7a151871716475d53fd0a32baab4627acc2508d0c8"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.hasPrimitiveEqual (cognitive 21): ConstantEvaluator.hasPrimitiveEqual has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5683}}}],"partialFingerprints":{"codehealthFindingId/v1":"08519e64ae686d279c79518396dd2de14a8cfcba5758cbf856859790460f774e"}},{"ruleId":"D2","level":"warning","message":{"text":"ForwardingNode._createNoSuchMethodForwarder (cognitive 21): ForwardingNode._createNoSuchMethodForwarder has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 4, loops 2, ternaries 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f46363ddbfc03211f4f588027650e00a1154684f3fbdf436142df8ab07ec9a"}},{"ruleId":"D2","level":"warning","message":{"text":"Covariance.fromMethod (cognitive 21): Covariance.fromMethod has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/member_covariance.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"396847fb2d93b22fd964fa974c25884a943a4f8f94d7f35b7036747e713deaa2"}},{"ruleId":"D2","level":"warning","message":{"text":"DelayedInstanceGet.createExpression (cognitive 21): DelayedInstanceGet.createExpression has cognitive complexity 21 (threshold 15). Drivers by points: ternaries 4 (12 pts), if/else 6 (8 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/delayed_expressions.dart"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5a3cec6504e3f426c0c5165de1d59703adb100c0fbb0bf0ebc0b0e2772aa113"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitAnonymousMethodBlock (cognitive 21): InferenceVisitorImpl.visitAnonymousMethodBlock has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (13 pts), ternaries 4 (6 pts), boolean chains 1, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":9366}}}],"partialFingerprints":{"codehealthFindingId/v1":"acdcc094b3636c795c5493ee907ee162c9355fd53b7925b49dd1902d43d74e77"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase.getWhyNotPromotedContext (cognitive 21): InferenceVisitorBase.getWhyNotPromotedContext has cognitive complexity 21 (threshold 15). Drivers by points: if/else 6 (18 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5b66aae5c39d7fe7d6763407ecf4872e540d51f1c1b24cb9f04654444f47ed1"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase._finishFieldGetterInvocation (cognitive 21): InferenceVisitorBase._finishFieldGetterInvocation has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13 (14 pts), boolean chains 6, match/switch 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3282}}}],"partialFingerprints":{"codehealthFindingId/v1":"820b0a5e061db17fbb178fbbdb0b63b44f592ab6b6b46cc4e044417f4365f7b3"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase.inferMethodInvocation (cognitive 21): InferenceVisitorBase.inferMethodInvocation has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 2, match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3621}}}],"partialFingerprints":{"codehealthFindingId/v1":"abafc94a588503b64c7b4d2446e41e814df14f1758c1747abc664954cd6b398f"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorBase.inferVariableGet (cognitive 21): InferenceVisitorBase.inferVariableGet has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (19 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":4364}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e098cfaea07a4d295d34077340e0975e0e92e1ec7b123f80fe069dda6d9d2ab"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer._isSmallInitialization (cognitive 21): Printer._isSmallInitialization has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 4 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffece3b4b6d111e3d0ccf26e9a122e0a3179eb3251c6f51e7f15bae33fa3f810"}},{"ruleId":"D2","level":"warning","message":{"text":"IntersectionType.IntersectionType (cognitive 21): IntersectionType.IntersectionType has cognitive complexity 21 (threshold 15). Drivers by points: boolean chains 21. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2050}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d8e5ca0f1adee27c92b391fd94127d211d6717fdaa0daa66702366e1894f9b"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorChecker.check (cognitive 21): _ConstructorChecker.check has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 4 (6 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_initializing_formals.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bb2a9ac5fec4733c948d0a2ff92816242ec94c7e924f112813046e18312aece"}},{"ruleId":"D2","level":"warning","message":{"text":"DebuggerLocation._lookupScript (cognitive 21): DebuggerLocation._lookupScript has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 3 (4 pts), ternaries 1 (3 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger_location.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"285d31835fedef3b13ef9c025b37d37cab4cb1a6338e54f9e468596fb8f7bf6a"}},{"ruleId":"D2","level":"warning","message":{"text":"DebuggerLocation._lookupClass (cognitive 21): DebuggerLocation._lookupClass has cognitive complexity 21 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 4 (6 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger_location.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"14df66ef0e96b45d5fc9ee8c669bd3c11241ca04a65a24bf3c317284fa8a5ae7"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptInsetElement.lineBreakpointElement (cognitive 21): ScriptInsetElement.lineBreakpointElement has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4dbece2e954d6c0b024ef63f13f6dcda5a2319cdd1a6dfdf1a9bdfdcdbb9196"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.visitLibraryDependency (cognitive 21): Printer.visitLibraryDependency has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 2 (5 pts), boolean chains 2, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":2218}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b4fd06aeba3fdabf5817f291a0dd8ea030dec8dbf67d3aaeea0990d9d263a55"}},{"ruleId":"D2","level":"warning","message":{"text":"TextIterator.skipToEndOfAtom (cognitive 21): TextIterator.skipToEndOfAtom has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 4, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/text_reader.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f351518483e3c3c0576707a7c78b17d19c33650920eeebc587b7b4f108eff5"}},{"ruleId":"D2","level":"warning","message":{"text":"_DeduplicateMixinKey.== (cognitive 21): _DeduplicateMixinKey.== has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (16 pts), loops 3, ternaries 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/mixin_deduplication.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"58af1dab4cfa949dd3b979da8bf2a66e0170f4aa58cfa88e9af48bf007b12168"}},{"ruleId":"D2","level":"warning","message":{"text":"Join.simplify (cognitive 21): Join.simplify has cognitive complexity 21 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 3 (4 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d2c853e925ecaed5ff6199b8e3c2d69ad6f6d6e947e6e0c2b4b9715dded14ae"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstantTreeShaker.collectRemovedFields (cognitive 21): _ConstantTreeShaker.collectRemovedFields has cognitive complexity 21 (threshold 15). Drivers by points: if/else 3 (13 pts), loops 3 (7 pts), boolean chains 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2668}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6fb9af221d777e254e4c1a6a58ef8b711cb520b8b7b4c1c937e34f8353f8398"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalyzerConverter._getParametersString (cognitive 21): AnalyzerConverter._getParametersString has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"363797118d38c6fe6332815ccdad8bffda292fb7dea966945607386996895cd9"}},{"ruleId":"D2","level":"warning","message":{"text":"InheritedReferenceContributor._addSuggestionsForType (cognitive 21): InheritedReferenceContributor._addSuggestionsForType has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 3 (5 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/completion/inherited_reference_contributor.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b57dad9c6da805ae98444bc9589308b646662fb2e965dcff46251b248f06ef7"}},{"ruleId":"D2","level":"warning","message":{"text":"DevFS._readDevFSFile (cognitive 21): DevFS._readDevFSFile has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11 (18 pts), error handling 2 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/devfs.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"85021e14cc843dc193e80f15ec3cf5ba824f0d250ac3a95f42b19de6b76c61b9"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeIdentifier (cognitive 20): AbstractScanner.tokenizeIdentifier has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b2854b9111f14001c8e2192ea51b6073c6980e5a00d4478c325d40a981c6a8e"}},{"ruleId":"D2","level":"warning","message":{"text":"AstNodeImplGenerator._buildImplClass (cognitive 20): AstNodeImplGenerator._buildImplClass has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 1, loops 1, ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed85db834f7e01d3e9bdfc62db0f74b7baabaa6f1cdc7dc1f616039d3b6cd9c"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._tryFixingPropertyAccess (cognitive 20): _Visitor._tryFixingPropertyAccess has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (6 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/tool/messages/use_new_with_arguments.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbc5cbcc50a2b1401c000298a73f923b71b0a467c0e607235a9afc847c26d5b2"}},{"ruleId":"D2","level":"warning","message":{"text":"BytecodeGenerator._genConditionAndJumpIf (cognitive 20): BytecodeGenerator._genConditionAndJumpIf has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14 (20 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":1742}}}],"partialFingerprints":{"codehealthFindingId/v1":"1395b76b731206ed7fc77abd05632358d73c4a86f893890b918c4eb0e2a3fe9f"}},{"ruleId":"D2","level":"warning","message":{"text":"AstCodeGenerator._initializeContextLocals (cognitive 20): AstCodeGenerator._initializeContextLocals has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"2af83a0d4f266c5a8764847f5204374c7b19f275821cd9b0ed796fb96ef3d3cc"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantCreator.visitInstantiationConstant (cognitive 20): ConstantCreator.visitInstantiationConstant has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (12 pts), loops 6, boolean chains 1, ternaries 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1343}}}],"partialFingerprints":{"codehealthFindingId/v1":"3605ec2792cb8e7760fc6685fddfa79e2384b5a312099f1702e314a6edbbad17"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionCollector.getFunction (cognitive 20): FunctionCollector.getFunction has cognitive complexity 20 (threshold 15). Drivers by points: boolean chains 9, if/else 7 (8 pts), ternaries 3 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/functions.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b8ba36d0d70c563d3ffc3d1571add11e3b2dc49f0fce2d1f6cd1bc67d28856"}},{"ruleId":"D2","level":"warning","message":{"text":"ModuleOutputData.moduleForReference (cognitive 20): ModuleOutputData.moduleForReference has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 4 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/modules.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"63b02229601e4039030513c75969d6ecca7275ff3b22f3592ea19951a010d94a"}},{"ruleId":"D2","level":"warning","message":{"text":"DocTestIncrementalCompiler.compileDartDocTestLibrary (cognitive 20): DocTestIncrementalCompiler.compileDartDocTestLibrary has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/dart_doctest_impl.dart"},"region":{"startLine":1047}}}],"partialFingerprints":{"codehealthFindingId/v1":"32f9b20a3fa4eb956b1e5c1fcc6283f0129a6a0f815b67a25bb142d4f84cfbe1"}},{"ruleId":"D2","level":"warning","message":{"text":"ClosedWorldClassHierarchy._inheritMembers (cognitive 20): ClosedWorldClassHierarchy._inheritMembers has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 5, loops 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1741}}}],"partialFingerprints":{"codehealthFindingId/v1":"0493789c00b2a4604a924497b690c7d841c1c5b20324f308de605b16ec04606c"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorFormatter.reportFailure (cognitive 20): ErrorFormatter.reportFailure has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (10 pts), boolean chains 5, ternaries 3 (5 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/error_formatter.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7517c826b5bdebc99071f2943dbd07ffcf11f1fa57757241455d617dd99fcd7e"}},{"ruleId":"D2","level":"warning","message":{"text":"_VerifyingVisitor.enterScopeProvider (cognitive 20): _VerifyingVisitor.enterScopeProvider has cognitive complexity 20 (threshold 15). Drivers by points: if/else 3 (8 pts), loops 2 (7 pts), error handling 1 (5 pts) (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c299aa99a299cf1e4e664faef41cdb310018576ffd2d9bf8d00827bea10caf"}},{"ruleId":"D2","level":"warning","message":{"text":"_SnapshotGraph._eval (cognitive 20): _SnapshotGraph._eval has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":1331}}}],"partialFingerprints":{"codehealthFindingId/v1":"914ca5da07eb96a5966e077f2b73b6365b51026bc929936567668fc2925ec36c"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utils._addStatics (cognitive 20): _Utils._addStatics has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":857}}}],"partialFingerprints":{"codehealthFindingId/v1":"d71c94e6e193a89680586d0e7f3efd4b0f5aea93edfa012b78556b48c71e7523"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utils._addInstanceMirrors (cognitive 20): _Utils._addInstanceMirrors has cognitive complexity 20 (threshold 15). Drivers by points: boolean chains 12, if/else 7 (8 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":924}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e125a74711091cc51eadbc17edc05619cdb3bd216d52d25fa5dd57f5c4bfaf"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpProfileData.toJson (cognitive 20): _HttpProfileData.toJson has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (18 pts), loops 1, ternaries 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6fae1dcccb7f1d8894c4d957082e70ce8594b64caffbb3fade559e71989f554"}},{"ruleId":"D2","level":"warning","message":{"text":"Primitives.parseInt (cognitive 20): Primitives.parseInt has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"58db7c8b95ea593d2e5f4ca2baf9e1b82f83f8b342400f31432973895226cf6f"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseString (cognitive 20): _ChunkedJsonParser.parseString has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e604e49f37326d9806f1bf9b2fad151616dbf22603bf7b7ed83cecfc6fe495"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Decoder.decode8 (cognitive 20): _Utf8Decoder.decode8 has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 4, loops 1, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":2012}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a9e79aa6ee089f98b05507b3fbcf8cc14c8e4faa2409885d2638349ddae359"}},{"ruleId":"D2","level":"warning","message":{"text":"_GrowableList.join (cognitive 20): _GrowableList.join has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 4 (7 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"214860a7f449d9f0fb1787cbea02ec88334ae4052e4419944de038a03a170a9c"}},{"ruleId":"D2","level":"warning","message":{"text":"int._tryParseSmi (cognitive 20): int._tryParseSmi has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 2 (3 pts), boolean chains 1, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/integers_patch.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"f95b66402f34d1bc6710f66cf1d78a9e1f443daee74d85f25cdbebe2939af79a"}},{"ruleId":"D2","level":"warning","message":{"text":"GrowableList.addAll (cognitive 20): GrowableList.addAll has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (6 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/list.dart"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f069e9dc090aa840108c61170d6846faf761d3cbcc58cafb6ef09ebb8f6c08f"}},{"ruleId":"D2","level":"warning","message":{"text":"String.fromCharCodes (cognitive 20): String.fromCharCodes has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 3, boolean chains 2, ternaries 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/string_patch.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"40cafc146bdc2ebea756ba2315401e6dbfb5a26f4d2cec00c779a21766a453a8"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64CodeGenerator._passArguments (cognitive 20): Arm64CodeGenerator._passArguments has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 2, loops 1, ternaries 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb7ff7c6ca9ad61410e64590cced1b7d3aa034d368239c165b301a6c7b6ad02b"}},{"ruleId":"D2","level":"warning","message":{"text":"LinearScanRegisterAllocator.advance (cognitive 20): LinearScanRegisterAllocator.advance has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (17 pts), loops 2 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"c431d338bc40412d06b91312cd3dad060b771cdd2fb0444232dd7a6b306f5e8d"}},{"ruleId":"D2","level":"warning","message":{"text":"BinaryBuilder.readUriToSource (cognitive 20): BinaryBuilder.readUriToSource has cognitive complexity 20 (threshold 15). Drivers by points: loops 5 (12 pts), if/else 3 (6 pts), boolean chains 2 (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":1054}}}],"partialFingerprints":{"codehealthFindingId/v1":"17f37b94878f3fba8e0a90aa05ef35d4aa1e0b9b0b304cea7b940a9cb333325e"}},{"ruleId":"D2","level":"warning","message":{"text":"BinaryPrinter.writeUriToSource (cognitive 20): BinaryPrinter.writeUriToSource has cognitive complexity 20 (threshold 15). Drivers by points: loops 4 (7 pts), if/else 3 (5 pts), boolean chains 4, ternaries 2 (4 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":911}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa5935646b0e43dd0356576f40ccf57b5f21662f5c276e153037730d24568ec"}},{"ruleId":"D2","level":"warning","message":{"text":"ListBase.replaceRange (cognitive 20): ListBase.replaceRange has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 2 (4 pts), ternaries 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/list.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"6748e83c233aa2a2a78135433388ec9fe99e7601ece6889c7aa6f944a910c997"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8EncoderSink.addSlice (cognitive 20): _Utf8EncoderSink.addSlice has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 5, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/utf.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f01560c500486184613d311233f81346ff8df5bc77f37d2ae9adac752a4c5e5"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._normalizeRelativePath (cognitive 20): _Uri._normalizeRelativePath has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":3053}}}],"partialFingerprints":{"codehealthFindingId/v1":"78178876b7b1e0e7fd98563d868d1e93890bb79071b05d8d34faf249c31c3e63"}},{"ruleId":"D2","level":"warning","message":{"text":"_StructuredClone.walk (cognitive 20): _StructuredClone.walk has cognitive complexity 20 (threshold 15). Drivers by points: if/else 17 (20 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"451d6c950e3168d9ffc6e684ec593d3f1ff4df30bbdf44c3353b682bd0fb5306"}},{"ruleId":"D2","level":"warning","message":{"text":"_File.readAsBytesSync (cognitive 20): _File.readAsBytesSync has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 2 (6 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file_impl.dart"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb828e29ab677e5b8bb82f56ea26185bd0a48f5915e13ae3dd186e447deb15b9"}},{"ruleId":"D2","level":"warning","message":{"text":"_Platform.environment (cognitive 20): _Platform.environment has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 1 (3 pts), ternaries 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/platform_impl.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8cf93f91b67b7395661f56754454faee63df7feb2a44bba28e4db05100a8947"}},{"ruleId":"D2","level":"warning","message":{"text":"_RawSecureSocket._pushAllFilterStages (cognitive 20): _RawSecureSocket._pushAllFilterStages has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 2, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/secure_socket.dart"},"region":{"startLine":1215}}}],"partialFingerprints":{"codehealthFindingId/v1":"338effc715d0055b24511decd84eb6a4d42dc4c2406e86e123f602b921d5b856"}},{"ruleId":"D2","level":"warning","message":{"text":"LateVarInitTransformer._shouldApplyTransform (cognitive 20): LateVarInitTransformer._shouldApplyTransform has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (19 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/late_var_init_transformer.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"579bc4cef04d5d4ff5ddcb232e2c46f7abee98c973237c7639d9037c7277956f"}},{"ruleId":"D2","level":"warning","message":{"text":"Simplification.visitComparison (cognitive 20): Simplification.visitComparison has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (8 pts), ternaries 2 (6 pts), boolean chains 4, match/switch 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/simplification.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51ab0c3e29fd7abb7b16a92a762217d86f16a66ebae3c3440c8eec651f53169"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseFormalParametersRest (cognitive 20): Parser.parseFormalParametersRest has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1931}}}],"partialFingerprints":{"codehealthFindingId/v1":"c331d1bd35217ea42bebf32570c6c8b38b0bfe55203bb223b72c24d7674107d3"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeDirectives (cognitive 20): AbstractScanner.tokenizeDirectives has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (19 pts), loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":991}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c2342a4b1b20f9ae7f4c41d98d8ba69439da0ee9a4d4323f12a8fb004df01b0"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeIdentifier (cognitive 20): AbstractScanner.tokenizeIdentifier has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (18 pts), loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2124}}}],"partialFingerprints":{"codehealthFindingId/v1":"62cc96d582a4d27bc32f9461cecd273da6940d319dcd6429980ac5541de5b946"}},{"ruleId":"D2","level":"warning","message":{"text":"Utf8BytesScanner.nextCodePoint (cognitive 20): Utf8BytesScanner.nextCodePoint has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (16 pts), ternaries 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f8a13fbaae3aee595f6d610c0061d731933ec8cd71baad0b06bb7c1e8c4ebf8"}},{"ruleId":"D2","level":"warning","message":{"text":"Writer._typeAnnotationToText (cognitive 20): Writer._typeAnnotationToText has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (5 pts), match/switch 1 (nesting depth added 11). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/metadata_helper.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6b446ac5514561ba5d590fea6fbc9fcbdfb70286108369c35cce79140cffdd1"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAnalyzer.analyzeListPattern (cognitive 20): TypeAnalyzer.analyzeListPattern has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":1183}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d65509cdc8cd4a1603edbb42496694ef48cbf8ea433e945aa6cd096c6a8de9"}},{"ruleId":"D2","level":"warning","message":{"text":"EditArgumentHandler._computeValueCode (cognitive 20): EditArgumentHandler._computeValueCode has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 5, ternaries 1 (2 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_edit_argument.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0413c72bafe08b205d4b39cd6675ec360a2a2bd2d496a5e24e35a6a717c946a"}},{"ruleId":"D2","level":"warning","message":{"text":"MigrationSchedule.plan (cognitive 20): MigrationSchedule.plan has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 2 (4 pts), boolean chains 2, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/migration/migration_schedule.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd74ba4bf2ffa8b5025d181c5d924d646ba036c44faefc813c855f9f9e26061"}},{"ruleId":"D2","level":"warning","message":{"text":"KeywordHelper.addClassModifiers (cognitive 20): KeywordHelper.addClassModifiers has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 8 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"af5645906655efaa0d5bd03b342815b7954b86cb57525d778009e52103dadf88"}},{"ruleId":"D2","level":"warning","message":{"text":"AddDiagnosticPropertyReference._getPropertyInfo (cognitive 20): AddDiagnosticPropertyReference._getPropertyInfo has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16 (18 pts), boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"b93a45c078586c9775a6c1995345ed70fffdc706729a62d82a696dbcc16641a8"}},{"ruleId":"D2","level":"warning","message":{"text":"AddTypeAnnotation.compute (cognitive 20): AddTypeAnnotation.compute has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (19 pts), loops 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1989ce50778c9ff36fcb77da1b771491dbb845d6438c2fbc43690b89732285b"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertIntoBlockBody._computeSetLiteral (cognitive 20): ConvertIntoBlockBody._computeSetLiteral has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 2 (3 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_block_body.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb01ee9747f50254061de3701ee6df0949c4211849670565c6f397d720c57262"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToSwitchExpression._convertAssignmentSwitchExpression (cognitive 20): ConvertToSwitchExpression._convertAssignmentSwitchExpression has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (9 pts), ternaries 2 (7 pts), loops 2, match/switch 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecf70426ecafb0b63d99f991732d9a6b96e350c944361f127036551c66425c24"}},{"ruleId":"D2","level":"warning","message":{"text":"_CreateConstructor._computeWithSuperParameters (cognitive 20): _CreateConstructor._computeWithSuperParameters has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 5, loops 2 (3 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"855332f3276b2b0be64f8c2e2d63d6421f341af2ae2881c4f3ef601d473a227a"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveAbstract._compute (cognitive 20): RemoveAbstract._compute has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (15 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_abstract.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e9a0731d3a2e5ec1f577dea53ec84166c5be8d48b224702dc81f15f343339f"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveArgument.compute (cognitive 20): RemoveArgument.compute has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_argument.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"05c3ce67352b2acfd688403b88c9ffac6e0f3a7de8d6de53ba1e5a4d13129e1f"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveInitializer.compute (cognitive 20): RemoveInitializer.compute has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 3 (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_initializer.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"477e997174180a7168b9d4f20baa5b55064d735691e6027d48419e10f0ac416d"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameToCamelCase.compute (cognitive 20): RenameToCamelCase.compute has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (18 pts), boolean chains 1, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/rename_to_camel_case.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"06a2ded17347c76809b205d3fe4bf9d2dbdde66e2936b19309743a29df894ac6"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementDescriptor._matchesConstructor (cognitive 20): ElementDescriptor._matchesConstructor has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"024b7a1410f36aee0adb2e6b9c72da530dd21a466f08513e0d76d7909d31e16c"}},{"ruleId":"D2","level":"warning","message":{"text":"_ParametersCollector.visitSimpleIdentifier (cognitive 20): _ParametersCollector.visitSimpleIdentifier has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12 (19 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac1087dfa081a8eb54c457b68e01394dc30ec56cb2e400675f9fb83a08bf461"}},{"ruleId":"D2","level":"warning","message":{"text":"_ReferenceFinder._getPrefixFromExpression (cognitive 20): _ReferenceFinder._getPrefixFromExpression has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (20 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/import_analyzer.dart"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc21c05681bd3c4d1eee2062847d8870f33e133aaf8af04e1ca90e8abfc31ef9"}},{"ruleId":"D2","level":"warning","message":{"text":"FixInFileProcessor.compute (cognitive 20): FixInFileProcessor.compute has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/correction/fix_in_file_processor.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"5630f1a7f43229a081b9c0b8d59a9f5b685c19912c713458c16e79c02b214fef"}},{"ruleId":"D2","level":"warning","message":{"text":"FileState.serializeAstUnlinked2 (cognitive 20): FileState.serializeAstUnlinked2 has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 3 (5 pts), match/switch 2 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"f39ac91eec56feade5e4229c574baae79f9ec4373834584c02aff9ce52c227b2"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryAnalyzer._resolvePartDirective (cognitive 20): LibraryAnalyzer._resolvePartDirective has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (16 pts), match/switch 2 (4 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"7391e4bc5dadf5723071047ee1bcb00c5a0ceee37cecfa2d0a0de14328e75289"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassDeclarationImpl.visitChildrenWithHooks (cognitive 20): ClassDeclarationImpl.visitChildrenWithHooks has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16 (20 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7998}}}],"partialFingerprints":{"codehealthFindingId/v1":"957de491f2b4dfc20fe66ef864a7dc032eee71f55e12cee3d6e37e35c16c3e96"}},{"ruleId":"D2","level":"warning","message":{"text":"StringLexemeHelper._trimInitialWhitespace (cognitive 20): StringLexemeHelper._trimInitialWhitespace has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 5, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52453}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea99e3f7d6dcae3c16c16353dd9508cdf47188c3738f29d4eb59cb4e62b88900"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier._validatePrimaryFieldInitializers (cognitive 20): ConstantVerifier._validatePrimaryFieldInitializers has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (14 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4233a3ec9d0bf913638e72db73d54129e4105fa9ce1fe3562fc72567de3e7eb"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstLiteralVerifier._reportNotPotentialConstants (cognitive 20): _ConstLiteralVerifier._reportNotPotentialConstants has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 2 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1354}}}],"partialFingerprints":{"codehealthFindingId/v1":"621be749daef7b2da459925885801c66ffed9c10886e0364b44843db6f60c759"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplacementVisitor.visitFunctionTypeBuilder (cognitive 20): ReplacementVisitor.visitFunctionTypeBuilder has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e10f513e13d4bf61b881c91ed49d91e67b49a79e4f3590ebdda4e55c601ebbd"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver.resolveIndexExpression (cognitive 20): PropertyElementResolver.resolveIndexExpression has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 6, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ac46211edc9fb7d3b7035514a645ac37e49c5adeeb86cf1e9c0101327997295"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver.resolveReceiverPropertyDirectAssignmentTarget (cognitive 20): PropertyElementResolver.resolveReceiverPropertyDirectAssignmentTarget has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (16 pts), boolean chains 3, match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd0aa878dd0292e1b71d20c331c092c7075f2eab89c232f0b4019ed61f898ab8"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordLiteralResolver._reportInvalidFieldNames (cognitive 20): RecordLiteralResolver._reportInvalidFieldNames has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 2 (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/record_literal_resolver.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"33233f72eed0526b7eba5f1884be1d5abd394859ece2b18daa7a3dab71866d5b"}},{"ruleId":"D2","level":"warning","message":{"text":"NullSafetyDeadCodeVerifier._verifyUnassignedSimpleIdentifier (cognitive 20): NullSafetyDeadCodeVerifier._verifyUnassignedSimpleIdentifier has cognitive complexity 20 (threshold 15). Drivers by points: boolean chains 9, if/else 6 (7 pts), loops 1 (3 pts), match/switch 1 (nesting depth added 3). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/dead_code_verifier.dart"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbab376e4433a85ed0b38fb7512f01cfb4453c2ecbf6077b98949a8a9a59ec8a"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementUsageDetector.formalParameter (cognitive 20): ElementUsageDetector.formalParameter has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (19 pts), boolean chains 1 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (ElementUsageDetectorV2.formalParameter) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"09a98edf254b125346ead271ece7cacc0b18f1919345d4850ba9ac39f14fdbd4"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementUsageDetectorV2.formalParameter (cognitive 20): ElementUsageDetectorV2.formalParameter has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (19 pts), boolean chains 1 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function. This shape REPEATS in the file: one other method here (ElementUsageDetector.formalParameter) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"f827c036d497eedcfd8cf04e17b218b97f154af3a3d18ddeece619eb6d003cbf"}},{"ruleId":"D2","level":"warning","message":{"text":"MemberDuplicateDefinitionVerifier._checkEnumStatic (cognitive 20): MemberDuplicateDefinitionVerifier._checkEnumStatic has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 3, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"aee438012aa97a3e0692a526bc7abe9a0520d4131c9694255b695a1d45ae6f42"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeArgumentsVerifier.checkConstructorTearOff (cognitive 20): TypeArgumentsVerifier.checkConstructorTearOff has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (14 pts), loops 3, ternaries 1 (3 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/type_arguments_verifier.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eff317ef562e9352595b854ef84c6937aee05d85cadc86cb55deb5ef7b46815"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryManifestBuilder._fillItemMapFromInputManifests (cognitive 20): LibraryManifestBuilder._fillItemMapFromInputManifests has cognitive complexity 20 (threshold 15). Drivers by points: if/else 4 (15 pts), loops 3 (5 pts) (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1467}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb1b10c17e411a2157180f0dec1699454dc063f2d6211dda6ffca0e72201f4cd"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForInstanceAccessToStaticMember (cognitive 20): ErrorVerifier._checkForInstanceAccessToStaticMember has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":6063}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7b13ebecb3597ae4a53e85e4979b178465025b47280dc74dc240ec66a460781"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalyzerSealedClassOperations.getSubclassAsInstanceOf (cognitive 20): AnalyzerSealedClassOperations.getSubclassAsInstanceOf has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/exhaustiveness.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"33745d4b6d948c5d82570433404442b85e465bb4e8f391291394c1470c8ddcd4"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor.resolveForWrite (cognitive 20): ResolverVisitor.resolveForWrite has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (17 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":1566}}}],"partialFingerprints":{"codehealthFindingId/v1":"f25dc23b0a22f8c467ba06a1f1231cc27ad2a17ff854850af1768b106f07a510"}},{"ruleId":"D2","level":"warning","message":{"text":"_FieldPromotability._handleMembers (cognitive 20): _FieldPromotability._handleMembers has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 4, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/library_builder.dart"},"region":{"startLine":914}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aed30d56c7c2559c5735aa13d279a97b49a3b270485e79449e6a096b7e09105"}},{"ruleId":"D2","level":"warning","message":{"text":"PackageConfigWorkspace.findPackageFor (cognitive 20): PackageConfigWorkspace.findPackageFor has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 4 (10 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/pub.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"196e3071c09a01ea35dd7bec3339a832eee77909bb7feb6b820f569bfd6dc370"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisStats.print (cognitive 20): AnalysisStats.print has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (16 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/error_formatter.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad02184068c7ee4f9ad8d3e2881eecf6d239786f6f21e0bbb4363136860608c"}},{"ruleId":"D2","level":"warning","message":{"text":"HumanErrorFormatter.flush (cognitive 20): HumanErrorFormatter.flush has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 2 (4 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/error_formatter.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"294e4f36946e061a31cbbc3bcf94ec5dcbeaf5fa061c18a11d250be1905c3dca"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisOptionLinkComputer.findLinks (cognitive 20): AnalysisOptionLinkComputer.findLinks has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (10 pts), match/switch 3 (7 pts), loops 2, error handling 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/navigation/document_links.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e09c0d90907fa0bfc61b809798a272467ab6d5fb1127bc9e95b9a31a8ff52e9"}},{"ruleId":"D2","level":"warning","message":{"text":"DiagnosticReporter._reportDiagnosticInternal (cognitive 20): DiagnosticReporter._reportDiagnosticInternal has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/diagnostics/diagnostic_listener.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"44e5c0378981214e63b9e1002ab9b3e27a0ae44296e9efb1f2235f8c4b241866"}},{"ruleId":"D2","level":"warning","message":{"text":"_DartTypeToStringVisitor.visitFunctionType (cognitive 20): _DartTypeToStringVisitor.visitFunctionType has cognitive complexity 20 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 6 (9 pts), boolean chains 1 (nesting depth added 8). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1638}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f9b653c03493285e8ef76a911f85511d803a8130ae91ec0b7ec0a6aa14eb88"}},{"ruleId":"D2","level":"warning","message":{"text":"ClosureTracerVisitor.visitDynamicCallSiteTypeInformation (cognitive 20): ClosureTracerVisitor.visitDynamicCallSiteTypeInformation has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (18 pts), boolean chains 2 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/closure_tracer.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8b719b42e5c4f8fc9afcd174c3520ee15bba44c32378011def50c1fd747353"}},{"ruleId":"D2","level":"warning","message":{"text":"InferrerEngine._isFieldInitializerPotentiallyNull (cognitive 20): InferrerEngine._isFieldInitializerPotentiallyNull has cognitive complexity 20 (threshold 15). Drivers by points: boolean chains 19, if/else 1. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":769}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2661271866db3a31e477d0086c007fceff8ccc9084047cb40c6fb70d94eedeb"}},{"ruleId":"D2","level":"warning","message":{"text":"UnionTypeMask._nonEmptyIntersection (cognitive 20): UnionTypeMask._nonEmptyIntersection has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 2 (5 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"04df32d1b9167cac41f76322b8f3f655e61479e4d0414c8f7a32dfb5794559d0"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentEmitter.emitInheritance (cognitive 20): FragmentEmitter.emitInheritance has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (8 pts), loops 4 (6 pts), ternaries 2 (5 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1215}}}],"partialFingerprints":{"codehealthFindingId/v1":"4151621e3135a1f48c70c97e4fa09141785b3a1c02bc6d5a01ad50445f7383d6"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder.visitDoStatement (cognitive 20): KernelSsaGraphBuilder.visitDoStatement has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":3046}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc9687b756ce00f45f22aa4d33b209c42128bfba4f5007ca28a1cdc8342cfac0"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.visitBoundsCheck (cognitive 20): SsaCodeGenerator.visitBoundsCheck has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 4 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":3370}}}],"partialFingerprints":{"codehealthFindingId/v1":"29511871ffc1dc27cb7b5b6a159abd58fcd18f13b423d36b80cc4154b502a699"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaLateFieldOptimizer.visitLateReadCheck (cognitive 20): SsaLateFieldOptimizer.visitLateReadCheck has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3 (8 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/late_field_optimizer.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2b5971476ab43cc807bb28cf92852c792a934e5ea72332be4f7e02215858045"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitGetLength (cognitive 20): SsaInstructionSimplifier.visitGetLength has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1860}}}],"partialFingerprints":{"codehealthFindingId/v1":"0da5e31f2867d19e09606cb0a2bd2cf4b0b1696a9db36a842439be328fef447d"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaDeadCodeEliminator.updateEmptyRegions (cognitive 20): SsaDeadCodeEliminator.updateEmptyRegions has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3394}}}],"partialFingerprints":{"codehealthFindingId/v1":"76c7ee022459d53ef57da50e6f08667d57f5f4320b28578de97237c06a0ac84a"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaDeadPhiEliminator.visitGraph (cognitive 20): SsaDeadPhiEliminator.visitGraph has cognitive complexity 20 (threshold 15). Drivers by points: loops 8 (11 pts), if/else 3 (8 pts), boolean chains 1 (nesting depth added 8). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3590}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a32a7954c91b332475012b54cd21fe0eee9750e98cd42ddb451a8050e3b8070"}},{"ruleId":"D2","level":"warning","message":{"text":"MemorySet.findCommonInstruction (cognitive 20): MemorySet.findCommonInstruction has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":5033}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c8b8f4100a6cac4175f8fd0810f73f5d8b7936b991c69fb0c72e76376b7ddf8"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaTypePropagator.visitInvokeDynamic (cognitive 20): SsaTypePropagator.visitInvokeDynamic has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (17 pts), boolean chains 3 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/types_propagation.dart"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"b310f2b8e44b53ea2295b671cc800bff0c1d4dd9cd1ba91a049ed313c6f3b26f"}},{"ruleId":"D2","level":"warning","message":{"text":"NoSuchMethodDecoderBase._expandCallSignature (cognitive 20): NoSuchMethodDecoderBase._expandCallSignature has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (15 pts), ternaries 2 (4 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_tools/lib/src/name_decoder.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd9bc95586761bdda97c4de8995ffd0a0494899f47d235e4277ccb8a5e17fc6"}},{"ruleId":"D2","level":"warning","message":{"text":"ExecutableCompiler.parseDepfile (cognitive 20): ExecutableCompiler.parseDepfile has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (5 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/executable_compiler.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea68fc96e2535cb691efded77ab49527cf34e2deb2c398f0a67fd126c82f130d"}},{"ruleId":"D2","level":"warning","message":{"text":"BazelUriConverter.uriToPath (cognitive 20): BazelUriConverter.uriToPath has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14 (19 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/bazel_uri_converter.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"27ea2a04ad43fbb177fcb7be3854cb5e9c85bd5b611deb4eb5c3d39d93c033f6"}},{"ruleId":"D2","level":"warning","message":{"text":"_TypeRecipeVisitor.visitFunctionType (cognitive 20): _TypeRecipeVisitor.visitFunctionType has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 4 (6 pts), ternaries 1 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/type_recipe_generator.dart"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"b36597e0d6ddb321329fc405034ad224a22ff1df76befcaa56f49a06751bfb25"}},{"ruleId":"D2","level":"warning","message":{"text":"ParsedType.== (cognitive 20): ParsedType.== has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12 (16 pts), loops 2 (4 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/expression_compilation_tools.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ff7787ebee39511da285596931a2d0ef879da31d9cc1ddb7009cfa08d5f1935"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalSerializer.writePackagesToSinkAndTrimComponent (cognitive 20): IncrementalSerializer.writePackagesToSinkAndTrimComponent has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (12 pts), loops 6 (8 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_serializer.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"525e8bada2a4e2d02b56c05e98e52c7b629a25d69159c565893eee0b6fa8cd45"}},{"ruleId":"D2","level":"warning","message":{"text":"DillExportNameSpace.patchUpScope (cognitive 20): DillExportNameSpace.patchUpScope has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/name_space.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"17c022065b78a7af552e77222c8ddad6ecf98deb277b1bc4480cb448aff6772e"}},{"ruleId":"D2","level":"warning","message":{"text":"ProcessedOptions.validateOptions (cognitive 20): ProcessedOptions.validateOptions has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 5, loops 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"8851628bf1a15494e950ccee83b55a36128ce7f6d594cd8ec94ed68cc6843a53"}},{"ruleId":"D2","level":"warning","message":{"text":"FactoryEncoding.buildOutlineNodes (cognitive 20): FactoryEncoding.buildOutlineNodes has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (11 pts), ternaries 4 (7 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"10cac029262cfa78822a87dee1a2f7634f1cb9cd4ce5b25652c3b4bd0db2d9cf"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endBinaryPattern (cognitive 20): BodyBuilderImpl.endBinaryPattern has cognitive complexity 20 (threshold 15). Drivers by points: loops 6 (12 pts), if/else 3 (7 pts), match/switch 1 (nesting depth added 10). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3134}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee42a6c1e28680a174f35b5f0da7465f34d439f8f236f104f8b4ecf1a9f010e"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.handleCatchBlock (cognitive 20): BodyBuilderImpl.handleCatchBlock has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 1 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":6548}}}],"partialFingerprints":{"codehealthFindingId/v1":"a45bd49555e65f67a9521c828eeadda4623d8ba4caddc1799395e4f7a88d299e"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.visitConstructorInvocation (cognitive 20): ConstantEvaluator.visitConstructorInvocation has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14 (16 pts), boolean chains 2, ternaries 1 (2 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3533}}}],"partialFingerprints":{"codehealthFindingId/v1":"55c47b5d3d2ba260752467c2681f661aa6cd1874b5a204d1b2e0a47f1e777f73"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.visitStringConcatenation (cognitive 20): ConstantEvaluator.visitStringConcatenation has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5044}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aedcc9db662d976c941460b8ba4172b0271327d8359d92acd7b83b7a10bb5a2"}},{"ruleId":"D2","level":"warning","message":{"text":"Covariance.merge (cognitive 20): Covariance.merge has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11, loops 3 (6 pts), boolean chains 3 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/member_covariance.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"57829ca917cd8446bd2bf844c53ec4896ef0cd0cc03f0268db03be414525e4ea"}},{"ruleId":"D2","level":"warning","message":{"text":"BuilderFactory._createMethodBuilder (cognitive 20): BuilderFactory._createMethodBuilder has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 3 (5 pts), boolean chains 4, ternaries 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":966}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a5a5b852717ccd081e8550ebd51a5e64085286caebeaa984f812595b75c55dc"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.endMixinDeclaration (cognitive 20): OutlineBuilder.endMixinDeclaration has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2 (6 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"293261c93ee53f5c4c5afcb1b2e81bdc183faceadae7b5b811be28a109125959"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.endTypeVariable (cognitive 20): OutlineBuilder.endTypeVariable has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (20 pts) (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":4413}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba11d36ecc0bba41cc2ea7f0bcc6ae17e51ec13398ac81c7afc4f031d9a7bdf2"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceClassBuilder.build (cognitive 20): SourceClassBuilder.build has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 4, loops 1 (2 pts), ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7ae2a16fc42e1fc15155544a2be4718a9d1e4257ca0ac0d9828faf2d772cdd9"}},{"ruleId":"D2","level":"warning","message":{"text":"_AsyncContext._checkValidReturn (cognitive 20): _AsyncContext._checkValidReturn has cognitive complexity 20 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 9 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"eac2c012ec3be9025054da42e65d191cb032bd87b45ccbff3043c97acadeb5d5"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitAnonymousMethodExpression (cognitive 20): InferenceVisitorImpl.visitAnonymousMethodExpression has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15 (16 pts), ternaries 2 (4 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":9166}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee35fc55975d102e54c59ecffe20f7d059e582fefca4c73842bec679bec3279"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl._inferInternalVariableDeclaration (cognitive 20): InferenceVisitorImpl._inferInternalVariableDeclaration has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 4, ternaries 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":14303}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccedad9fd0298bebab96746fb2d58c09a6891a1af97bf677570cce05df1f3a77"}},{"ruleId":"D2","level":"warning","message":{"text":"IntersectionType.nullability (cognitive 20): IntersectionType.nullability has cognitive complexity 20 (threshold 15). Drivers by points: boolean chains 19, match/switch 1. The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2171}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f7d926d4cef38b94e55590bcc0f36a0c079ee1cc698162fb0d96d2af8bfce1b"}},{"ruleId":"D2","level":"warning","message":{"text":"DartTypeEquivalence.visitRecordType (cognitive 20): DartTypeEquivalence.visitRecordType has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/dart_type_equivalence.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a0e45e51ce1d4fab07cdae5910b06628294528fc062ed098748a6b68cd90382"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitVariableDeclarationList (cognitive 20): _Visitor.visitVariableDeclarationList has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13 (19 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/always_specify_types.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e8122826c082712c192cf11d899e34cf721270e89a33fb600241699fc2c3f40"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._problemsForAnalyzerPublicApi (cognitive 20): _Visitor._problemsForAnalyzerPublicApi has cognitive complexity 20 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 3 (6 pts), match/switch 2 (3 pts), boolean chains 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_public_api.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea93500ed378b9c856cf90b77bfb84421aa85607cd8716c7cb61c8f98fb5707b"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._checkConstant (cognitive 20): _Visitor._checkConstant has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 8 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_contains.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"479f5e26bf11251bbf73e60f69678f12223abbd5e5c068ebe2d5c5eaff516a3d"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitCompilationUnit (cognitive 20): _Visitor.visitCompilationUnit has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 3, boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/public_member_api_docs.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"556ea32cfea2c5e301ddc5c503298b6e5c698b63e88a3f9d5739e6884f408caf"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._checkMembers (cognitive 20): _Visitor._checkMembers has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (19 pts), loops 1 (nesting depth added 12). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_primary_constructors.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0bbf02f0cc710a7b180d07f58b67dd1928507a578ea2b26407932be3d03c257"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.check (cognitive 20): _Visitor.check has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10 (18 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_super_parameters.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9de9523b2de654c6d04c3dc0ed442af428e914414abf9cbc509c863a005dc05"}},{"ruleId":"D2","level":"warning","message":{"text":"_LineNumberContentType.validate (cognitive 20): _LineNumberContentType.validate has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (10 pts), boolean chains 9, match/switch 1 (nesting depth added 5). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/dwarf.dart"},"region":{"startLine":1070}}}],"partialFingerprints":{"codehealthFindingId/v1":"449de10e51f63146ac269d0a8ca135a9d2b57af1a4f29dde7863448a5788a7d5"}},{"ruleId":"D2","level":"warning","message":{"text":"ObservatoryDebugger.onEvent (cognitive 20): ObservatoryDebugger.onEvent has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (19 pts), match/switch 1 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1740}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ca87336a332cc602e50136db9ed56ea9aef0fde19ea8f6fc554a3fddae55dfc"}},{"ruleId":"D2","level":"warning","message":{"text":"HeapSnapshotElement._createReport (cognitive 20): HeapSnapshotElement._createReport has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (18 pts), match/switch 1, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0871f9e1f31628bce65c67cc75cd942d52de51d462bde9147b316a974132dc7"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptInsetElement.linesTable (cognitive 20): ScriptInsetElement.linesTable has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (6 pts), boolean chains 1, ternaries 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d1d2ab2de179baf7247834d6d2762b992ab3cf004bdbe600610da1f5f19bbb9"}},{"ruleId":"D2","level":"warning","message":{"text":"Histogram.printCounts (cognitive 20): Histogram.printCounts has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 5, loops 2 (3 pts), match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/lib/src/histogram.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"6db7e132baf167fe3b1722e36efcdfc04904f8a9154958d21777c69e6fa0a4d6"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportSection.deserialize (cognitive 20): ImportSection.deserialize has cognitive complexity 20 (threshold 15). Drivers by points: ternaries 2 (8 pts), if/else 3 (6 pts), match/switch 1 (3 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b846c7c794f292ec17bb4936965530434706e2af35ca6c9621c4d29005d7e7d"}},{"ruleId":"D2","level":"warning","message":{"text":"SmartConsole.smartReadLine (cognitive 20): SmartConsole.smartReadLine has cognitive complexity 20 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (3 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/heapsnapshot/lib/src/console.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb81076cbe61ddfb83f26e037459b1e3f73539dbf96cbb4f766ea99e24c7387c"}},{"ruleId":"D2","level":"warning","message":{"text":"_ImplicitUsesAnnotator.annotateDispatchTargets (cognitive 20): _ImplicitUsesAnnotator.annotateDispatchTargets has cognitive complexity 20 (threshold 15). Drivers by points: if/else 3 (10 pts), loops 5 (10 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/dynamic_interface_annotator.dart"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e332eee16d16966fa56813da272bb0c7c23cedd3f2b47a836590b48017c3796"}},{"ruleId":"D2","level":"warning","message":{"text":"_DeduplicateMixinsTransformer._correctForwardingConstructors (cognitive 20): _DeduplicateMixinsTransformer._correctForwardingConstructors has cognitive complexity 20 (threshold 15). Drivers by points: if/else 3 (12 pts), loops 3 (7 pts), boolean chains 1 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/mixin_deduplication.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"41258b23bfed9bd71384087cd9234c4310585bbda5c6e87b4aecad33f93e24d0"}},{"ruleId":"D2","level":"warning","message":{"text":"_DirectInvocation._processField (cognitive 20): _DirectInvocation._processField has cognitive complexity 20 (threshold 15). Drivers by points: ternaries 5 (9 pts), if/else 4 (7 pts), boolean chains 3, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"add517f6d488231ad6a01f29355aceae19c73d856b1783d6417e1e5de5fd708d"}},{"ruleId":"D2","level":"warning","message":{"text":"PragmaEntryPointsVisitor.visitField (cognitive 20): PragmaEntryPointsVisitor.visitField has cognitive complexity 20 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 2, match/switch 1 (2 pts), loops 1, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/native_code.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa6b5157b5da10bf7c3542ece1e20ea920b96327ff38dea89d96ec6d5827c883"}},{"ruleId":"D2","level":"warning","message":{"text":"BinaryOperation.apply (cognitive 20): BinaryOperation.apply has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11 (19 pts), match/switch 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dc77897010f184723fe9ac1b74a8a47a254daf5c06d8e388d8d170756a80960"}},{"ruleId":"D2","level":"warning","message":{"text":"TypesBuilder.fromStaticType (cognitive 20): TypesBuilder.fromStaticType has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16 (18 pts), boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"19827066ea089e1525a9d8fe200c2673d055e33af3a1ccd6884264f7ced0ae4b"}},{"ruleId":"D2","level":"warning","message":{"text":"HtmlDartGenerator.AddSecondaryMembers (cognitive 20): HtmlDartGenerator.AddSecondaryMembers has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 3 (5 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"a91c236290221e6661925cf758705fc7fd41fedf94f3164c190459b7255a9663"}},{"ruleId":"D2","level":"warning","message":{"text":"graphexplorer.Graph.forestEval (cognitive 20): graphexplorer.Graph.forestEval has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9 (18 pts), loops 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec63a68f1cb8f56727ea112293099686319764c925ce4d3254edf10b9c5bace1"}},{"ruleId":"D2","level":"warning","message":{"text":"graphexplorer.Graph.computeOwnedSizes (cognitive 20): graphexplorer.Graph.computeOwnedSizes has cognitive complexity 20 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 4 (7 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"76cb0faee47a22f6f642c126948a710aabc4cc5c4812c3fc0e9d7e2d1336ee19"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.discardBeginGroupUntil (cognitive 19): AbstractScanner.discardBeginGroupUntil has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 2 (3 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"26f8a33ed82df095a5d64d4b067fb0751cd1055fc764a620c85f1983ed5ede96"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionResult._getElement (cognitive 19): CompletionResult._getElement has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":1771}}}],"partialFingerprints":{"codehealthFindingId/v1":"a82c3846c34e7c17ee940a574f6b4883d9cdec6777d80a12c685a0cdab5aa181"}},{"ruleId":"D2","level":"warning","message":{"text":"LogEntry.from (cognitive 19): LogEntry.from has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16 (18 pts), error handling 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/log/log.dart"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7fd2dfa7dba20b9e44be857a771e444d6311502f6838b248d6904be8cd8b04f"}},{"ruleId":"D2","level":"warning","message":{"text":"_FlatBufferSchemaGenerator.generate (cognitive 19): _FlatBufferSchemaGenerator.generate has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 4 (6 pts), ternaries 1 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":872}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5c0d8007c1560b1ad8c0d7b8394670cb13f2029872070d3722ee2d892c00875"}},{"ruleId":"D2","level":"warning","message":{"text":"_AwaitTransformer.visitForStatement (cognitive 19): _AwaitTransformer.visitForStatement has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 3, loops 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea31af475806d4c230007780a6da4153671e07ff5daf1929bf9ac9977b3bfff6"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstantAccessor._constantName (cognitive 19): _ConstantAccessor._constantName has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 1, ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":2280}}}],"partialFingerprints":{"codehealthFindingId/v1":"e00a336cc30c7faea19f8bc158bc74caf4c1da553f18421684f7a71869a6eac4"}},{"ruleId":"D2","level":"warning","message":{"text":"DryRunSummarizer._lintChecks (cognitive 19): DryRunSummarizer._lintChecks has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 4 (8 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dry_run.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"045fbf731de905f33b4b7a483a97e2ebd20fb8fa9b5f2e13ed4d55a549b7068d"}},{"ruleId":"D2","level":"warning","message":{"text":"ParameterInfo.merge (cognitive 19): ParameterInfo.merge has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (17 pts), loops 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/param_info.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"f600fe8683db916b36e670bc4879857d3d93d8bdf63b899a559de7d391001b8e"}},{"ruleId":"D2","level":"warning","message":{"text":"_ClosureDynamicEntryGenerator.generate (cognitive 19): _ClosureDynamicEntryGenerator.generate has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 4, boolean chains 1, ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":2955}}}],"partialFingerprints":{"codehealthFindingId/v1":"5605e1d902e9116779d2fd8eea3006bfae84038c57742484437e310f0d12618d"}},{"ruleId":"D2","level":"warning","message":{"text":"Expect._escapeSubstring (cognitive 19): Expect._escapeSubstring has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 2, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"b369a1420dc7ccc81e6312a9dbe403395408b1b9e5e829617e70664661fb9011"}},{"ruleId":"D2","level":"warning","message":{"text":"Expect.stringEquals (cognitive 19): Expect.stringEquals has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (10 pts), boolean chains 5, loops 2, ternaries 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"6981467cd4315d4cb98abf2ad418d2c8592b1d495c12b7ca35eab75f479efbc9"}},{"ruleId":"D2","level":"warning","message":{"text":"BenchMaker.visitFunctionType (cognitive 19): BenchMaker.visitFunctionType has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 3 (5 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/bench_maker.dart"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9c5217fc8e5674b359015cd708fd99801af98d63fdd413d366ae87e6a37e28e"}},{"ruleId":"D2","level":"warning","message":{"text":"AstIndexerAndIgnoreCollector._hasIgnoreComment (cognitive 19): AstIndexerAndIgnoreCollector._hasIgnoreComment has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 4 (8 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":914}}}],"partialFingerprints":{"codehealthFindingId/v1":"b12d84cbb25799470269b7e9b03e561232d23f086b2807f4bc8e4cf7536b203e"}},{"ruleId":"D2","level":"warning","message":{"text":"MyLaunchingVMServiceHelper.run (cognitive 19): MyLaunchingVMServiceHelper.run has cognitive complexity 19 (threshold 15). Drivers by points: if/else 3 (9 pts), error handling 2 (5 pts), loops 2 (5 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_runner.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c25ba0d9760cc69dfd419f6fe72f2d8b4004234054c1ec5c02bbffaff785f0"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassHierarchyExtensionTypeMixin.getExtensionTypeDeclarationAsInstanceOfClass (cognitive 19): ClassHierarchyExtensionTypeMixin.getExtensionTypeDeclarationAsInstanceOfClass has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"76c0b2d9a38aa2288ece241759fbe2c19ccfc84be0cbdb3c2b24331c36708996"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeCheckingVisitor.getReceiverType (cognitive 19): TypeCheckingVisitor.getReceiverType has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 7 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab66f1e311c6eb5b6f0b9fb64ad30cbd76eb42e168a791781abbe9de9db25c8"}},{"ruleId":"D2","level":"warning","message":{"text":"Step.parse (cognitive 19): Step.parse has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (5 pts), boolean chains 1, ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/builder.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61e72abf2f7b401d98a56cb3f234eac474f626dc5a4639ec6612076983d8b6f"}},{"ruleId":"D2","level":"warning","message":{"text":"Method.generateDefinition (cognitive 19): Method.generateDefinition has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13 (17 pts), boolean chains 1, ternaries 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"63354c403a83853a9426deca6f9be9b518649f2af6ec13b7b8a62ae5d5657826"}},{"ruleId":"D2","level":"warning","message":{"text":"LinkedMap.remove (cognitive 19): LinkedMap.remove has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 1 (2 pts), ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"037f7d78da4c8034bd4ea5bcced33335186bd4f1eb17d4a615914389ca7f914a"}},{"ruleId":"D2","level":"warning","message":{"text":"HashMap.HashMap (cognitive 19): HashMap.HashMap has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (18 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 3 other methods here (LinkedHashMap.LinkedHashMap, HashSet.HashSet, LinkedHashSet.LinkedHashSet) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 4 times rather than 4 independent problems. Splitting this body alone leaves the other 3 exactly as they are. Where these are variations on one operation, the change that clears all 4 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e07513a045026fb78919c1d39d036a98b7bbe4a08c88d7720293d007fada200"}},{"ruleId":"D2","level":"warning","message":{"text":"LinkedHashMap.LinkedHashMap (cognitive 19): LinkedHashMap.LinkedHashMap has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (18 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 3 other methods here (HashMap.HashMap, HashSet.HashSet, LinkedHashSet.LinkedHashSet) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 4 times rather than 4 independent problems. Splitting this body alone leaves the other 3 exactly as they are. Where these are variations on one operation, the change that clears all 4 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"04847520cb5d6523f1f44c4377b520c5bc95710142c55e23dc1f6a8295ae0164"}},{"ruleId":"D2","level":"warning","message":{"text":"HashSet.HashSet (cognitive 19): HashSet.HashSet has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (18 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 3 other methods here (HashMap.HashMap, LinkedHashMap.LinkedHashMap, LinkedHashSet.LinkedHashSet) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 4 times rather than 4 independent problems. Splitting this body alone leaves the other 3 exactly as they are. Where these are variations on one operation, the change that clears all 4 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"b556d8891d9fda7a74a3e61534666ddaec3743edbfe9235c4bea8feddce6f8b2"}},{"ruleId":"D2","level":"warning","message":{"text":"LinkedHashSet.LinkedHashSet (cognitive 19): LinkedHashSet.LinkedHashSet has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (18 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 3 other methods here (HashMap.HashMap, LinkedHashMap.LinkedHashMap, HashSet.HashSet) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 4 times rather than 4 independent problems. Splitting this body alone leaves the other 3 exactly as they are. Where these are variations on one operation, the change that clears all 4 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":1024}}}],"partialFingerprints":{"codehealthFindingId/v1":"c83e04fc1b3c69c1bc28b4f124f1f26e84aa6ab4d424db772fe3c0ce5e419739"}},{"ruleId":"D2","level":"warning","message":{"text":"_List.setRange (cognitive 19): _List.setRange has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/array.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf98da2b1c75b50f96fe6df5d6338554c4a6a7419bb583798760405249cf150b"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringEscape (cognitive 19): _ChunkedJsonParser.parseStringEscape has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (2 pts), boolean chains 1, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"10256149d0530f98df734f88f6fdb77cc5d31af3c1e78f397a2d93360888cf89"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Decoder.decode16 (cognitive 19): _Utf8Decoder.decode16 has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 2, loops 1, ternaries 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":2064}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e53359a6207a1e06fc1a7c0b5064c5e376fc2ee92e5a2cb0a51488b5bc0ad5f"}},{"ruleId":"D2","level":"warning","message":{"text":"_StringBase._createStringFromIterable (cognitive 19): _StringBase._createStringFromIterable has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 4, loops 2, ternaries 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c2ecc0c47bfc333050ef5929c6d73c50a15b4077a19d2bf17efe42cf2b3068"}},{"ruleId":"D2","level":"warning","message":{"text":"_TypedIntListMixin._slowSetRange (cognitive 19): _TypedIntListMixin._slowSetRange has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 2 (6 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 4 other methods here (_TypedDoubleListMixin._slowSetRange, _Float32x4ListMixin._slowSetRange, _Int32x4ListMixin._slowSetRange, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 5 times rather than 5 independent problems. Splitting this body alone leaves the other 4 exactly as they are. Where these are variations on one operation, the change that clears all 5 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":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"64f3e28ab9c3ffdbb4777b339478390882eae65b7b7b528a8507f586e3940aa4"}},{"ruleId":"D2","level":"warning","message":{"text":"_TypedDoubleListMixin._slowSetRange (cognitive 19): _TypedDoubleListMixin._slowSetRange has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 2 (6 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 4 other methods here (_TypedIntListMixin._slowSetRange, _Float32x4ListMixin._slowSetRange, _Int32x4ListMixin._slowSetRange, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 5 times rather than 5 independent problems. Splitting this body alone leaves the other 4 exactly as they are. Where these are variations on one operation, the change that clears all 5 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":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"b92e2555b68bea0112eb7f5ba3f016e7f8623d1725fa7f340fc4d8ecd83ea065"}},{"ruleId":"D2","level":"warning","message":{"text":"_Float32x4ListMixin._slowSetRange (cognitive 19): _Float32x4ListMixin._slowSetRange has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 2 (6 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 4 other methods here (_TypedIntListMixin._slowSetRange, _TypedDoubleListMixin._slowSetRange, _Int32x4ListMixin._slowSetRange, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 5 times rather than 5 independent problems. Splitting this body alone leaves the other 4 exactly as they are. Where these are variations on one operation, the change that clears all 5 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":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"11fe4516b5ab455bd4ac5fadb7aa376f57eee9109a9dd8990a4c2fce7a23ce0e"}},{"ruleId":"D2","level":"warning","message":{"text":"_Int32x4ListMixin._slowSetRange (cognitive 19): _Int32x4ListMixin._slowSetRange has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 2 (6 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 4 other methods here (_TypedIntListMixin._slowSetRange, _TypedDoubleListMixin._slowSetRange, _Float32x4ListMixin._slowSetRange, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 5 times rather than 5 independent problems. Splitting this body alone leaves the other 4 exactly as they are. Where these are variations on one operation, the change that clears all 5 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":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":1319}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a7a3ab06a5c5285695a74a6566d6881afdb88d9d5033d347328e1dbcf0a7f99"}},{"ruleId":"D2","level":"warning","message":{"text":"_Float64x2ListMixin._slowSetRange (cognitive 19): _Float64x2ListMixin._slowSetRange has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 2 (6 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: 4 other methods here (_TypedIntListMixin._slowSetRange, _TypedDoubleListMixin._slowSetRange, _Float32x4ListMixin._slowSetRange, \u2026) have the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written 5 times rather than 5 independent problems. Splitting this body alone leaves the other 4 exactly as they are. Where these are variations on one operation, the change that clears all 5 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":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7d143623e6b4ea3ea28b85ea6d9c941badcac1144d5ddff9d4067331e596e33"}},{"ruleId":"D2","level":"warning","message":{"text":"_BigIntImpl.toString (cognitive 19): _BigIntImpl.toString has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (17 pts), loops 1, ternaries 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":2600}}}],"partialFingerprints":{"codehealthFindingId/v1":"292cada97a2f026ef2490d1e38be64a7e6d89265f7cfaffae66a45de1abcad6a"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringEscape (cognitive 19): _ChunkedJsonParser.parseStringEscape has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (2 pts), boolean chains 1, match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6e492747471c0e9138faf942a35a213d5ef4245bbacc3889e384d3d5c4d558d"}},{"ruleId":"D2","level":"warning","message":{"text":"Arm64CodeGenerator._prepareOptionalPositionalParameters (cognitive 19): Arm64CodeGenerator._prepareOptionalPositionalParameters has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (11 pts), ternaries 3 (5 pts), loops 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"a17f9a5e4d64eba93829c98a174b9a1fe8b0dad10c51e11c23ddfc1a5f117010"}},{"ruleId":"D2","level":"warning","message":{"text":"RegisterAllocationChecker._updateInState (cognitive 19): RegisterAllocationChecker._updateInState has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 2 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/regalloc_checker.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"85f497ba641caf8bb24e1ad872b3089fbef1d2a827ee7e38130daecd842293a9"}},{"ruleId":"D2","level":"warning","message":{"text":"LineInfo.getOffsetForLine (cognitive 19): LineInfo.getOffsetForLine has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 1, loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/source/line_info.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b163552483896d262c8efbc1e672418864e51e6632a77fb71d40f999461eb9"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordFieldDeclarationIdentifierContext.ensureIdentifier (cognitive 19): RecordFieldDeclarationIdentifierContext.ensureIdentifier has cognitive complexity 19 (threshold 15). Drivers by points: boolean chains 13, if/else 5 (6 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"27609f9f40851bfb2c0bfd8318f245a4417205d395572eeefdd58db4c08bc520"}},{"ruleId":"D2","level":"warning","message":{"text":"ModifierContext._parseModifiers (cognitive 19): ModifierContext._parseModifiers has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14 (17 pts), boolean chains 1, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"24e8262657c649d7028e8aff206ed3521f826206885fb18ea3b9d08236a00e34"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.discardBeginGroupUntil (cognitive 19): AbstractScanner.discardBeginGroupUntil has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 2 (3 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"363a88d85c758dc6b3fb63cd9057f45a65f6ab424d8ade6f3373a68efeb8d0fe"}},{"ruleId":"D2","level":"warning","message":{"text":"Writer._formalParametersToText (cognitive 19): Writer._formalParametersToText has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 2, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/metadata_helper.dart"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"798588f32863a0644ef4e3bc3a2b2136a70f7fbc75546f15db708e20486ce80b"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeConstraintGenerator.performSubtypeConstraintGenerationForRightNullableType (cognitive 19): TypeConstraintGenerator.performSubtypeConstraintGenerationForRightNullableType has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":2022}}}],"partialFingerprints":{"codehealthFindingId/v1":"94140a9101769f55e668c37879fb923a4664439aede66c21cb12fddd03f94168"}},{"ruleId":"D2","level":"warning","message":{"text":"CheckNameResponse._getInterpolationIdentifier (cognitive 19): CheckNameResponse._getInterpolationIdentifier has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 2, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/rename.dart"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1cb437a91a121a010d254b8db289947d19e20aed862572d47014d64bd5c9d5"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextManagerImpl._computePluginConflicts (cognitive 19): ContextManagerImpl._computePluginConflicts has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 5 (9 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c05f3de719a8fad17b50826d91258c9570d1d4199024728bb99876cecf639b0"}},{"ruleId":"D2","level":"warning","message":{"text":"MigrationSummaryBuilder._writeVersionMigrationSummary (cognitive 19): MigrationSummaryBuilder._writeVersionMigrationSummary has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (12 pts), ternaries 2 (4 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/migration/migration_summary_builder.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1695a29320553db322a4494f34550401bc43fe32cc6f571a67cad87fdafbd25"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper.addLexicalDeclarations (cognitive 19): DeclarationHelper.addLexicalDeclarations has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (14 pts), boolean chains 2, match/switch 2, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"064fa6d1fbf7a2a83fd7aee6a7188514fc3fc6dea6ef4c85943617aa0dde5a1c"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._suggestClass (cognitive 19): DeclarationHelper._suggestClass has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 5 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2036}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4a24b8164c5166ea395fa8bea27031b2648a4a900df7bd7b78b7be1f8e94ee"}},{"ruleId":"D2","level":"warning","message":{"text":"_ContextTypeVisitor.visitRecordLiteral (cognitive 19): _ContextTypeVisitor.visitRecordLiteral has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (18 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"8886fcb8d539b84b90a60a129fd0f28250f23a236ddff72af5ace395d55eb086"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitIfElement (cognitive 19): InScopeCompletionPass.visitIfElement has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1768}}}],"partialFingerprints":{"codehealthFindingId/v1":"e45c1913ec7bdd60d4f7851d92969745a0378d102caa1c67242b63c2351687c8"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertClassToMixin.compute (cognitive 19): ConvertClassToMixin.compute has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 4, loops 1, match/switch 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_mixin.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4bc1ca32d02b9313f42c971273796ab37369ff802aa0de747038949261d83dc"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertFieldFormalToNormal.compute (cognitive 19): ConvertFieldFormalToNormal.compute has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15 (17 pts), boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_field_formal_to_normal.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"8207e48f6d7aac308a9eb532e5de1340b9fbcc41a367e710dc4fc0622276ff88"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToIfNull._preferIfNull (cognitive 19): ConvertToIfNull._preferIfNull has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_if_null.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"635da555a40201cac6eaedfb081994c68ae69c1a0230dd69d0588cf7bc8a9dc0"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateEnumConstant.compute (cognitive 19): CreateEnumConstant.compute has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14 (17 pts), boolean chains 1, match/switch 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_enum_constant.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"79dffd558a49b4d14b87650c338c2aaec81fd3df5fc0b30b9782cc471ec341a0"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplaceIfElseWithConditional.compute (cognitive 19): ReplaceIfElseWithConditional.compute has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 7 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_if_else_with_conditional.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"22509a4273424368a6ae612a31a217cb22cef1748d8fc5df310d6f10cb50f4c0"}},{"ruleId":"D2","level":"warning","message":{"text":"WrapInUnawaited.compute (cognitive 19): WrapInUnawaited.compute has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (14 pts), loops 1 (3 pts), boolean chains 1, ternaries 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/wrap_in_unawaited.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"36803de7e53ead02e69732367228a710d50801756f3ffc292d6861b536a6da07"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeFragmentParser._parseAccessor (cognitive 19): CodeFragmentParser._parseAccessor has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (19 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/code_fragment_parser.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"623afcf2139cad822dc2962d4912125d3222e40aac9f1b26e1b5fb25fccef12c"}},{"ruleId":"D2","level":"warning","message":{"text":"LegacyPluginsPage.generateContent (cognitive 19): LegacyPluginsPage.generateContent has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 2 (3 pts), match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/legacy_plugins_page.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"800379c8aaac0326c34f67f22df700696bff52c2bfda5dd77fe064252ad1495d"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginServer._computeEffectiveIncludedPaths (cognitive 19): PluginServer._computeEffectiveIncludedPaths has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd720eac3236eafe151ec5641e3288d91e45198808c28dcb6df67aa9d20232b2"}},{"ruleId":"D2","level":"warning","message":{"text":"_ContextLocator._contextRootLocation (cognitive 19): _ContextLocator._contextRootLocation has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_locator.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"78adbda07b9eef6584060d99ca1596861bd6986d7e75b394ce23020a8c3add6c"}},{"ruleId":"D2","level":"warning","message":{"text":"_ContextLocator._sortIncludedFoldersIntoWorkspaceResolutions (cognitive 19): _ContextLocator._sortIncludedFoldersIntoWorkspaceResolutions has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (17 pts), boolean chains 1, loops 1 (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_locator.dart"},"region":{"startLine":893}}}],"partialFingerprints":{"codehealthFindingId/v1":"476bd6b033e2b7881e2a86549a300f267b6f038b0bbcfd3fa46b0196741ae644"}},{"ruleId":"D2","level":"warning","message":{"text":"BinaryExpressionResolver._resolveEqual (cognitive 19): BinaryExpressionResolver._resolveEqual has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (11 pts), boolean chains 5, ternaries 2, match/switch 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e26577a6f6415dc5df869e00a4a6bbe0ae252d6232f89e764921b7b8d3e80f0"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtensionMemberResolver._isValidContext (cognitive 19): ExtensionMemberResolver._isValidContext has cognitive complexity 19 (threshold 15). Drivers by points: boolean chains 18, if/else 1. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"68de256f551ac674e4bd8b87a49c8605f16b1595eed94e2f79bf0fe8af61787f"}},{"ruleId":"D2","level":"warning","message":{"text":"_AssignedVariablesVisitor._handleFor (cognitive 19): _AssignedVariablesVisitor._handleFor has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (16 pts), loops 1 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"},"region":{"startLine":1381}}}],"partialFingerprints":{"codehealthFindingId/v1":"08c361c0b79d2eba48fe6e659a6fb1820ac4034e73a171da0f84c8500d0b9e11"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationVerifier._checkReopen (cognitive 19): AnnotationVerifier._checkReopen has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 6 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1de958fb231196e13f3c4e2e2a2b486839bdd9b11464e10c24d48aec80624b9"}},{"ruleId":"D2","level":"warning","message":{"text":"TodoFinder._scrapeTodoComment (cognitive 19): TodoFinder._scrapeTodoComment has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (10 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/todo_finder.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"77bc8cb406ff123c5f8d501e741299d7a0f0706849b22ee77e9558a8b705a418"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForBadFunctionUse (cognitive 19): ErrorVerifier._checkForBadFunctionUse has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":3816}}}],"partialFingerprints":{"codehealthFindingId/v1":"e083d0dded9006d8c8eb471cb6db418c0bd61a345dbfa6adbe8f9cc738ba35b1"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier.visitCascadePropertyExtraction (cognitive 19): FfiVerifier.visitCascadePropertyExtraction has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"c636276282676c52161bf097d70d56f9051087baa2cf97d7189d8f30fe6515e5"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateAddressReceiver (cognitive 19): FfiVerifier._validateAddressReceiver has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1403}}}],"partialFingerprints":{"codehealthFindingId/v1":"78b916b6e4b4281e262b878d8a4f93db13cdb9648247c35b71b1c84eccd43a77"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateAnnotations (cognitive 19): FfiVerifier._validateAnnotations has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1496}}}],"partialFingerprints":{"codehealthFindingId/v1":"59117c7dc5b644db9c2eec4464deab2a455abe7a6f384f67155804773185243a"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementBuilder._linkTypeParameters (cognitive 19): ElementBuilder._linkTypeParameters has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 4 (8 pts), match/switch 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1165}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b4358c1ee5a26ea8737321d49cf6a4f91e3800815cc9eb29743fcfa3c6980c2"}},{"ruleId":"D2","level":"warning","message":{"text":"CommandLineOptions.filterUnknownArguments (cognitive 19): CommandLineOptions.filterUnknownArguments has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 3, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/options.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"459faa6b2bfe0d75b0a017278d3630128a220c8de4294d3c915840075acf5016"}},{"ruleId":"D2","level":"warning","message":{"text":"TracerVisitor.analyzeStoredIntoRecord (cognitive 19): TracerVisitor.analyzeStoredIntoRecord has cognitive complexity 19 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 2 (5 pts), boolean chains 3 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3c3f8daed3194af074f1738f1a4222b196e3fb6f59015893041874aaaeee925"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentEmitter.emitLazilyInitializedStatics (cognitive 19): FragmentEmitter.emitLazilyInitializedStatics has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (15 pts), ternaries 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1748}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa59f6e672c5f50b880948116c1f69c2f636bae7343102aa5d6d26c7ded7b33c"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelEmitter.emitProgram (cognitive 19): ModelEmitter.emitProgram has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (9 pts), loops 6 (8 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"81423cd77d0cfb124bdb6711c391ff3848bd38479444c535cef4006a1cb2b4a3"}},{"ruleId":"D2","level":"warning","message":{"text":"JumpVisitor.visitBreakStatement (cognitive 19): JumpVisitor.visitBreakStatement has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/locals.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"77ed0c476143adecfb3b39a6f56d53739b6a81a4978b18936b68cf66b01c40d2"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._handleForeignRawFunctionRef (cognitive 19): KernelSsaGraphBuilder._handleForeignRawFunctionRef has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (18 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5825}}}],"partialFingerprints":{"codehealthFindingId/v1":"b59c68596e0e20ba67621d9c8fee8985fa346f40778d19fa2e931c522f890dff"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._invokeJsInteropFunction (cognitive 19): KernelSsaGraphBuilder._invokeJsInteropFunction has cognitive complexity 19 (threshold 15). Drivers by points: boolean chains 7, if/else 3 (5 pts), ternaries 2 (5 pts), loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7009}}}],"partialFingerprints":{"codehealthFindingId/v1":"990d5a172bc2354fa7934e09fee20d8b800cc70471df484daf3039e1eeadc4ca"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._completeDynamicCallArgumentsList (cognitive 19): KernelSsaGraphBuilder._completeDynamicCallArgumentsList has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (12 pts), loops 2 (6 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8188}}}],"partialFingerprints":{"codehealthFindingId/v1":"be84fe58b9b51c98b4ffa35b6431a624c51986b4679d20aed98b632bb8bb96a2"}},{"ruleId":"D2","level":"warning","message":{"text":"DominatedUses.replaceWith (cognitive 19): DominatedUses.replaceWith has cognitive complexity 19 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 4 (9 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1583}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b72e97544c841c55044e578c12dfd15f680e1df86b46d6ecb84308f62f3bb2"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaDeadCodeEliminator.simplifyPhi (cognitive 19): SsaDeadCodeEliminator.simplifyPhi has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 3 (4 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3286}}}],"partialFingerprints":{"codehealthFindingId/v1":"de7837af1f8faa26d4196381e7120a18ef72b7dc1d3ad3faa8598a986419b8dc"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordUseValueConverter.findInstanceValue (cognitive 19): RecordUseValueConverter.findInstanceValue has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (18 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/recorded_use.dart"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fd3dfa49bf0887744643e5c10d5f87b6034a43beb26963254b906b81e478766"}},{"ruleId":"D2","level":"warning","message":{"text":"IsolateManager._handlePause (cognitive 19): IsolateManager._handlePause has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"66844033ca1dbca8512f36f8f7666e331978e57e6a90083ae5c2dca87162c0a8"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler.emitLibrary (cognitive 19): LibraryCompiler.emitLibrary has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12 (13 pts), ternaries 2 (4 pts), boolean chains 1, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"534666d5b1e703a9b5563e39940b34d9423751ccb93bf1cdf4c78d389213e6d7"}},{"ruleId":"D2","level":"warning","message":{"text":"Locations._locationsForModule (cognitive 19): Locations._locationsForModule has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (11 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/location.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fbf06ab50ff2bed61c629b1e2760bac6e3283312bca1bf3a686ab547c9dfdd1"}},{"ruleId":"D2","level":"warning","message":{"text":"DevHandler._startLocalDebugService (cognitive 19): DevHandler._startLocalDebugService has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/handlers/dev_handler.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6adc98fa3001fdfbaafa8406a3b1fa9474b4052fd8e6f953fa53f1edcb20e7e"}},{"ruleId":"D2","level":"warning","message":{"text":"DevHandler._handleMessage (cognitive 19): DevHandler._handleMessage has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14 (16 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/handlers/dev_handler.dart"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"f88726abce583ce7c21de7fc4cdf66cc36563e078de1891d242f8f51dd980b41"}},{"ruleId":"D2","level":"warning","message":{"text":"DwdsInjector.middleware (cognitive 19): DwdsInjector.middleware has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10 (19 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/handlers/injector.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"07dca719c2bdf09c86320413eb9ba9e637a5b3eb58921402d58d0ed885ffb431"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorDeclarationMixin.addSuperParameterDefaultValueCloners (cognitive 19): _ConstructorDeclarationMixin.addSuperParameterDefaultValueCloners has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dcc7c069d5b45e0c3ff2d43c0e0c0f8d442bb5d52b90e5a34d1c38d90945038"}},{"ruleId":"D2","level":"warning","message":{"text":"FactoryEncoding.checkRedirectingFactory (cognitive 19): FactoryEncoding.checkRedirectingFactory has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (10 pts), boolean chains 4, ternaries 3 (4 pts), loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"527b520f9c9764b136c7e97b1f7288ed57ad743ded0226ba1f31ad5b1c70ddc4"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.handleType (cognitive 19): BodyBuilderImpl.handleType has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (10 pts), ternaries 3 (7 pts), match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":8713}}}],"partialFingerprints":{"codehealthFindingId/v1":"09e601081694acfeae7b590165f36b39788241566dd5e9e454991b93b0257179"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementConstantEvaluator.visitForStatement (cognitive 19): StatementConstantEvaluator.visitForStatement has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 3 (4 pts), boolean chains 2, ternaries 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":6259}}}],"partialFingerprints":{"codehealthFindingId/v1":"e91cea0a05cc7b63b2ae3a993133ea287a85a64eed282acd72309abc6f60b083"}},{"ruleId":"D2","level":"warning","message":{"text":"DartScopeBuilder2.addFound (cognitive 19): DartScopeBuilder2.addFound has cognitive complexity 19 (threshold 15). Drivers by points: if/else 3 (8 pts), boolean chains 7, loops 3 (4 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd3a11ca001aedbe849d7a46c449f757473b492feb1a5897538823d50860c1a4"}},{"ruleId":"D2","level":"warning","message":{"text":"CfeSealedClassOperations.getSubclassAsInstanceOf (cognitive 19): CfeSealedClassOperations.getSubclassAsInstanceOf has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 2 (5 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf5bdbc28edc26f48b9ffd71f1d5b945b9dda3c473d2dce4e07f9f469fe2df19"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassMembersNodeBuilder.inferFieldType (cognitive 19): ClassMembersNodeBuilder.inferFieldType has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f3766c4d1b7c2480bda83bb65648d33b231591cfac82f12e6e454e53aab7d9"}},{"ruleId":"D2","level":"warning","message":{"text":"BuilderFactory._createDeclarationFromFragment (cognitive 19): BuilderFactory._createDeclarationFromFragment has cognitive complexity 19 (threshold 15). Drivers by points: ternaries 4 (8 pts), boolean chains 5, if/else 3 (5 pts), match/switch 1 (nesting depth added 6). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9a10805b554f025925335cf46ed1a45c811688ea2b057e2585c4e3efa2d86c"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.endConstructor (cognitive 19): OutlineBuilder.endConstructor has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 6 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2591}}}],"partialFingerprints":{"codehealthFindingId/v1":"649c17a15a80e4b351b305206c8b52b0f9bd203112c7d4940036dd89aa828540"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceEnumBuilder._createSynthesizedMembers (cognitive 19): SourceEnumBuilder._createSynthesizedMembers has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 3 (5 pts), boolean chains 4, ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c49204e7675b763736d6e1f1d01eaa242fc6688ab3cb25c9988a6b6b79057e8"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLibraryBuilder.addImportsToScope (cognitive 19): SourceLibraryBuilder.addImportsToScope has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 1 (4 pts), loops 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"a52e66cacd3849335468135dd3d32e37b4b449f497f5875c739285506949ec45"}},{"ruleId":"D2","level":"warning","message":{"text":"_SyncContext._checkValidReturn (cognitive 19): _SyncContext._checkValidReturn has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 8 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"d36286bdf796f18e4f9a1a8b80a5e6a9a3b3e2bf450636892b550d5f782146de"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl._buildRedirectingFactoryTargetInvocation (cognitive 19): InferenceVisitorImpl._buildRedirectingFactoryTargetInvocation has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11 (17 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":2742}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c82e92f88b79b1b5d236b690406ad8646271e452de613d0d01f7de488a563bc"}},{"ruleId":"D2","level":"warning","message":{"text":"_Processor._premarkTopLevel (cognitive 19): _Processor._premarkTopLevel has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 2 (4 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a20920ea74df411505c468572e995bb9e9ed15d958f2b6fe8b2f6f34e14df6b"}},{"ruleId":"D2","level":"warning","message":{"text":"_Processor.findInScope (cognitive 19): _Processor.findInScope has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (18 pts), loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc6268be4509c81872f095d90d471e4c44fd1e2e79039bb865d382705fb71766"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.out (cognitive 19): Printer.out has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"caf7a670a91d3f1dc211431984bc88f23ad37fdd5911ea8c4668256d46b35bc6"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordType.equals (cognitive 19): RecordType.equals has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 2 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2611}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e652a1c62ca3606300a864c840bd5416ef7c6fa11118cdb7e914e16f226a50b"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitTypeParameterList (cognitive 19): _Visitor.visitTypeParameterList has cognitive complexity 19 (threshold 15). Drivers by points: if/else 3 (9 pts), boolean chains 7, loops 2 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_types_as_parameter_names.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"10507e8551b1a9fe7df41b177821be84a21e493fbd7fb210ae53d03802b8f714"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitCompilationUnit (cognitive 19): _Visitor.visitCompilationUnit has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 2, loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/lines_longer_than_80_chars.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6aa2f6a6a14c8b6be9a2c34ea730500993321be8face0859cb3f09129e576a"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._checkMethod (cognitive 19): _Visitor._checkMethod has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 8 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/strict_top_level_inference.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"f885df5b2a5c3f7776618cb44ba3c94da72a6281e8b9da390b83a671623404fb"}},{"ruleId":"D2","level":"warning","message":{"text":"SearchBarElement.render (cognitive 19): SearchBarElement.render has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9 (18 pts), ternaries 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/containers/search_bar.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d041892eacc5bec7104e6d019649f1a33c38b74755cdfb9323e968b673870ce"}},{"ruleId":"D2","level":"warning","message":{"text":"ProtobufHandler.beforeSummaryCreation (cognitive 19): ProtobufHandler.beforeSummaryCreation has cognitive complexity 19 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/protobuf_handler.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab101979a01ad4e0f0237341f32566bc204da7aacdd40052ce5b4c10af2aeb7a"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassInfo._initDispatchTargets (cognitive 19): ClassInfo._initDispatchTargets has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 3, loops 2, ternaries 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/rta.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"f623114d331907d106851b2cc0a0191c5017c08191511d778291341e56cc53aa"}},{"ruleId":"D2","level":"warning","message":{"text":"TFADevirtualization.getDirectCall (cognitive 19): TFADevirtualization.getDirectCall has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (18 pts), boolean chains 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd0d52ec63d8e2629cb862258dc9183b7fc73d87a3d01f978aecdac6047142ad"}},{"ruleId":"D2","level":"warning","message":{"text":"Prototype_HtmlEventGenerator._writeEventGetters (cognitive 19): Prototype_HtmlEventGenerator._writeEventGetters has cognitive complexity 19 (threshold 15). Drivers by points: ternaries 4 (11 pts), if/else 2 (5 pts), loops 2 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/prototype_htmleventgenerator.py"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6f308c930868b7e50aff9f314e0a39be2e6f2d65219cb13a1f9c91c028c2faa"}},{"ruleId":"D2","level":"warning","message":{"text":"used_names.analyze (cognitive 19): used_names.analyze has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 3 (6 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/used_names/used_names.js"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd69afc7e25a0d10a2532921e6da8fd4842780a8e4227eaf1fa190aef48fc41"}},{"ruleId":"D2","level":"warning","message":{"text":"graphexplorer.Table.refreshRows (cognitive 19): graphexplorer.Table.refreshRows has cognitive complexity 19 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 4 (7 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1674}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d48f29b2d199fed6ccbad3563ee8b6a7af4645c84dfecc55a7cc6c5bb59fdfa"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeSingleLineString (cognitive 18): AbstractScanner.tokenizeSingleLineString has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 3, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1852}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0fa10e2682cc20bf04f4cf44f8149ac59a7b7c20628a945bd2ab0cab27661cc"}},{"ruleId":"D2","level":"warning","message":{"text":"RelevanceDataCollector._argumentListContext (cognitive 18): RelevanceDataCollector._argumentListContext has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (15 pts), boolean chains 3 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2170}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c9f8035f36de4dabf36243919a8f6c74f473bb3f1eedbb19cad37c6d974f4f"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpectedCompletionsVisitor.safelyRecordEntity (cognitive 18): ExpectedCompletionsVisitor.safelyRecordEntity has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 5 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/visitors.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd93f53f6259d49e9ee3e77d123b3b84a84469785478ec16109fa2d67a13d46"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisTester._printStats (cognitive 18): AnalysisTester._printStats has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 3 (6 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/performance/utilities/analysis_tester.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1b9cc188f373abf1d27ef01261d434e4e56986714f941c65d1abaf44170a74"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorData.failureMessage (cognitive 18): ErrorData.failureMessage has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (10 pts), loops 4 (8 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/presubmit/verify_error_fix_status.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"88be43afafba5d8e5a2a73a66fcbd4cd964d316b7cd5f26d307787acb5980aac"}},{"ruleId":"D2","level":"warning","message":{"text":"AstNodeImplGenerator._generateIsInValueExpressionSlot (cognitive 18): AstNodeImplGenerator._generateIsInValueExpressionSlot has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (10 pts), match/switch 4 (8 pts) (nesting depth added 5). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"479a2e0218ba7ada42c1ac9ef72c4ace5ae992cad38204787198bdcf3a9ee150"}},{"ruleId":"D2","level":"warning","message":{"text":"StringSearchUtilGenerator._findMethods (cognitive 18): StringSearchUtilGenerator._findMethods has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (14 pts), loops 2 (4 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/string_search_util_generator.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"37131d95d50c0ab0c988ea0af0aabd790a50a0c864d5d0b101aa3a0cff223adf"}},{"ruleId":"D2","level":"warning","message":{"text":"StringSearchUtilGenerator._getAnnotationData (cognitive 18): StringSearchUtilGenerator._getAnnotationData has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/string_search_util_generator.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"e61ebd50e35e71ad9a3f43c79433d73889c3ed63121e47239d1243a1c0cb3cef"}},{"ruleId":"D2","level":"warning","message":{"text":"_FunctionTypeHandle.toString (cognitive 18): _FunctionTypeHandle.toString has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/object_table.dart"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"4227a0b4e9aac418a1d3d487b5c739ed28da32470e3da187b474df881d5af179"}},{"ruleId":"D2","level":"warning","message":{"text":"Closures._buildContexts (cognitive 18): Closures._buildContexts has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 4 (6 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/closures.dart"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"fadf319ad1450c5531e0a1678f12dfa1aa4d54c1332c35f9bf03ce90b3204fec"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantCreator.visitInstanceConstant (cognitive 18): ConstantCreator.visitInstanceConstant has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (9 pts), boolean chains 5, loops 3 (4 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1c051142fceaefa8e6ecc187e98a9bc888d11122283e709a56008cba9f53696"}},{"ruleId":"D2","level":"warning","message":{"text":"DynamicDispatchTable.build (cognitive 18): DynamicDispatchTable.build has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 5 (6 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dynamic_dispatch_table.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92e30d40acae84705b4a7dd6cbae20b17faa89b000eabdaae0f3b7303c7a7e8"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionCollector.getFunctionName (cognitive 18): FunctionCollector.getFunctionName has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (14 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/functions.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f387536cefe6375a62f833c02e5c8a35e7f3bab44f15727d1843a78d897051c"}},{"ruleId":"D2","level":"warning","message":{"text":"WasmTarget.performModularTransformationsOnLibraries (cognitive 18): WasmTarget.performModularTransformationsOnLibraries has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/target.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"5042723ff6cb93cc5a4cf43baa64249dcdb930a468ad91cbe382aab5c3105474"}},{"ruleId":"D2","level":"warning","message":{"text":"Types.isTypeConstant (cognitive 18): Types.isTypeConstant has cognitive complexity 18 (threshold 15). Drivers by points: boolean chains 18. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8202529dd04a4a9c15136cad15995b66fb9f722791175e010b59be3966bca05"}},{"ruleId":"D2","level":"warning","message":{"text":"C.m (cognitive 18): C.m has cognitive complexity 18 (threshold 15). Drivers by points: loops 18. To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/for_in_without_declaration.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"30a630a9b70cff71ef9a20cad99052e9a28ec4415948835bfe621baecd2da4e5"}},{"ruleId":"D2","level":"warning","message":{"text":"AstClass.kind (cognitive 18): AstClass.kind has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (18 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/ast_model.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f61decd98871beb93c72df2c6e9d6479bbaa26b6ad986ea32615fcc1ec9278b"}},{"ruleId":"D2","level":"warning","message":{"text":"_VerifyingVisitor.visitField (cognitive 18): _VerifyingVisitor.visitField has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 5, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ca70de9db02cd74a6a3cf27b2e802a17efc1f07cbae67355288ef218038ffd"}},{"ruleId":"D2","level":"warning","message":{"text":"_SnapshotGraph._readObjects (cognitive 18): _SnapshotGraph._readObjects has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 2 (3 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":969}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfcdf7382f530429fbc885a3af60ede523b17b5421cbd90165341b493c112662"}},{"ruleId":"D2","level":"warning","message":{"text":"Utils.formatDuration (cognitive 18): Utils.formatDuration has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (16 pts), match/switch 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/utils.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"407dab3867505be83c69cb3e32761c86314250df92158b4c8cd608b8d9609898"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConnectionTarget.connect (cognitive 18): _ConnectionTarget.connect has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (13 pts), boolean chains 3, ternaries 1 (2 pts) (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":2653}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b3bbee477d29559069c3b1111e871ba79ee3e79a2f41d82500d0c46f512ff0"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpParser._onDone (cognitive 18): _HttpParser._onDone has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (11 pts), boolean chains 7 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"04c680a9a35fedd8faa9efc6b08e0f00bcc8624a46cbb534b2191b67048af0fe"}},{"ruleId":"D2","level":"warning","message":{"text":"_WebSocketProtocolTransformer._controlFrameEnd (cognitive 18): _WebSocketProtocolTransformer._controlFrameEnd has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (14 pts), boolean chains 3, match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"815dc874789c423533bd6915b63726d5b6b4454fef27533383b1506b67faee18"}},{"ruleId":"D2","level":"warning","message":{"text":"CustomHashMap._set (cognitive 18): CustomHashMap._set has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 1 (2 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"588328ec7d8ad5146799e45b3d51a1aaa9c3a389a7a47e18af8f7709ffe1c27b"}},{"ruleId":"D2","level":"warning","message":{"text":"JsonMLFormatter.body (cognitive 18): JsonMLFormatter.body has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (13 pts), ternaries 1 (3 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fbb4efa91310049405f96cb38fa15e796dfba39a135cf91277e0b0a5c529410"}},{"ruleId":"D2","level":"warning","message":{"text":"LinkedSet.remove (cognitive 18): LinkedSet.remove has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"afa291830d47c6bd6036b582a60657ffaeed70dadb77edf2163813aaf6aae051"}},{"ruleId":"D2","level":"warning","message":{"text":"Isolate.spawnUri (cognitive 18): Isolate.spawnUri has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 2, error handling 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/isolate_patch.dart"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fcaa3c7af217c702f78d542b80725279598d548a884c84f11fa85fff0e12400"}},{"ruleId":"D2","level":"warning","message":{"text":"int._parse (cognitive 18): int._parse has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 1 (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/integers_patch.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"00c14e9a9a98662c1921895da36042935ee3f686583c24e83762903d3af166e5"}},{"ruleId":"D2","level":"warning","message":{"text":"int._parseBlock (cognitive 18): int._parseBlock has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/integers_patch.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfa0e6701035018582ee913c13063918de03ebb7875bef723bd2289855cbe282"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._uriEncode (cognitive 18): _Uri._uriEncode has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (9 pts), boolean chains 5, loops 3 (4 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/uri_encode_patch.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"639ed0e0d5e6db27d03ca92e313f2521859c7f2379697babc2eb2e0910e3a229"}},{"ruleId":"D2","level":"warning","message":{"text":"_ChunkedJsonParser.parseStringEscape (cognitive 18): _ChunkedJsonParser.parseStringEscape has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1377}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e76b255f7e727492e1462e6b024789dfe721f55908f70970035331cb068c64"}},{"ruleId":"D2","level":"warning","message":{"text":"int._parse (cognitive 18): int._parse has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (17 pts), boolean chains 1 (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/int_patch.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c24d5a03ec00179077dee1371a658ec72cc3615f18531f43023682bbe8b9577"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeGenerator.visitParallelMove (cognitive 18): CodeGenerator.visitParallelMove has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 3, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/code_generator.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfd50376b0f17bf9933f440491d23d936d10e16e0822592e9f7f4d5cb7b4b82e"}},{"ruleId":"D2","level":"warning","message":{"text":"Object.hash (cognitive 18): Object.hash has cognitive complexity 18 (threshold 15). Drivers by points: if/else 18. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/object.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"575cef0fedbdadbfbd2797c1b507b3bcf8e56c2ea1549fd5b7a601eb55f78263"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiTransformer.convertDartTypeToNativeType (cognitive 18): FfiTransformer.convertDartTypeToNativeType has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/common.dart"},"region":{"startLine":1256}}}],"partialFingerprints":{"codehealthFindingId/v1":"11376ff04b88acfcacca640642d7614e036d227d6e7a17e3704291da2280b3b1"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiDefinitionTransformer.manualVisitInTopologicalOrder (cognitive 18): _FfiDefinitionTransformer.manualVisitInTopologicalOrder has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"dac08e9a7401e44465f8ab2c5da2d4b31d14bf7d28e25b95e854b21b223b89b1"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyWitness.witnessToDart (cognitive 18): PropertyWitness.witnessToDart has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/witness.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b709503092f36cace86b056d2655a77a2ce40522e683382db77c2faa8143f9"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseDirectives (cognitive 18): Parser.parseDirectives has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 2, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd094274bac625715d51023c17ec22a783918c04f810a17f2722f0d0ab48e7f6"}},{"ruleId":"D2","level":"warning","message":{"text":"ComplexTypeInfo.computeRest (cognitive 18): ComplexTypeInfo.computeRest has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (15 pts), boolean chains 2, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f35d4611400e45acb1c4e13d91bab9f08571d0f0207257b8bded57c30d7259d"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeSingleLineString (cognitive 18): AbstractScanner.tokenizeSingleLineString has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 3, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2198}}}],"partialFingerprints":{"codehealthFindingId/v1":"790b634ccff68eb235d13657c49a3c6a5b1a81bfb0b27140ede37d0c524d8307"}},{"ruleId":"D2","level":"warning","message":{"text":"CheckNameResponse._addElementDeclaration (cognitive 18): CheckNameResponse._addElementDeclaration has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (17 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/rename.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ddb5a39618c9c61496cb444277430bef653e9f67ead5985af5c0e919fae8444"}},{"ruleId":"D2","level":"warning","message":{"text":"DartUnitHighlightsComputer._isCallMethod (cognitive 18): DartUnitHighlightsComputer._isCallMethod has cognitive complexity 18 (threshold 15). Drivers by points: boolean chains 16, match/switch 2. The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8acb855feccf57789d2474785e3eda4bc2293d48c4e66b8599fffae86ac5f33"}},{"ruleId":"D2","level":"warning","message":{"text":"DartUnitOutlineComputer.compute (cognitive 18): DartUnitOutlineComputer.compute has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (11 pts), loops 3 (7 pts) (nesting depth added 5). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_outline.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"505a80ec5a9480ee07e620c8d67ce3f7ef83f54c0aba1cf6e1fe421a520d9631"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextManagerImpl._analyzeAnalysisOptionsYamlFiles (cognitive 18): ContextManagerImpl._analyzeAnalysisOptionsYamlFiles has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (7 pts), loops 3 (6 pts), ternaries 1 (3 pts), error handling 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e19b866dfb866842688abe384cc5dcaa1303c68122b09774fb9dd397c3f078"}},{"ruleId":"D2","level":"warning","message":{"text":"MigrateHandler._validateMigrationTargets (cognitive 18): MigrateHandler._validateMigrationTargets has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (15 pts), error handling 1 (2 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/handler_migrate.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"751ea084960b0831c16b8da66a39e1c0f2576bacee73d317d887845bac452090"}},{"ruleId":"D2","level":"warning","message":{"text":"SummaryWriter.summarize (cognitive 18): SummaryWriter.summarize has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 2 (4 pts), loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a1ab0cb6766cec025bcf4556fdb45528a5ac6db8be9689db8ac6f0e0840007"}},{"ruleId":"D2","level":"warning","message":{"text":"AddKeyToConstructors._updateSuperInBody (cognitive 18): AddKeyToConstructors._updateSuperInBody has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 1, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"9868c265da6e3a4f4e2284d09dee6f7bbfe5e29ab3dfd3bd4f2f75a41cafc313"}},{"ruleId":"D2","level":"warning","message":{"text":"ChangeTo._proposeField (cognitive 18): ChangeTo._proposeField has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (9 pts), boolean chains 5, loops 2 (4 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/change_to.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"f40dc8dd1230c7983f79088407182774c66cea2e7ae612d07a50dab063a61361"}},{"ruleId":"D2","level":"warning","message":{"text":"ChangeTo._proposeFunction (cognitive 18): ChangeTo._proposeFunction has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 2 (5 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/change_to.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"d32ef5165042052b35804ae81a89eac5dc98ab8f187225ade04f3bc30a77fd12"}},{"ruleId":"D2","level":"warning","message":{"text":"_EnumDescription._indexFieldData (cognitive 18): _EnumDescription._indexFieldData has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 2, loops 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"a678028a8b575f15de676f75916f51435c8c9e2c00c9cd1981fa6132548f5baf"}},{"ruleId":"D2","level":"warning","message":{"text":"EncapsulateField.compute (cognitive 18): EncapsulateField.compute has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 2, loops 1 (2 pts), match/switch 1, ternaries 1 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"4114a24a50991d8985fb31c08f94c92ed5d964a5fe578d7774eb7b36858fa22a"}},{"ruleId":"D2","level":"warning","message":{"text":"FlutterConvertToStatelessWidget._isDefaultOverride (cognitive 18): FlutterConvertToStatelessWidget._isDefaultOverride has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e3811381085f6449335597ac9b2b9eea5bc8c066e9fe06f8bfab1749f2c4ce4"}},{"ruleId":"D2","level":"warning","message":{"text":"FlutterWrap._wrapMultipleWidgets (cognitive 18): FlutterWrap._wrapMultipleWidgets has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f1108bcf3a632b3b1e353710b92450d0fd940860c9e65cf2443cd092f581d17"}},{"ruleId":"D2","level":"warning","message":{"text":"PubspecFixGenerator.computeFixes (cognitive 18): PubspecFixGenerator.computeFixes has cognitive complexity 18 (threshold 15). Drivers by points: if/else 18. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"b963dc580caf2b5ec5f9347eecf659754891c4e5e90fbbf718a7a948fe6698e9"}},{"ruleId":"D2","level":"warning","message":{"text":"PubspecFixGenerator._sortPubDependencies (cognitive 18): PubspecFixGenerator._sortPubDependencies has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (12 pts), loops 4, boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"01ae9a8eba07e51822a125c1b723106404ce1da736e0a0cf75d9d62db44e86f2"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportOrganizer.getLeadingComment (cognitive 18): ImportOrganizer.getLeadingComment has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (9 pts), boolean chains 5, loops 2, ternaries 1 (2 pts) (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/organize_imports.dart"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"d75927d13367f9bfd5d3310cf00a0ea16f06adb01aa087ef8bf5e6174e0dee00"}},{"ruleId":"D2","level":"warning","message":{"text":"_WidgetDescriptionComputer._addContainerProperty (cognitive 18): _WidgetDescriptionComputer._addContainerProperty has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 6 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab29f394daa822dd0f5b32967002d1ca96e81b50bb395186757c36fe427d879"}},{"ruleId":"D2","level":"warning","message":{"text":"_ReferenceProcessor._canInlineBody (cognitive 18): _ReferenceProcessor._canInlineBody has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"62290485788a6d09ae0cc4bb02f43e8e10efce483192268c301075329fc334fa"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameClassMemberRefactoringImpl._updateReferences (cognitive 18): RenameClassMemberRefactoringImpl._updateReferences has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 6, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"09ca242def7e37bfeccafcd2f5e8f8329b3cc51bf26d89f3941ff48efe20053e"}},{"ruleId":"D2","level":"warning","message":{"text":"_RenameClassMemberValidator._getLocalShadowingElement (cognitive 18): _RenameClassMemberValidator._getLocalShadowingElement has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d258a1ca39f5dca9005b33bfce8e884ce38e0b4965382ec804f02a14ccda919"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginsPage.generateContent (cognitive 18): PluginsPage.generateContent has cognitive complexity 18 (threshold 15). Drivers by points: loops 5 (11 pts), if/else 4 (7 pts) (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/plugins_page.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a86bd639c3ad4676fbbdf804940bb0ff8fe10e4907aaaac71556e6ba31552c5"}},{"ruleId":"D2","level":"warning","message":{"text":"ServerBase.outputProcessor (cognitive 18): ServerBase.outputProcessor has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (17 pts), error handling 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_client/lib/src/server_base.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"3974a9787be01aa570e636a5e90174353a8c89edf6b01800aa310ff75aedda7a"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisDriver.performWork (cognitive 18): AnalysisDriver.performWork has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13 (15 pts), error handling 1 (2 pts), loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":1182}}}],"partialFingerprints":{"codehealthFindingId/v1":"49c917d0fe7fe9219269a7e9201731e79f2e152aeb8a4b5bac5d9b98a5f0c7a1"}},{"ruleId":"D2","level":"warning","message":{"text":"_IndexContributor.recordRelationOffset (cognitive 18): _IndexContributor.recordRelationOffset has cognitive complexity 18 (threshold 15). Drivers by points: boolean chains 11, if/else 6 (7 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"002166e47cc83f10ee1259df74a8a4dad916398a7366191ed878bbfa5aafdeb5"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryAnalyzer._reportImportDirectiveErrors (cognitive 18): LibraryAnalyzer._reportImportDirectiveErrors has cognitive complexity 18 (threshold 15). Drivers by points: ternaries 3 (9 pts), if/else 7 (8 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"2780ffbb82ba54bf4dbba2b8da0540977874560063b4dfdf2acc90847e9a9943"}},{"ruleId":"D2","level":"warning","message":{"text":"_FindLibraryDeclarations._addDeclaration (cognitive 18): _FindLibraryDeclarations._addDeclaration has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13 (15 pts), ternaries 1 (2 pts), match/switch 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":1548}}}],"partialFingerprints":{"codehealthFindingId/v1":"9817f0fbadd4c281105c32c7f6be18a31f0e6fd1d42d2772850b3f4e7e08c1f3"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionImpl.computeConstantValue (cognitive 18): ExpressionImpl.computeConstantValue has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (12 pts), ternaries 3 (5 pts), match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17991}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0688538390f57021d0c2d1fdacec43eea32f382ed6872481c2cdf0368d8dcae"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleIdentifierImpl.inGetterContext (cognitive 18): SimpleIdentifierImpl.inGetterContext has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 4 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":51453}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35bddb06ddb99199594a936f45b2b940abf35f844087851768a4b0231c5f6b0"}},{"ruleId":"D2","level":"warning","message":{"text":"StringLexemeHelper.StringLexemeHelper (cognitive 18): StringLexemeHelper.StringLexemeHelper has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 6 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52415}}}],"partialFingerprints":{"codehealthFindingId/v1":"188ab6a129361f14187b30477bd6da3302f8afc479cca417fa699e8eb7cd80cf"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.visitPrefixExpression (cognitive 18): ConstantEvaluator.visitPrefixExpression has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (17 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72dea52999749fab785a2c2924e87cadc4fe47d766e56e66f012e0a8208258a"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier.visitSetOrMapLiteral (cognitive 18): ConstantVerifier.visitSetOrMapLiteral has cognitive complexity 18 (threshold 15). Drivers by points: loops 4 (12 pts), if/else 4 (6 pts) (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff7a58098919d592f2176aba03d9ec4b0a6877066e26989b2acebaf1330bdf40"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier.visitVariableDeclaration (cognitive 18): ConstantVerifier.visitVariableDeclaration has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4f622579f8f5920f3a6699255f920b2b052ff4d3b0f1b13fd4c837bed1feba"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorInvocationEvaluator._followConstantRedirectionChain (cognitive 18): _ConstructorInvocationEvaluator._followConstantRedirectionChain has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (16 pts), loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3838}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3d32a4308a3a3e3ae9e5133d07b9332512f5f14be9d7eae2e03c64cdf76a12c"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystemImpl.instantiateTypeFormalsToBounds (cognitive 18): TypeSystemImpl.instantiateTypeFormalsToBounds has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 5 (8 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e63e055c7233577c7ae59e23b2d63dd94ff557817685b26994dfa324d9b273"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystemImpl.isMoreTop (cognitive 18): TypeSystemImpl.isMoreTop has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10, boolean chains 8. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e2b98ff2c6c90197e512d159d226949824c1db69b195602756f5b85c73e5844"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeSystemImpl._isNonNullable (cognitive 18): TypeSystemImpl._isNonNullable has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 5 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1866}}}],"partialFingerprints":{"codehealthFindingId/v1":"06f492de3628ac25c7c6c2f58e1676131ace2d38bed8c0fe61d223d7015981fc"}},{"ruleId":"D2","level":"warning","message":{"text":"AssignmentExpressionResolver.resolveCompound (cognitive 18): AssignmentExpressionResolver.resolveCompound has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 2, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"47790a64f8accff356a2d85e01ecbcdfb75da0c26b17334eddcdb8cf75c518d0"}},{"ruleId":"D2","level":"warning","message":{"text":"AstRewriter.prefixedIdentifier (cognitive 18): AstRewriter.prefixedIdentifier has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (13 pts), match/switch 1 (3 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"713dad4a040f71167725e2d5e9784a8c4f369eb80b4bb19eb67d1c0e3ea9618e"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyElementResolver.resolveCascadeProperty (cognitive 18): PropertyElementResolver.resolveCascadeProperty has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (7 pts), ternaries 4 (6 pts), match/switch 2 (3 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"32bee02fe7bab32ad57e04ec2debf717394a10ef1364edd0c5fdd7c392b4b421"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolutionVisitor._resolveType (cognitive 18): ResolutionVisitor._resolveType has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (11 pts), ternaries 1 (3 pts), boolean chains 2, match/switch 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":1251}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3a3886a9a4c5cf3e8d08dc5a2845a17c54190859d47699e486ba43fe30c565"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleIdentifierResolver._resolve1 (cognitive 18): SimpleIdentifierResolver._resolve1 has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 4 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"07ac772880f2eefa3cbb4d601ee1f17ddb262cb09a75c453b6eed1086c32dd3e"}},{"ruleId":"D2","level":"warning","message":{"text":"MustCallSuperVerifier._findOverriddenMemberWithMustCallSuper (cognitive 18): MustCallSuperVerifier._findOverriddenMemberWithMustCallSuper has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (10 pts), loops 3 (4 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/must_call_super_verifier.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"72b42a971cc661ecf7676eae9e281f9f3f291150d6d4fe2d6d4f36576459a5cd"}},{"ruleId":"D2","level":"warning","message":{"text":"GatherUsedLocalElementsVisitor._matchParameters (cognitive 18): GatherUsedLocalElementsVisitor._matchParameters has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d1bd4530e16f32b69bcbbe212ad89ad42f39f987f8c3be6171db33f38ee85f"}},{"ruleId":"D2","level":"warning","message":{"text":"AstBuilder.handleIdentifier (cognitive 18): AstBuilder.handleIdentifier has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 5 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":4569}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46a9f3dedc8a4415497a6cb8cda334837aeef3dff0eb8e41f2339038134b228"}},{"ruleId":"D2","level":"warning","message":{"text":"AstBuilder.handleRecoverDeclarationHeader (cognitive 18): AstBuilder.handleRecoverDeclarationHeader has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (17 pts), match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5528}}}],"partialFingerprints":{"codehealthFindingId/v1":"525c433e7855bba89ef19f6737e21f9febb39cc96e8db83726983576c6174fa2"}},{"ruleId":"D2","level":"warning","message":{"text":"AstBuilder._buildConstructorDeclaration (cognitive 18): AstBuilder._buildConstructorDeclaration has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 1 (2 pts), match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":6039}}}],"partialFingerprints":{"codehealthFindingId/v1":"908499a2d44dc75b27529175fa02b01317f76d0f633c168b56b697c7be039de4"}},{"ruleId":"D2","level":"warning","message":{"text":"DocCommentBuilder._parseDocComment (cognitive 18): DocCommentBuilder._parseDocComment has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 2, loops 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"9214add30e72485ff941c67c2d5eb972c28d10891a3fcff5a9a1275deecaca01"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryManifestBuilder._getInterfaceElementMemberId (cognitive 18): LibraryManifestBuilder._getInterfaceElementMemberId has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (16 pts), match/switch 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1562}}}],"partialFingerprints":{"codehealthFindingId/v1":"5da4127732fd1b9cc072960734e96df84beb6912229c69ef3bf55091e1d75abc"}},{"ruleId":"D2","level":"warning","message":{"text":"NonAssignabilityReporterForArgument.createDiagnostic (cognitive 18): NonAssignabilityReporterForArgument.createDiagnostic has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (11 pts), boolean chains 4, loops 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_detection_helpers.dart"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"59991405daeb4cc6039b9de76962fa9e46dd66b37ad6e81422d4aa3f15a566ba"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForConflictingClassTypeVariableErrorCodes (cognitive 18): ErrorVerifier._checkForConflictingClassTypeVariableErrorCodes has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (8 pts), ternaries 2 (6 pts), boolean chains 3, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":4245}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fde638959a9a94495674421549431928d67911de072df6575d3faa0f659215a"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._primitiveNativeType (cognitive 18): FfiVerifier._primitiveNativeType has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (18 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1225}}}],"partialFingerprints":{"codehealthFindingId/v1":"464ae2f2dad467c4261551a8ed4e4e1cc02a173f42c33f5a371dce051e8bfe6a"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateFromFunction (cognitive 18): FfiVerifier._validateFromFunction has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 4 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1914}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b24331d3cf9bfd367b0fddcdbd043cd32cb06520fc2f52a82ffa2ec53e7b275"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor.visitMethodInvocation (cognitive 18): ResolverVisitor.visitMethodInvocation has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":3973}}}],"partialFingerprints":{"codehealthFindingId/v1":"51229fb9c21a48f4c6dfd642e3f43eae64e7fefeab0ac2bb099a2635694783b8"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolverVisitor._resolveParsedDotShorthandInvocation (cognitive 18): ResolverVisitor._resolveParsedDotShorthandInvocation has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":5674}}}],"partialFingerprints":{"codehealthFindingId/v1":"065a4361520d9538f19e80eb69824ce8a017fbec6ff0a3720bb10673870b4fbc"}},{"ruleId":"D2","level":"warning","message":{"text":"SdkLibrariesReader_LibraryBuilder.visitMapLiteralEntry (cognitive 18): SdkLibrariesReader_LibraryBuilder.visitMapLiteralEntry has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 1 (2 pts) (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/sdk.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"31fb0ce4fcca21ca7876606b407dc2910c622b0c692a4f2201806b60ec0e5605"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementBuilder._linkFormalParameters (cognitive 18): ElementBuilder._linkFormalParameters has cognitive complexity 18 (threshold 15). Drivers by points: loops 9 (11 pts), if/else 5 (6 pts), match/switch 1 (nesting depth added 3). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"36f753ba1d2aff14291e296390bfcd2ce35733e1487edf5b1ed4a70448341f49"}},{"ruleId":"D2","level":"warning","message":{"text":"EnclosingTypeParameterReferenceFlag.perform (cognitive 18): EnclosingTypeParameterReferenceFlag.perform has cognitive complexity 18 (threshold 15). Drivers by points: loops 4 (11 pts), if/else 1 (4 pts), match/switch 1 (3 pts) (nesting depth added 12). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/enclosing_type_parameters_flag.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"e44995531ae8f576be2f22d17494ee4a1b2b2649847529b0975e7948d62c1767"}},{"ruleId":"D2","level":"warning","message":{"text":"TypesBuilder._declaration (cognitive 18): TypesBuilder._declaration has cognitive complexity 18 (threshold 15). Drivers by points: if/else 18. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/types_builder.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"c61fdee27d5620a7a1fd4fd5f9a1fc2e8ddda1459bcc77956a5548bcfda8affe"}},{"ruleId":"D2","level":"warning","message":{"text":"FuzzyMatcher.score (cognitive 18): FuzzyMatcher.score has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (17 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/utilities/fuzzy_matcher.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"d37974696d92b91ae7440ab483f7fb4605ee92ed48db4559c0c43cc433e3fa94"}},{"ruleId":"D2","level":"warning","message":{"text":"_InsertionPreparer.insertionLocation (cognitive 18): _InsertionPreparer.insertionLocation has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 1, ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":3632}}}],"partialFingerprints":{"codehealthFindingId/v1":"275ae8d735d361a094a32e8acdea391900fe0b23bd3ac18ea9199075631f2e10"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionTarget._computeDroppedToken (cognitive 18): CompletionTarget._computeDroppedToken has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 4, loops 2 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa635d6e8905998d033881717d67d58a65799ac8e6d4da46c68f9dea2e5b77ab"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionTarget._getContainingCommentToken (cognitive 18): CompletionTarget._getContainingCommentToken has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 5, loops 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bffb73593f0ce9452de94f4d322c1740af861f52b7d063502d2004679a1865b"}},{"ruleId":"D2","level":"warning","message":{"text":"_OpTypeAstVisitor.visitSwitchPatternCase (cognitive 18): _OpTypeAstVisitor.visitSwitchPatternCase has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":1686}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9bda73f7fc66ecd2f652b2e9d5cf01959e4ce961f88e96209bd0541accc08ef"}},{"ruleId":"D2","level":"warning","message":{"text":"_OpTypeAstVisitor._argumentListContext (cognitive 18): _OpTypeAstVisitor._argumentListContext has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14 (15 pts), boolean chains 3 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":1856}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0060a5d0d6b6d4d0b7a8cbe2b461dd43d0732a5ba7ff7fde6de27e41b5624b6"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpectedDiagnostic.matches (cognitive 18): ExpectedDiagnostic.matches has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/src/analysis_rule/pub_package_resolution.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"704892e2ce446bca46f61a7ffad246f72cba9db236dee1d0e62516e4729cf2c0"}},{"ruleId":"D2","level":"warning","message":{"text":"_ExpectedDiagnosticsUpdater._writeContent (cognitive 18): _ExpectedDiagnosticsUpdater._writeContent has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (14 pts), loops 2 (4 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/src/expected_diagnostics.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"13c1e7644e1c68a10bf15646dcab4d0ffa4b67ab45fdb5f7a29c39fa928bf098"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelTypeGraphBuilder._findLength (cognitive 18): KernelTypeGraphBuilder._findLength has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1534}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa3bdd7f38e02c9586ffc107d98e03ec5dfdf9f7d9cebdb0406e7566d124a50"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEmitter.visitMap (cognitive 18): ConstantEmitter.visitMap has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (12 pts), boolean chains 3, loops 3 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/constant_emitter.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"1688e7c60fcf55e673020e13f2fd4fcdcc9b4ec10932172daae88bc1e4ef796d"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeVariableTests._setupDependencies (cognitive 18): TypeVariableTests._setupDependencies has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (10 pts), loops 5 (8 pts) (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"e62c5acde0868d610323d871986d7c9655bd662231480df67f9765aa6f7ffccf"}},{"ruleId":"D2","level":"warning","message":{"text":"KClassEnv.convert (cognitive 18): KClassEnv.convert has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/env.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"329e746265cad9f089fea7d75fa0b8321073c31017b7ede99a7e023e5b8c8331"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder.visitBreakStatement (cognitive 18): KernelSsaGraphBuilder.visitBreakStatement has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 2 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":3454}}}],"partialFingerprints":{"codehealthFindingId/v1":"022fde4b370df88eed472946ab6a20694707790a9f30a7991cd86c87eb03a245"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._setupStateForInlining (cognitive 18): KernelSsaGraphBuilder._setupStateForInlining has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (8 pts), boolean chains 7, loops 2 (3 pts) (nesting depth added 2). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8333}}}],"partialFingerprints":{"codehealthFindingId/v1":"f14a271cf41f10282ad2e3f10fdb1bd470335f53bb107569cbd73c1ec5dfe3cb"}},{"ruleId":"D2","level":"warning","message":{"text":"InlineData.cannotBeInlinedReductiveReason (cognitive 18): InlineData.cannotBeInlinedReductiveReason has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16 (17 pts), loops 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9044}}}],"partialFingerprints":{"codehealthFindingId/v1":"932a89515f2fe2da55612ec41f8edd1e04c92b51d46f2be2e930048760701041"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.visitLabeledBlockInfo (cognitive 18): SsaCodeGenerator.visitLabeledBlockInfo has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 3 (6 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1280}}}],"partialFingerprints":{"codehealthFindingId/v1":"278b2af57cef207c80926cea95faa93e38e7685c70846008809f39b0867561b2"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.visitTypeEval (cognitive 18): SsaCodeGenerator.visitTypeEval has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":4131}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac4a42f1e18c259bb60a85af527aefceeb47453f47ca2758994fb66a715b45a4"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSelection.visitIf (cognitive 18): SsaInstructionSelection.visitIf has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 4 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7b16a99fead7b480f711c3ad4a5b29bd4a75cc6ed2a7d25fdc990528de111ff"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaSimplifyInterceptors.rewriteSelfInterceptorUses (cognitive 18): SsaSimplifyInterceptors.rewriteSelfInterceptorUses has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 4, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_simplifier.dart"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"739e922cf7653c1423cfe45abf352c319c32d2c2443e6b74fb827079803a4fc4"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier._removeInstructionAndPureDeadInputs (cognitive 18): SsaInstructionSimplifier._removeInstructionAndPureDeadInputs has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (16 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2f9291a3af38d4e4ba4d59ba8c2f506d9e706c18b8cc7c1b21cee7824af360e"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.handleIdentityCheck (cognitive 18): SsaInstructionSimplifier.handleIdentityCheck has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 3, ternaries 1 (2 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1427}}}],"partialFingerprints":{"codehealthFindingId/v1":"f083e26644de93aa82c1fcf9c31ad2ee93078fa453081fba0fa3e0388958dec3"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitStringConcat (cognitive 18): SsaInstructionSimplifier.visitStringConcat has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (17 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2353}}}],"partialFingerprints":{"codehealthFindingId/v1":"1deae7dff8f79fd27b7bbbc87946a4020403cd611b27e2e1ec6260fef8dfc59d"}},{"ruleId":"D2","level":"warning","message":{"text":"Range.\u0026 (cognitive 18): Range.\u0026 has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 5, ternaries 1 (3 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8e6ae049a6f91c758fb6f98ae51fa9e20a2b2e96bdba5518f994f7ef740cd5a"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaValueRangeAnalyzer.visitRemainder (cognitive 18): SsaValueRangeAnalyzer.visitRemainder has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (14 pts), boolean chains 4 (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":1083}}}],"partialFingerprints":{"codehealthFindingId/v1":"714159f49f1a6289e33b158ce7312f494ecf9d40ba90be3a530c059aa59ade22"}},{"ruleId":"D2","level":"warning","message":{"text":"IsolateManager._readyToResume (cognitive 18): IsolateManager._readyToResume has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 1, error handling 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"cacf9a9275f735f8c2dfc0900595acdbb158b3b62f1812f80d45afa9f48c6f8f"}},{"ruleId":"D2","level":"warning","message":{"text":"StackTraceLine.fromText (cognitive 18): StackTraceLine.fromText has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (18 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_tools/lib/src/trace.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"a335338c83a20a3387073a23e15830a14e06cb812ac75897d1a8697f2faaea76"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitMemberName (cognitive 18): ProgramCompiler._emitMemberName has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3193}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0c1e2a82ace4595e3484ec60fa12d5177a22af5db0c1b7bc0863b3bd9eb9ffb"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._isStaticInteropTearOff (cognitive 18): ProgramCompiler._isStaticInteropTearOff has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 7 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3554}}}],"partialFingerprints":{"codehealthFindingId/v1":"1898aca7ccf190421577265b8de1e0302f0097877bd83cb77bc972e1d9d00ae3"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitInlineJSCode (cognitive 18): ProgramCompiler._emitInlineJSCode has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7212}}}],"partialFingerprints":{"codehealthFindingId/v1":"81faef94ba74975c9bf04f3fe190a2b014052f6c1faf449c9c51b84b0caa4a30"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitMemberName (cognitive 18): LibraryCompiler._emitMemberName has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3708}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca395bdf198364731c5ce19db44c2b03b5a2acf97579266a69036456eca27fc2"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._isStaticInteropTearOff (cognitive 18): LibraryCompiler._isStaticInteropTearOff has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 7 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4165}}}],"partialFingerprints":{"codehealthFindingId/v1":"b53165fc08f743f055d52af09487c626b98054dde4d64e9dc5f491d8ce4649be"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitInlineJSCode (cognitive 18): LibraryCompiler._emitInlineJSCode has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8079}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0dddd7d02c3b7daf9772cf3caf08532144fe8a14c8d86d7089fa7458bb7392d"}},{"ruleId":"D2","level":"warning","message":{"text":"HotReloadDeltaInspector.compareGenerations (cognitive 18): HotReloadDeltaInspector.compareGenerations has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 3 (4 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/hot_reload_delta_inspector.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ea86e335ba5078a9a2d9c0962c96a06bbcf4122ef921abb15b156a11757840"}},{"ruleId":"D2","level":"warning","message":{"text":"PersistentWebSocket._listenWithRetry (cognitive 18): PersistentWebSocket._listenWithRetry has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), error handling 1 (3 pts), match/switch 1 (2 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/sockets.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdac508be5bd42bf3327b361883a7921098c49e261638edd195657a2b6902ae1"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalCompiler.computeDelta (cognitive 18): IncrementalCompiler.computeDelta has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, boolean chains 3, loops 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee9402e79bc82551824de4ff5aa555c374c49f4908e5eef6fd91c24c3ca596b4"}},{"ruleId":"D2","level":"warning","message":{"text":"LookupResult._fromBuilders (cognitive 18): LookupResult._fromBuilders has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (15 pts), boolean chains 3 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/lookup_result.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"15bcf44c393a7e5ceb78b00bd2b47c2977d5bcc4219f4b42c0507cb5139aabe3"}},{"ruleId":"D2","level":"warning","message":{"text":"LookupResultIterator.moveNext (cognitive 18): LookupResultIterator.moveNext has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (18 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/scope.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"97e88104474192e69d5513b53686a12572d1231052ae247e44d89cf92998fec5"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAliasBuilderImpl._unaliasDeclaration (cognitive 18): TypeAliasBuilderImpl._unaliasDeclaration has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_alias_builder.dart"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"5acf0799b1a21572aae12c94ed670bd79e5097c01eb0a55487789930a1bcb663"}},{"ruleId":"D2","level":"warning","message":{"text":"RegularConstructorEncoding._build (cognitive 18): RegularConstructorEncoding._build has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (10 pts), boolean chains 4, loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7b28339bb61747c9e7aef24434e0dbdc4187b21439b3e0b0d3080ef89cc3fda"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endForStatement (cognitive 18): BodyBuilderImpl.endForStatement has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (18 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4093}}}],"partialFingerprints":{"codehealthFindingId/v1":"858f9f1f06684d16700f60abf99cffa2455aa14b42785439a1251ce133873b16"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.handleThisExpression (cognitive 18): BodyBuilderImpl.handleThisExpression has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 8 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":8648}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9f549e99a606fdd2d79721c6f53e2ec82b2c513b1f70a22657df5d8453b8865"}},{"ruleId":"D2","level":"warning","message":{"text":"MapConstantBuilder.addSpread (cognitive 18): MapConstantBuilder.addSpread has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_collection_builders.dart"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccb1c33ec90083fa9f42562fe3cc89432536d1e259802fa69496aea014332f18"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantsTransformer.visitStringConcatenation (cognitive 18): ConstantsTransformer.visitStringConcatenation has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 5, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2403}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e3fdd752a718298f877bd1111b1b7c139c384acbf33c30547b42e50d912e04"}},{"ruleId":"D2","level":"warning","message":{"text":"DartScopeBuilder2._filterScopesWithArtificialNodes (cognitive 18): DartScopeBuilder2._filterScopesWithArtificialNodes has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 3 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eea156c46956a76110f62f8ba5f9f780c5c5e454d9730eedd4ca6ba4cd3679d"}},{"ruleId":"D2","level":"warning","message":{"text":"_DynamicModuleValidator._verifyCallable (cognitive 18): _DynamicModuleValidator._verifyCallable has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (13 pts), boolean chains 3, match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad6eafd54fd1d70eac18263bd1b297c0fb1a4fce74eb53061f5c50a5cccb405b"}},{"ruleId":"D2","level":"warning","message":{"text":"ThisAccessGenerator.buildSelectorAccess (cognitive 18): ThisAccessGenerator.buildSelectorAccess has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 3, ternaries 1 (3 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":6978}}}],"partialFingerprints":{"codehealthFindingId/v1":"795890d773cf50ab5c3cd75997e8b49599c0b1b0bfede7121146fbab779be1da"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassMembersNodeBuilder.inferSetterType (cognitive 18): ClassMembersNodeBuilder.inferSetterType has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1a152698d86714dddbdd1faaae5ea6abe5857a9e9808e4ebaa8ebeed0fbb508"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelTarget._makeMixinApplicationConstructor (cognitive 18): KernelTarget._makeMixinApplicationConstructor has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 3 (4 pts), boolean chains 3, ternaries 1 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d041aaf0bad4d756548977e8909846b38ca268e0ba17a2bd33819a4f382fd38"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationNameSpaceBuilder.buildNameSpace (cognitive 18): DeclarationNameSpaceBuilder.buildNameSpace has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 4 (6 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/name_space_builder.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"34597281d8ad2a21bbf091c97a8e28d47e390c8fc14da1bb2851f788e9cb17a8"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.beginMethod (cognitive 18): OutlineBuilder.beginMethod has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (17 pts), match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2297}}}],"partialFingerprints":{"codehealthFindingId/v1":"a65ffd09ff7d70752aac2d6136495b497abea6e7d8d387991b19710cb6291205"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceDeclarationBuilderMixin._buildMember (cognitive 18): SourceDeclarationBuilderMixin._buildMember has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (18 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_builder_mixins.dart"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e76e8ed0534c5496efafca22049d9c7c342b70ca5527c3362625d8d2276bad9"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceClassBuilder._checkTypes (cognitive 18): SourceClassBuilder._checkTypes has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 3, ternaries 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1797}}}],"partialFingerprints":{"codehealthFindingId/v1":"3122642ea9ac86082a0561a0219de0fe22b8c3031233259ed758ccc8cca2e2d4"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLibraryBuilder.finishForwarders (cognitive 18): SourceLibraryBuilder.finishForwarders has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 4 (7 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1205}}}],"partialFingerprints":{"codehealthFindingId/v1":"5691853cc8987903c38b3461e21ff191abcf3835a99d1a00840f0238362be2bb"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader.resolveParts (cognitive 18): SourceLoader.resolveParts has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, loops 2, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"cddb5879d53734c9794d712314fd569c6b927fe67eb564b0fcce869ff29f577b"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceLoader.checkOverrides (cognitive 18): SourceLoader.checkOverrides has cognitive complexity 18 (threshold 15). Drivers by points: if/else 3 (11 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2786}}}],"partialFingerprints":{"codehealthFindingId/v1":"31e4641fe419cc0883cf52beae4c1e52ea61a382bacdddffb508d1101f723fc3"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitIfNullSuperIndexSet (cognitive 18): InferenceVisitorImpl.visitIfNullSuperIndexSet has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10 (12 pts), ternaries 4, boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7066}}}],"partialFingerprints":{"codehealthFindingId/v1":"49298a314fd1b729ba7ee31fe3c30315877c6e5924b230c65d98b3cbb8e78a88"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitCompoundIndexSet (cognitive 18): InferenceVisitorImpl.visitCompoundIndexSet has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, boolean chains 1, ternaries 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8423}}}],"partialFingerprints":{"codehealthFindingId/v1":"79237abfbe5ee3fd6e349a2ede74086556a29e1d856b44ed0cbaf2750b4b3433"}},{"ruleId":"D2","level":"warning","message":{"text":"FileInfoHelper.getContent (cognitive 18): FileInfoHelper.getContent has cognitive complexity 18 (threshold 15). Drivers by points: loops 6 (12 pts), if/else 6 (nesting depth added 6). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/import_export_etc_helper.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"9128768119d2f5c6880bc31a7ecd45ab76eb831d129a89664c25b0e71a3ac42f"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.visitVariableDeclarationList (cognitive 18): Printer.visitVariableDeclarationList has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b0188851d83f4d260f5fd0a668badcfebcd3e0b0cb4867996972e7b50479bb3"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitFormalParameterList (cognitive 18): _Visitor.visitFormalParameterList has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 3, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/always_put_required_named_parameters_first.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89acb76897af650599d4bbcf82fe12bfa6b50da45535d9a71179f2817ac3600"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._offsetAndLengthForFragment (cognitive 18): _Visitor._offsetAndLengthForFragment has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (16 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_public_api.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd1f671850b14e5493d3657c08b6e5fd2e2d5a20eb979417455ca5bb2c5e56f2"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitPrimaryConstructorDeclaration (cognitive 18): _Visitor.visitPrimaryConstructorDeclaration has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (14 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/annotate_overrides.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5936f37a112ea49687170281563723b5c130c607cb9b42964af0c8f356eb919"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstructorChecker._checkInitializer (cognitive 18): _ConstructorChecker._checkInitializer has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14 (17 pts), boolean chains 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_initializing_formals.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"2587f55ee1e974f61b2ac5095b38733f5f0433a97e3ffdd0239d4f456f2aae90"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitBinaryExpression (cognitive 18): _Visitor.visitBinaryExpression has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 6, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_interpolation_to_compose_strings.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6100ad27cd235c0005981ce388e4aed47c8a641513584c945b0a698afe559a5"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._reportIfNeeded (cognitive 18): _Visitor._reportIfNeeded has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (15 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/simplify_variable_pattern.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab192783b789aa827741bf81c4a96d10898bd625149b6b47d348f388962074c0"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitBinaryExpression (cognitive 18): _Visitor.visitBinaryExpression has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12 (13 pts), boolean chains 4, ternaries 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_is_even_rather_than_modulo.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cfb66b537ddf562b3a692448f6e6ecb901df59bcd6581eaabe923cace03875c"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor._checkConstructor (cognitive 18): _Visitor._checkConstructor has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13 (16 pts), boolean chains 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_key_in_widget_constructors.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0db953f939af564093917921f4bfa6c4f6e51e7531578ee962128aa77306b1c"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.afterLibrary (cognitive 18): _Visitor.afterLibrary has cognitive complexity 18 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 2 (3 pts), match/switch 1 (3 pts) (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_late_for_private_fields_and_variables.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"359983d6e5dd5a6fab653e634237a99987194aa565866e98a7fcee14494ac546"}},{"ruleId":"D2","level":"warning","message":{"text":"StackTraceHeader.writeToStringBuffer (cognitive 18): StackTraceHeader.writeToStringBuffer has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 1 (2 pts), ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/convert.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"523b93b086f18a945f8ac57b92ec9b0a36cb7ea2fac3c9519728d5e800cfee60"}},{"ruleId":"D2","level":"warning","message":{"text":"SetCommand.complete (cognitive 18): SetCommand.complete has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"950be981e093e4578ccde30e2391fa059e8d78feb2b08cc56855411f0987ff56"}},{"ruleId":"D2","level":"warning","message":{"text":"ClearCommand.run (cognitive 18): ClearCommand.run has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (13 pts), boolean chains 2, loops 1 (2 pts), ternaries 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecd82efb648aeeb8c451ce28c22c8c526d040452d091e5ba0fa0e53548cfaa33"}},{"ruleId":"D2","level":"warning","message":{"text":"DebuggerStackElement.updateStackFrames (cognitive 18): DebuggerStackElement.updateStackFrames has cognitive complexity 18 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 4 (5 pts), boolean chains 2, ternaries 1 (nesting depth added 6). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":2384}}}],"partialFingerprints":{"codehealthFindingId/v1":"760f9d2e866b3118bc5ce1ee7c64d58cb16f5191d8e5ee26838edab65443b738"}},{"ruleId":"D2","level":"warning","message":{"text":"DebuggerInputElement._onKeyDown (cognitive 18): DebuggerInputElement._onKeyDown has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (11 pts), error handling 2 (4 pts), match/switch 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":3258}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ad1b9d1230cc6a60f6a7f9d09d02eae16b54aa67b563de07f616c1f7de56464"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeSection.deserialize (cognitive 18): CodeSection.deserialize has cognitive complexity 18 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 4 (7 pts), boolean chains 1 (nesting depth added 8). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e954dfa915cdfd21648b82351c931bdc1f72a752d62cdc44f3106de6de24619"}},{"ruleId":"D2","level":"warning","message":{"text":"DataSection.deserialize (cognitive 18): DataSection.deserialize has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"d350218ecfda00107e1482cf0e134f73f01969dc770a0710bf194027232298b1"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.writeMetadata (cognitive 18): Printer.writeMetadata has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (16 pts), loops 1 (2 pts) (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f1497251d078d9dfdeba0faf7c2f5aec975e2072b4633ae00df1b9af6281ff"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.writeFunction (cognitive 18): Printer.writeFunction has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14 (15 pts), boolean chains 3 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"84e637b01bb659de870950bae51d68835dcb72901bc6224f71a5f16bf703b5bc"}},{"ruleId":"D2","level":"warning","message":{"text":"_TreeShakerPass2.calculateRemovedLibraryDeps (cognitive 18): _TreeShakerPass2.calculateRemovedLibraryDeps has cognitive complexity 18 (threshold 15). Drivers by points: if/else 5 (14 pts), loops 3 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2172}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed08a6965ff5a9a4e9679ceedd1bd8a8314ff58d2b9836ff270ec9e53a2c934"}},{"ruleId":"D2","level":"warning","message":{"text":"SetType.intersection (cognitive 18): SetType.intersection has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (16 pts), loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":784}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb3794c55cbc63910469c04ba4d29b6d46a237ac05fb1abe14e031033e2135cc"}},{"ruleId":"D2","level":"warning","message":{"text":"PRESUBMIT._CheckFormat (cognitive 18): PRESUBMIT._CheckFormat has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7 (14 pts), error handling 1 (3 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"PRESUBMIT.py"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8c5775aa47e9f768b6ad4e80c7bb0d5c18c1e2c0cdd3d2f2bd52d0ad3a08fd7"}},{"ruleId":"D2","level":"warning","message":{"text":"embedder_layering_check.CheckFile (cognitive 18): embedder_layering_check.CheckFile has cognitive complexity 18 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 2 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/embedder_layering_check.py"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7f01dd69a4699d5efa627beb367ea1c71205c85c547aa52b01dca7df010bcf"}},{"ruleId":"D2","level":"warning","message":{"text":"build_devtools.main (cognitive 18): build_devtools.main has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11 (12 pts), error handling 5 (6 pts) (nesting depth added 2). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/build_devtools.py"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbc7a7b2400bfb5f1cd1458c1d6ed223d033b41953c062321294897280449354"}},{"ruleId":"D2","level":"warning","message":{"text":"DartiumBackend._AddGetter (cognitive 18): DartiumBackend._AddGetter has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 5, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"520d2b24f3d98e6d66362eae0546efe82491ca925249525b33bf9a8361977d1e"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeKeywordOrIdentifier (cognitive 17): AbstractScanner.tokenizeKeywordOrIdentifier has cognitive complexity 17 (threshold 15). Drivers by points: boolean chains 10, if/else 6, loops 1. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1353}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd406ada33314f117e7a23c9402ebc0b643467601b81d55eed113188671fed0f"}},{"ruleId":"D2","level":"warning","message":{"text":"Document.outerHtml (cognitive 17): Document.outerHtml has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/lib/html_dom.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9d342c9558f048ee96023f91ccf6bd87c520e7bee145fb19e0647b12160d368"}},{"ruleId":"D2","level":"warning","message":{"text":"FieldDeclaration.toString (cognitive 17): FieldDeclaration.toString has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f99b2658df36a4264f590870533ea88e992d5b31e1284718b5923be6d8374ac"}},{"ruleId":"D2","level":"warning","message":{"text":"_Allocator._enterScope (cognitive 17): _Allocator._enterScope has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 2, loops 1 (2 pts), ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/local_vars.dart"},"region":{"startLine":707}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e3807ab0dc5e845057b6e8a1e22deeea26e91a5d1bb247e00f7577917ea5559"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorAllocatorCodeGenerator.generateConstructorAllocator (cognitive 17): ConstructorAllocatorCodeGenerator.generateConstructorAllocator has cognitive complexity 17 (threshold 15). Drivers by points: loops 6 (11 pts), if/else 4 (6 pts) (nesting depth added 7). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":4696}}}],"partialFingerprints":{"codehealthFindingId/v1":"2847dd1b7d88c4b43f91800f8fe49b5bcbfd030503f3e6501258f90340284303"}},{"ruleId":"D2","level":"warning","message":{"text":"DryRunSummarizer._analyzeImports (cognitive 17): DryRunSummarizer._analyzeImports has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dry_run.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"773fd9e2922715e3596366df1bcc6f350a2f15a4472eabff81bababffcba766b"}},{"ruleId":"D2","level":"warning","message":{"text":"Translator.translate (cognitive 17): Translator.translate has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 5, boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e5c0ee92cc640d5df57a3587a35bdfd450652ef7d562fde9f93f0d7c181c20b"}},{"ruleId":"D2","level":"warning","message":{"text":"Types.classForType (cognitive 17): Types.classForType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14 (17 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f87f4017c09fc78afded7f9111aa038c06eaa77c1220d4494fbe28f6368c18f"}},{"ruleId":"D2","level":"warning","message":{"text":"RuntimeTypeInformation._buildTypeRules (cognitive 17): RuntimeTypeInformation._buildTypeRules has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":1239}}}],"partialFingerprints":{"codehealthFindingId/v1":"f522b57843bbbdfd8f1df99e2a54d02a81a12f3d40e82287b08ce5fc4828a0c6"}},{"ruleId":"D2","level":"warning","message":{"text":"Analysis.variableLengthOf (cognitive 17): Analysis.variableLengthOf has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (11 pts), ternaries 2 (4 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfbf5735781c6a01914504378f8dc6811647462e6af0e6e1e0d4c978ea6bb03f"}},{"ruleId":"D2","level":"warning","message":{"text":"ClosedWorldClassHierarchy._initializeTopologicallySortedClasses (cognitive 17): ClosedWorldClassHierarchy._initializeTopologicallySortedClasses has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 3 (5 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2ccdda1eccfa512584553ff279242cbe8ad14b7efbf1f90435e15dc8165045a"}},{"ruleId":"D2","level":"warning","message":{"text":"Configuration.toString (cognitive 17): Configuration.toString has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, boolean chains 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"23cbe9151b8d48989c9e0e108b75ba6c4995088713656dcb6186467e5868c5ac"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodParser.parseInto (cognitive 17): MethodParser.parseInto has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (8 pts), loops 3 (7 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"75eb5657e787946bca8a0e2283c1bc5f9156fdf66e7df07846a3b78b2a243086"}},{"ruleId":"D2","level":"warning","message":{"text":"DartFuzz.emitMethodCall (cognitive 17): DartFuzz.emitMethodCall has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":2467}}}],"partialFingerprints":{"codehealthFindingId/v1":"db7c8350382df76872521ba823f07235412c762b67cac7cfa292553cc95e7f0d"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpHeaders._add (cognitive 17): _HttpHeaders._add has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (16 pts), match/switch 1 (nesting depth added 8). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c4b3f8d076424bf11223fe9b8480d42810f59f01e75cdb75344727186b1d54b"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpClient._openUrl (cognitive 17): _HttpClient._openUrl has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (10 pts), boolean chains 3, error handling 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":2976}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2da7b5a1f8dc4ca628b97250e811a7e14efa4629176c8c00019c840eba39b7b"}},{"ruleId":"D2","level":"warning","message":{"text":"_WebSocketPerMessageDeflate.processOutgoingMessage (cognitive 17): _WebSocketPerMessageDeflate.processOutgoingMessage has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 4, loops 2 (3 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"106b0591132875ba6a83e39824404d4ee2d82557a147283c142ba4b04c6a90e9"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Decoder.convertSingle (cognitive 17): _Utf8Decoder.convertSingle has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 2 (3 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2205}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cff5b3bd24eb59f058dd5f2100eaa67b7b5c6656aa37a58918dbeddb6beae4e"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Decoder.decode8 (cognitive 17): _Utf8Decoder.decode8 has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 2, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2579}}}],"partialFingerprints":{"codehealthFindingId/v1":"8714f17eb7a8cf641190dec56de6d361ed79e908b0b5ab27ab3232ab71573b3d"}},{"ruleId":"D2","level":"warning","message":{"text":"int._parseBlock (cognitive 17): int._parseBlock has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/int_patch.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"d295ff82d9f817841d139eb9b05a0e60f2a7da2e0b224d918ce22fd618545de2"}},{"ruleId":"D2","level":"warning","message":{"text":"SubtypeTestCacheStub._generate (cognitive 17): SubtypeTestCacheStub._generate has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), ternaries 2 (5 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stub_code_generator.dart"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3e5abef3058bf9456694e70ccfe4aeb1027fd8ca9b0326ff4e78c33d15307b9"}},{"ruleId":"D2","level":"warning","message":{"text":"_JsonUtf8Stringifier.writeStringSlice (cognitive 17): _JsonUtf8Stringifier.writeStringSlice has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (15 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/json.dart"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"db54355b79982e82f43b45de0b062f9f42e297683b67fd9efe0683333fa26b0a"}},{"ruleId":"D2","level":"warning","message":{"text":"_AcceptStructuredClone.walk (cognitive 17): _AcceptStructuredClone.walk has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (13 pts), loops 1 (2 pts), ternaries 1 (2 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f80ef668828b1f8a8a46a73721e4d83c815460a637d7e381895f9404ed308bd"}},{"ruleId":"D2","level":"warning","message":{"text":"_FileStream._readBlock (cognitive 17): _FileStream._readBlock has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (14 pts), boolean chains 3 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file_impl.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"4695ed557190bc3570afe48014ae3b8805c43540a54fe114ac0fbd05256f5b50"}},{"ruleId":"D2","level":"warning","message":{"text":"FileSystemEntity._absoluteWindowsPath (cognitive 17): FileSystemEntity._absoluteWindowsPath has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file_system_entity.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"22274aafdbdfbed34cd72eddb0937e17a820164e4b9be48ecfd7051a8e068fdb"}},{"ruleId":"D2","level":"warning","message":{"text":"Loop.addBody (cognitive 17): Loop.addBody has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/loops.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1957d41541bd22b7a1a20e8b8600a974e6e32b6e0ab30729f1c136c66e9d5ea"}},{"ruleId":"D2","level":"warning","message":{"text":"RuntimeFinalizer.generateJsMethods (cognitive 17): RuntimeFinalizer.generateJsMethods has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 3 (4 pts), match/switch 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/js/runtime_generator.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"0447014b906c6cffb6f33006bd04ddc110b187430efe4b7d192c8034ccc7ffd7"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiDefinitionTransformer.visitClass (cognitive 17): _FfiDefinitionTransformer.visitClass has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 5, loops 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0c28a89d10834d6b213fc1370dae5f6747b604566993a8667bd24565a5f3e12"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantPropagation.transform (cognitive 17): ConstantPropagation.transform has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 5 (7 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/constant_propagation.dart"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"278841af1b3609345bd3521f092fd4b1fdb4ed8caf6a7fd0680a08c3baecacb5"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantPropagation._transformPhis (cognitive 17): ConstantPropagation._transformPhis has cognitive complexity 17 (threshold 15). Drivers by points: loops 4 (10 pts), if/else 4 (7 pts) (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/constant_propagation.dart"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2d445666a3ac2a2bb0d78c8be5e2208336000163bf1969de811c7ac5b4cbf47"}},{"ruleId":"D2","level":"warning","message":{"text":"Unboxing._findUnboxedInput (cognitive 17): Unboxing._findUnboxedInput has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/unboxing.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"47ea7b0814675e11dbbca66ba139ecacce1ce4e6d8b40b2f1b4d64e86e7a4fcf"}},{"ruleId":"D2","level":"warning","message":{"text":"SpaceCreator.createCastSpace (cognitive 17): SpaceCreator.createCastSpace has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/shared.dart"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcefa5d06b61e7b6e94091b61d14d498f69dad5341b91ecdfa2d8717ad537677"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowModel.rebaseForward (cognitive 17): FlowModel.rebaseForward has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 4, ternaries 1 (2 pts), loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":3896}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9f53ed63741181626abe47bc745824ee98bdb37a32a3d2df99aee8b3a7288e1"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowLinkReader._diffCore (cognitive 17): FlowLinkReader._diffCore has cognitive complexity 17 (threshold 15). Drivers by points: loops 4 (10 pts), if/else 6 (7 pts) (nesting depth added 7). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_link.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b8df5f679d928eb1956aa650aba7e370f64a1268f6c6aed1b91a7fc7125f8c2"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseExpression (cognitive 17): Parser.parseExpression has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (7 pts), loops 2 (6 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6938}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bcd6388791c3a50ddf2997108db026a024a87acde331f77d54eb7ab54e2847d"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenizeKeywordOrIdentifier (cognitive 17): AbstractScanner.tokenizeKeywordOrIdentifier has cognitive complexity 17 (threshold 15). Drivers by points: boolean chains 10, if/else 6, loops 1. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2089}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a10e3eadf1ed75a36d72ce38f8d122e2d3820e799cbdb2d211cbbf0e2fc4ed5"}},{"ruleId":"D2","level":"warning","message":{"text":"JsUtilOptimizer._treatmentForProcedure (cognitive 17): JsUtilOptimizer._treatmentForProcedure has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (16 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b4cd979e1f8fb7e0cea8ae45f687b38bee482a2bd50af900ccd8b7f3765650"}},{"ruleId":"D2","level":"warning","message":{"text":"DartUnitHoverComputer._getTypeOfDeclarationOrReference (cognitive 17): DartUnitHoverComputer._getTypeOfDeclarationOrReference has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_hover.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"760cb2740a0e684bde1932128db2882d54bc92b6576c8c0a9cec06d7e01606f5"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeActionComputer._computeActions (cognitive 17): CodeActionComputer._computeActions has cognitive complexity 17 (threshold 15). Drivers by points: loops 4 (8 pts), if/else 7, boolean chains 2 (nesting depth added 4). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/code_action_computer.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"738976e1badaa1a66fec3edda21ac33aad04414c0fd9c943efac7db5093652cc"}},{"ruleId":"D2","level":"warning","message":{"text":"WorkspaceFlutterWidgetPreviewsHandler.handle (cognitive 17): WorkspaceFlutterWidgetPreviewsHandler.handle has cognitive complexity 17 (threshold 15). Drivers by points: loops 5 (10 pts), if/else 2 (7 pts) (nesting depth added 10). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/handler_get_widget_previews.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0e72e4205f4daf09297f797bb0daef630071022ac462b223b2d25431891470c"}},{"ruleId":"D2","level":"warning","message":{"text":"HoverHandler.toHover (cognitive 17): HoverHandler.toHover has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc107bd435b68ef6e66929007e82b4da82f7176715bd884e81ea88d53ab79e9"}},{"ruleId":"D2","level":"warning","message":{"text":"InitializeMessageHandler.handle (cognitive 17): InitializeMessageHandler.handle has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 1 (3 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_initialize.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ca41ccc07ca9960c81827c17078e2738e19c54b93d8d8a082c2ba518a15f141"}},{"ruleId":"D2","level":"warning","message":{"text":"SuggestionBuilder.suggestConstructor (cognitive 17): SuggestionBuilder.suggestConstructor has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"d19643e63671debcb8193e64726915ce9afbb403a6a74a28a9009a650fd8a6b9"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkFixProcessor._formatCode (cognitive 17): BulkFixProcessor._formatCode has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (9 pts), loops 3 (7 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":947}}}],"partialFingerprints":{"codehealthFindingId/v1":"02d55de8d6ba0de959400512c24b3cb0875b701c08fbe29c71ed69fec240b5c4"}},{"ruleId":"D2","level":"warning","message":{"text":"AddMissingEnumCaseClauses._importPrefix (cognitive 17): AddMissingEnumCaseClauses._importPrefix has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (15 pts), boolean chains 1, loops 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"86483c3f5cd2278670006f45b0feabfbb187b107845e3d6a7635416f3643379a"}},{"ruleId":"D2","level":"warning","message":{"text":"BindToField._whetherToCreateNewField (cognitive 17): BindToField._whetherToCreateNewField has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (16 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/bind_to_field.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"d316737e529b2d7cb98f5877242441bb505ab4c04ed26dfba7a71ab0d8cb6518"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertFlutterChild.compute (cognitive 17): ConvertFlutterChild.compute has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (13 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_flutter_child.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"921773e023392721eed845b12ffd0336be288769bf86d3192ea14e7b20e65823"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateConstructorForFinalFields._fieldsToWrite (cognitive 17): CreateConstructorForFinalFields._fieldsToWrite has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"b175ac9781f32fc82773fd802f732759755546f45901540ce531a3fb45b1fdcb"}},{"ruleId":"D2","level":"warning","message":{"text":"FlutterWrap.producers (cognitive 17): FlutterWrap.producers has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"cebc5718928999aad65263c4b41ccb688f960a95165b75ac0585082d1fcca0a8"}},{"ruleId":"D2","level":"warning","message":{"text":"_ImportLibraryCombinatorMultiple.compute (cognitive 17): _ImportLibraryCombinatorMultiple.compute has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), match/switch 1 (2 pts), ternaries 1 (2 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/import_library.dart"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc6fe734542486f86d41f2ab5b096caff5525daebe03f5717f9cd36cd567823"}},{"ruleId":"D2","level":"warning","message":{"text":"JoinIfWithOuter.compute (cognitive 17): JoinIfWithOuter.compute has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13 (17 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/join_if_with_outer.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"572d0cd8b4219d2ecadf6a1da336487d1cff6288b75513a96e513abd4a0a0021"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplaceFinalWithConst.compute (cognitive 17): ReplaceFinalWithConst.compute has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (15 pts), loops 1 (2 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_final_with_const.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"74cb9a974f2a244d532389e8f1f7150ca5ad2325822969ed7b63aae6ef5a401e"}},{"ruleId":"D2","level":"warning","message":{"text":"_WidgetDescriptionComputer._toValue (cognitive 17): _WidgetDescriptionComputer._toValue has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"61c50f957fdebaa85003982d4af7d2c2c0c531a50f4ddd883fad9ab5e7738cd8"}},{"ruleId":"D2","level":"warning","message":{"text":"_AvailableWithDeclaration.hasSelectedFormalParametersToConvertToNamed (cognitive 17): _AvailableWithDeclaration.hasSelectedFormalParametersToConvertToNamed has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"8171ef335ee7e4fb815de19db7847019bbb9edcf278cb66e4bfb18fc3dab46b2"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractLocalRefactoringImpl._declarationKeywordAndType (cognitive 17): ExtractLocalRefactoringImpl._declarationKeywordAndType has cognitive complexity 17 (threshold 15). Drivers by points: ternaries 4 (8 pts), if/else 6, boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"7424816a6bd78ea51c72511fb9d7866b7508226dbb4710b32d8c56a75de0ebe7"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractMethodRefactoringImpl._initializeReturnType (cognitive 17): ExtractMethodRefactoringImpl._initializeReturnType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba0444aad7097f6a32b8ce14b2feadde494dbc3bb355cf1e96d4ae65f5e4bed8"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtractWidgetRefactoringImpl._replaceInvocationsWithInstantiations (cognitive 17): ExtractWidgetRefactoringImpl._replaceInvocationsWithInstantiations has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3fffda81810448e98b87f37d8c3a2bd379754db67ce682c778eaa7f657096a3"}},{"ruleId":"D2","level":"warning","message":{"text":"YamlNodeLocator._searchWithin (cognitive 17): YamlNodeLocator._searchWithin has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/yaml_node_locator.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d555bd903bac20615f196c9dcc31d2f677648e3e16c5887bc9a35022b67ca59"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginServer._computeDiagnosticsFromPlugin (cognitive 17): PluginServer._computeDiagnosticsFromPlugin has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (11 pts), loops 5 (6 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"83d7c64c809cc53ac72b66341dd735d6d73612a52872e99582f753f5b2204fcc"}},{"ruleId":"D2","level":"warning","message":{"text":"_ParsedOptionalChecksData.parse (cognitive 17): _ParsedOptionalChecksData.parse has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (9 pts), match/switch 3 (6 pts), loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1416}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c095732b89cfa7d2d440614845c8d307728afd54d9e27e74da89a1d341a027a"}},{"ruleId":"D2","level":"warning","message":{"text":"_ContextLocator._createContextRoots (cognitive 17): _ContextLocator._createContextRoots has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (9 pts), boolean chains 4, loops 1 (3 pts), ternaries 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_locator.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a129d8e2b6b2e6006be2e2057d3c3409ea745f2e414b7c6fd54e3a2a179cfb"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextRootImpl._includedFilesInFolder (cognitive 17): ContextRootImpl._includedFilesInFolder has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (11 pts), error handling 2 (5 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_root.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a9d3c4fd4b34610e6f8cdb401ed47b568a443d58baee3ae1604254b27ac098"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVisitor.visitSetOrMapLiteral (cognitive 17): ConstantVisitor.visitSetOrMapLiteral has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, ternaries 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1331}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d65c86d8dc9db3f4166b1b8620a2cf1e5cdb172eee863da9a1a45b6d118cad8"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConstantTypeChecker._checkGenericFunctionType (cognitive 17): _ConstantTypeChecker._checkGenericFunctionType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"b331ab8e5d176ce73320b3af5a705142e718573ba2e2979b5044d49aab90d0a1"}},{"ruleId":"D2","level":"warning","message":{"text":"InterfaceLeastUpperBoundHelper.compute (cognitive 17): InterfaceLeastUpperBoundHelper.compute has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"b94719000cce9c87677edadb8c30543929a9341b569561e90f5291068d4c4da7"}},{"ruleId":"D2","level":"warning","message":{"text":"RuntimeTypeEqualityVisitor.visitFunctionType (cognitive 17): RuntimeTypeEqualityVisitor.visitFunctionType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (16 pts), loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"21d910fb7050aef299c5a2334456cf81552aa7eb3ae92274002f6d3a48588b90"}},{"ruleId":"D2","level":"warning","message":{"text":"AssignmentExpressionResolver.resolveDirect (cognitive 17): AssignmentExpressionResolver.resolveDirect has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 1, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"039a15967e57793c48deaf320711bb87c060ae32c869f904aa0304448cae299d"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodInvocationResolver._rewriteAsCallInvocation (cognitive 17): MethodInvocationResolver._rewriteAsCallInvocation has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":1827}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2db57d6863da3a56b044a320854c94cc3d978ffbccd42fb0fa0a9e7067a6fc0"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolutionVisitor._lookupBreakOrContinueTarget (cognitive 17): ResolutionVisitor._lookupBreakOrContinueTarget has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 4, ternaries 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":1125}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b1294d307ffa2aba75d81fa15050beb6c4a8aa41bf4e5dd3de949ac1311159"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationVerifier._checkAwaitNotRequired (cognitive 17): AnnotationVerifier._checkAwaitNotRequired has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (10 pts), loops 2 (4 pts), boolean chains 3 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5358f104d781d5af5c19e61de0533cbf64d662e0149e3b34b3d067dd63aa5a0"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstArgumentsVerifier._isTearOff (cognitive 17): ConstArgumentsVerifier._isTearOff has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (15 pts), loops 1 (2 pts) (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/const_argument_verifier.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0b8bd92b66dc5aa6ef14ab49a5b78787cb2991dffda25f810d9e782058355dc"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportsVerifier.addImports (cognitive 17): ImportsVerifier.addImports has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 3 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/imports_verifier.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e2756bcbfb72e365062072db6eaa95a0cbd7e082c0cb4c56f01d740b770c6d"}},{"ruleId":"D2","level":"warning","message":{"text":"DocCommentBuilder._endBlockDocDirectiveTag (cognitive 17): DocCommentBuilder._endBlockDocDirectiveTag has cognitive complexity 17 (threshold 15). Drivers by points: loops 4 (11 pts), if/else 2 (6 pts) (nesting depth added 11). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"169c7196b7a51c13b0f4af74cc0cf1f7e143e6e97f6f023f77eedf570ff92a06"}},{"ruleId":"D2","level":"warning","message":{"text":"_CharacterSequenceFromMultiLineComment.next (cognitive 17): _CharacterSequenceFromMultiLineComment.next has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (11 pts), boolean chains 5, loops 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":997}}}],"partialFingerprints":{"codehealthFindingId/v1":"f90afaadda66efc2dd543db46594ff2f44325a9303ad80c76aafd0340b4287ce"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForDeferredPrefixCollisions (cognitive 17): ErrorVerifier._checkForDeferredPrefixCollisions has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (13 pts), loops 2 (4 pts) (nesting depth added 11). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5012}}}],"partialFingerprints":{"codehealthFindingId/v1":"f71dae30cc193f544c9b95f1f025ad01be77000249b8caf01bd76cd64b507410"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForUndefinedConstructorInInitializerImplicit (cognitive 17): ErrorVerifier._checkForUndefinedConstructorInInitializerImplicit has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":7792}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f1cb03c87c38023d8b2a75475525c17047c7998f64d825b1800d17ef99291cc"}},{"ruleId":"D2","level":"warning","message":{"text":"FfiVerifier._validateAsFunction (cognitive 17): FfiVerifier._validateAsFunction has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 2, ternaries 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1546}}}],"partialFingerprints":{"codehealthFindingId/v1":"eda852fe2ac1844dd1e646ff3dd817438a5b3759482ce883117cba9dd61b844e"}},{"ruleId":"D2","level":"warning","message":{"text":"SwitchExhaustiveness.visitSwitchMember (cognitive 17): SwitchExhaustiveness.visitSwitchMember has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (16 pts), loops 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":6479}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa3f1299a68e71847f46a3087f47811e5ce2c1291a05c29787b33a30ed7a8020"}},{"ruleId":"D2","level":"warning","message":{"text":"IgnoreInfo.isIgnoreComment (cognitive 17): IgnoreInfo.isIgnoreComment has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13 (15 pts), loops 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/ignore_comments/ignore_info.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90ede4caea5293f5d1fe3845121ee2f554255c3a67aba51f4a0f2a7afd9c310"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolutionSink.writeType (cognitive 17): ResolutionSink.writeType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14 (17 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":1004}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a3a0ae5479801a3d98f5e4ec182287bc104ddf747bd1f83759ebf33e45b70c"}},{"ruleId":"D2","level":"warning","message":{"text":"BlazeWorkspacePackage.isInTestDirectory (cognitive 17): BlazeWorkspacePackage.isInTestDirectory has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 4, loops 1 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/blaze.dart"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02de99ebfa0e1d550b12b129f88a3bd270c946fb8fa1eb130a6f864df7123cf"}},{"ruleId":"D2","level":"warning","message":{"text":"BlazeFileWatcherIsolate.handleRequest (cognitive 17): BlazeFileWatcherIsolate.handleRequest has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/blaze_watcher.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"50bb75c5f41d5e4dbb9b1c90854e5a20fd55160f6f96a36a461b75cdbbec299e"}},{"ruleId":"D2","level":"warning","message":{"text":"DartEditBuilderImpl._getVisibleType (cognitive 17): DartEditBuilderImpl._getVisibleType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 4, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1422}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b6f65784b09242496fdf4c573864849d480b17c1bf29b39a32f7718ca6861b"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionTarget.dotTarget (cognitive 17): CompletionTarget.dotTarget has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"556e651e7b4f141f0183222b003abad9a57d210b4a3003a9ed5b660575106f42"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionTarget.executableElement (cognitive 17): CompletionTarget.executableElement has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (17 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"c81caaeda0ba504d70cd10a270f81cb7c6f25217f662ad91d2d178e2a01bc823"}},{"ruleId":"D2","level":"warning","message":{"text":"PubPackageResolutionTest.assertDiagnosticsIn (cognitive 17): PubPackageResolutionTest.assertDiagnosticsIn has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (10 pts), error handling 1 (3 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/src/analysis_rule/pub_package_resolution.dart"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd98d7c199b194eb1ed00e8e3e1ac240c0228c2a5fc426d65f5725472f162a6d"}},{"ruleId":"D2","level":"warning","message":{"text":"PubPackageResolutionTest.unexpectedMessage (cognitive 17): PubPackageResolutionTest.unexpectedMessage has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 2 (4 pts), match/switch 1 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/src/analysis_rule/pub_package_resolution.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb34ed705b395cf6f74d712c42561db092d18b9054df90cd18397d9584db0056"}},{"ruleId":"D2","level":"warning","message":{"text":"InferrerEngine._updateSideEffects (cognitive 17): InferrerEngine._updateSideEffects has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (16 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7258144c985becd5e8952e811a77c1a281ee2e7a634bff5e421701ba4ee676"}},{"ruleId":"D2","level":"warning","message":{"text":"InferrerEngine.typeOfNativeBehavior (cognitive 17): InferrerEngine.typeOfNativeBehavior has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13 (15 pts), boolean chains 1, loops 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"1839180e7b1972c7c75ad579a06a88cab644066f3211bf90e533f31a4a9c7fb4"}},{"ruleId":"D2","level":"warning","message":{"text":"MapTypeInformation.computeType (cognitive 17): MapTypeInformation.computeType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 3, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":2167}}}],"partialFingerprints":{"codehealthFindingId/v1":"1901584bead86c6a145dc9ad4b5a25a3ac04b3bfd2507c2df3f6c82ea2de2648"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordTypeMask._isNonTriviallyDisjoint (cognitive 17): RecordTypeMask._isNonTriviallyDisjoint has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bc5b5d080ac6bc572a3c9b9732a0f79a2e5ffe6dd9a59e06fca47bccd36c984"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentEmitter.emitConstructor (cognitive 17): FragmentEmitter.emitConstructor has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 2, loops 1, ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceff5089fd41d6a28a8ce06f6ba6a1d466ffc7ec92743391acceb7d4367790b1"}},{"ruleId":"D2","level":"warning","message":{"text":"FragmentEmitter.emitInstanceMethod (cognitive 17): FragmentEmitter.emitInstanceMethod has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 pts), ternaries 1 (4 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1167}}}],"partialFingerprints":{"codehealthFindingId/v1":"cec3b141714dff035753f7e3695150c461cc4cae86f90ea5b04fbfeb768902c5"}},{"ruleId":"D2","level":"warning","message":{"text":"JsKernelToElementMap.readFromDataSource (cognitive 17): JsKernelToElementMap.readFromDataSource has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 4, boolean chains 2, match/switch 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd4000ba311110462defeb03d3b0cf80775e9abb750774f325b10bb93920a74"}},{"ruleId":"D2","level":"warning","message":{"text":"KLibraryEnv._ensureMemberMaps (cognitive 17): KLibraryEnv._ensureMemberMaps has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/env.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc6ac57f5659174f6b0df3505c035904606e76f8a8965a353fe786bd72c41b04"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.define (cognitive 17): SsaCodeGenerator.define has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 7 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":781}}}],"partialFingerprints":{"codehealthFindingId/v1":"901ac8eac16a494c9bd7ec45c2b9ede39d88ba1f403d3665449ebcf28479e59b"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaCodeGenerator.sequentializeCopies (cognitive 17): SsaCodeGenerator.sequentializeCopies has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 5 (6 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1440}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e3d1fdbdf31c3b259b04cfbeaba2117421055c65779a014254eec8565987d8"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaInstructionSimplifier.visitInvokeDynamicGetter (cognitive 17): SsaInstructionSimplifier.visitInvokeDynamicGetter has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2021}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac3be1d6c8719b670fda6bada7c363519d0e7b707846a14a2757d81d53c6a7d7"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaRedundantPhiEliminator.visitGraph (cognitive 17): SsaRedundantPhiEliminator.visitGraph has cognitive complexity 17 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3655}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f1ac0b619f3afd6bdedcd4f75e842d802a262acf3f2cfec787e8e914dd71ee"}},{"ruleId":"D2","level":"warning","message":{"text":"ValueSet.kill (cognitive 17): ValueSet.kill has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, loops 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/value_set.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"28efa76eda5839c47310ab17436b423fbba49a8784f6af7d02b17c04bd50b183"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolutionWorldBuilder.registerStaticUse (cognitive 17): ResolutionWorldBuilder.registerStaticUse has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 3, match/switch 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"9181725ff49890cca4426fcf9baa336d22c6a009707bf814cc225fabc8cf6fe1"}},{"ruleId":"D2","level":"warning","message":{"text":"Setlet.removeWhere (cognitive 17): Setlet.removeWhere has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/util/setlet.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"736203a708b82ea94a78eed9874664e6a633fbb8208d0ed6e3d01d78b21e1cd2"}},{"ruleId":"D2","level":"warning","message":{"text":"ThreadInfo.resolveUrisToPathsBatch (cognitive 17): ThreadInfo.resolveUrisToPathsBatch has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (11 pts), ternaries 1 (4 pts), error handling 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":1521}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb88ac820dc878337b66156faa5615de3641530e056713be871591e046824dcb"}},{"ruleId":"D2","level":"warning","message":{"text":"EvalPackageResolver.collectDependencies (cognitive 17): EvalPackageResolver.collectDependencies has cognitive complexity 17 (threshold 15). Drivers by points: if/else 3 (7 pts), ternaries 2 (7 pts), loops 2 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/eval_packages.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"69aa6f24bbb0dc1c7a8e86bb7bb8f8a64739a3e189131af7b286d1533946231a"}},{"ruleId":"D2","level":"warning","message":{"text":"_Workspace._listDirectory (cognitive 17): _Workspace._listDirectory has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 1 (2 pts), boolean chains 1, error handling 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/worker.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"788a68d367f4dbcdfc1fa73d05c17aa346aaea39264713bd0de8bbfb5540b2b3"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.getDelimited (cognitive 17): MiniJsParser.getDelimited has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (12 pts), boolean chains 4, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"89840dcec3e1bd7bf4f1d443ef2b440d89a5fd2ce4e223ef7eed5e41eb8b7bcf"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.parseFun (cognitive 17): MiniJsParser.parseFun has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (15 pts), loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1019}}}],"partialFingerprints":{"codehealthFindingId/v1":"3377f4e60baa03adabc604a82c75f575c09b103beeaa4f09fa54b8bacd326f33"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.out (cognitive 17): Printer.out has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 3 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b548291d543966f649dd921cfd5cb934aff8f712841712b95dd11d3848c7027"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._initializeFields (cognitive 17): ProgramCompiler._initializeFields has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (10 pts), boolean chains 3, loops 2 (3 pts), ternaries 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2368}}}],"partialFingerprints":{"codehealthFindingId/v1":"b841c7d0e23226a000c8f3b4413b863c2c2615ac02cef75e9f0006294504f3b0"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitTopLevelFields (cognitive 17): ProgramCompiler._emitTopLevelFields has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), boolean chains 5, loops 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3025}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed349c224e9b135ca0f7ccfac233febfbd3e20c7f4248b9b97a765499ae3cebb"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitArgumentInitializers (cognitive 17): ProgramCompiler._emitArgumentInitializers has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 5, loops 2 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4296}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb8ddb05844f18bdf19dff643c1c2bc48a3a69c82700ed91f2257ec22988861"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._parentMasksToWidth (cognitive 17): ProgramCompiler._parentMasksToWidth has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (15 pts), boolean chains 2 (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6264}}}],"partialFingerprints":{"codehealthFindingId/v1":"f655e36db89bc8453f2eab8734c880aff17a00944357281420a855c1a0239c4b"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitArgumentInitializers (cognitive 17): LibraryCompiler._emitArgumentInitializers has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 5, loops 2 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4892}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b1a9af2cc6f677e44c714554631036287ffd2fb79a60d0c13d3c4545318990"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._parentMasksToWidth (cognitive 17): LibraryCompiler._parentMasksToWidth has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (15 pts), boolean chains 2 (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6953}}}],"partialFingerprints":{"codehealthFindingId/v1":"269ac3acca7bc8d445ad8088625e9bb9a84fcd3dd74b4a5cd1a9d28130a2ef84"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpressionCompilerWorker._collectTransitiveDependencies (cognitive 17): ExpressionCompilerWorker._collectTransitiveDependencies has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (5 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler_worker.dart"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa50c53a3eaab02b61a155ecb40b69608ebbdebecbf7b260d0e2d2b655322aa0"}},{"ruleId":"D2","level":"warning","message":{"text":"Modules.initialize (cognitive 17): Modules.initialize has cognitive complexity 17 (threshold 15). Drivers by points: loops 3 (9 pts), if/else 3 (8 pts) (nesting depth added 11). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/modules.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d454dfa98c79fc3608c0ddfbe31df5c094d2225ed8765a497b7678ec9e61d0b"}},{"ruleId":"D2","level":"warning","message":{"text":"MetadataBuilder.buildAnnotations (cognitive 17): MetadataBuilder.buildAnnotations has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (14 pts), loops 2, boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/metadata_builder.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b747fb330c526916f7fb12855620806ebd73fd514a04bf38d92b0e0ff18bc7"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeLabeler.visitTypedefTearOffConstant (cognitive 17): TypeLabeler.visitTypedefTearOffConstant has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9db82c7ad40799cfa3cd515e913d05090b59ec0b7836db1f6597131d5c64f18"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endArguments (cognitive 17): BodyBuilderImpl.endArguments has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), ternaries 2 (4 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":2916}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eb703ef69f052fad522eb907210d75830af131bbe62d15e48dd53976438a40d"}},{"ruleId":"D2","level":"warning","message":{"text":"_DynamicCallValidator._DynamicCallValidator (cognitive 17): _DynamicCallValidator._DynamicCallValidator has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), match/switch 1 (3 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":1117}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f88a8af3b267ac8bca1345fc4d8684fb856eb5c6f9b20503d1c44108112ee6"}},{"ruleId":"D2","level":"warning","message":{"text":"ExplicitExtensionInstanceAccessGenerator.fromBuilder (cognitive 17): ExplicitExtensionInstanceAccessGenerator.fromBuilder has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (16 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":3130}}}],"partialFingerprints":{"codehealthFindingId/v1":"9786b29931efd2bdfec2b9b96b8e1edf0c5425054f27e89059c884e1c30d47de"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelTarget.installForwardingConstructors (cognitive 17): KernelTarget.installForwardingConstructors has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 1 (2 pts), boolean chains 1, match/switch 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"8181ee108cf6acbbef21d94dd5da9a51aad76f33138645de835e9716d5101912"}},{"ruleId":"D2","level":"warning","message":{"text":"ComputeDefaultTypeContext.computeDefaultTypesForVariables (cognitive 17): ComputeDefaultTypeContext.computeDefaultTypesForVariables has cognitive complexity 17 (threshold 15). Drivers by points: loops 3 (8 pts), if/else 5 (7 pts), boolean chains 2 (nesting depth added 7). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/type_algorithms.dart"},"region":{"startLine":973}}}],"partialFingerprints":{"codehealthFindingId/v1":"2860bc68d1640cc2047b0320e7b1d7ea8e9decdc9d4192e1201b5b1a8d42ea7b"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.beginFields (cognitive 17): OutlineBuilder.beginFields has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (16 pts), match/switch 1 (nesting depth added 5). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":4072}}}],"partialFingerprints":{"codehealthFindingId/v1":"d517b1eff1109e15fd04349939522431400d17ac333f76c52fda357cc0323049"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitMapOrSetLiteral (cognitive 17): InferenceVisitorImpl.visitMapOrSetLiteral has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (11 pts), boolean chains 4, loops 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5260}}}],"partialFingerprints":{"codehealthFindingId/v1":"d06f6335ba007b0f632eef33e6714569c76e1a1ffc74fdafb2ed93439de175d2"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitIfNullIndexSet (cognitive 17): InferenceVisitorImpl.visitIfNullIndexSet has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15 (17 pts) (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6821}}}],"partialFingerprints":{"codehealthFindingId/v1":"786800c50ffafa6a79aefcd5fb5c8bfae02226b9f17d4aa2a78535555d62a0e2"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitCompoundSuperIndexSet (cognitive 17): InferenceVisitorImpl.visitCompoundSuperIndexSet has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, boolean chains 3, ternaries 3. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8671}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5e20d34410cbead7ea436217e202e6ab500a899cdacd43963899974cafff30f"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitExtensionCompoundIndexSet (cognitive 17): InferenceVisitorImpl.visitExtensionCompoundIndexSet has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15, boolean chains 1, ternaries 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8856}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85a6066fcf162a1e2ddbdbc2b3cdbfc14a389d2fb63e313f40a28fa973a5d18"}},{"ruleId":"D2","level":"warning","message":{"text":"MiniJsParser.getRegExp (cognitive 17): MiniJsParser.getRegExp has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (12 pts), boolean chains 4, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"e71ef9a65b32679732754e0513b582859eb0af0b2ea1f3cfa66c5d41782faf8b"}},{"ruleId":"D2","level":"warning","message":{"text":"ReplacementVisitor.visitFunctionType (cognitive 17): ReplacementVisitor.visitFunctionType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 5 (7 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/replacement_visitor.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"c04ab5fc14a53791af52d8834561aa510479fff1f9bec2f3cbe16ab2519bfff8"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitMethodDeclaration (cognitive 17): _Visitor.visitMethodDeclaration has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_returning_this.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4556d03df97e9f1508d4c45a6e4d33ca19742c47785ae4a0fc3bbd458b8c97d"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitPrimaryConstructorBody (cognitive 17): _Visitor.visitPrimaryConstructorBody has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (16 pts), loops 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/initialize_in_field_declaration.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a91bc63ec9eac4ec7c6265ad08a7319495179de8e3d3cb9a29fb4ce3a6afe1"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitMethodDeclaration (cognitive 17): _Visitor.visitMethodDeclaration has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12 (17 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/no_logic_in_create_state.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2a94c65ea5abe6da4767e6cdfa6f56b528e220bc6609f29df9a17c609832a53"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitFunctionExpression (cognitive 17): _Visitor.visitFunctionExpression has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 5 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_lambdas.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"6169850e40a0f36cdc77aa9453ca6370ffda71b0d584bb573201a3b620cfc26d"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.checkMethodCallback (cognitive 17): _Visitor.checkMethodCallback has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 2 (4 pts), boolean chains 2, ternaries 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"698d701891f62e4d500aa7d6ee40b3a4c8c3cc175bf835670f134a6bd8d0e687"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitPrimaryConstructorDeclaration (cognitive 17): _Visitor.visitPrimaryConstructorDeclaration has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (13 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_late_for_private_fields_and_variables.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd74067933bbbb824871ec35e5ce9ef062c28b8ac90141d9e4f503973592544"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitMethodDeclaration (cognitive 17): _Visitor.visitMethodDeclaration has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 6 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_setters_to_change_properties.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"4010604aea4af034ee4b665b151dc8302e8a09a635e69a0095ef04a9eacb43d8"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitInstanceCreationExpression (cognitive 17): _Visitor.visitInstanceCreationExpression has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (9 pts), boolean chains 4, error handling 1 (4 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/valid_regexps.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"57a6059371ebd6c2b9be62d4426d177775d5f50e142dd912e53c6bf152ffc34f"}},{"ruleId":"D2","level":"warning","message":{"text":"InstanceRef.toJson (cognitive 17): InstanceRef.toJson has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":5166}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b267266932a6b51109cdfc8171e8a0dacab9cef513762689ee8fc4bc87754c"}},{"ruleId":"D2","level":"warning","message":{"text":"BinaryenInlineHintSection.deserialize (cognitive 17): BinaryenInlineHintSection.deserialize has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":1235}}}],"partialFingerprints":{"codehealthFindingId/v1":"82b2e25ee040804297627a2aa8a87000deb8d6dc1230ed3f47a18c9453261463"}},{"ruleId":"D2","level":"warning","message":{"text":"UnaryOperation.apply (cognitive 17): UnaryOperation.apply has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8 (14 pts), ternaries 1 (2 pts), match/switch 1 (nesting depth added 7). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":812}}}],"partialFingerprints":{"codehealthFindingId/v1":"064edea9885d8b0e207db167f93bbc8557cb6dc650590b48dda7cc07a010dbdb"}},{"ruleId":"D2","level":"warning","message":{"text":"SummaryCollector._mergeVariableValues (cognitive 17): SummaryCollector._mergeVariableValues has cognitive complexity 17 (threshold 15). Drivers by points: if/else 7 (9 pts), boolean chains 7, loops 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8cc5b730c3accaaa52288e9571a331c9110ec78b341fcbae69da1b172893ed6"}},{"ruleId":"D2","level":"warning","message":{"text":"list_dart_files_as_depfile.main (cognitive 17): list_dart_files_as_depfile.main has cognitive complexity 17 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (5 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/list_dart_files_as_depfile.py"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"812e7a9a369c9768b422cb2b02724924bb09bbd5658725f6e6717d6fc9da5da3"}},{"ruleId":"D2","level":"warning","message":{"text":"utils.HostArchitectures (cognitive 17): utils.HostArchitectures has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11 (15 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"d49ac187f7d979e5678bedef8377a4c294d96f8d4e96baa9bdc49e5404432b37"}},{"ruleId":"D2","level":"warning","message":{"text":"showTables (cognitive 17): showTables has cognitive complexity 17 (threshold 15). Drivers by points: if/else 9 (13 pts), loops 3, ternaries 1 (nesting depth added 4). Most of this is not in the body itself: 7 of the 17 points are its own statements and the rest belongs to 7 function items inside it that branch ((anonymous), (anonymous), onchange, \u2026). Those helpers are already separate functions, so extracting the branching again is not available. To reduce it, move them out of the body to the enclosing scope, where each is measured, reviewed and tested on its own, and reduce whichever one then reads as the largest."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1835}}}],"partialFingerprints":{"codehealthFindingId/v1":"3faccb621e18cc14ce469c4694a6df61dbc081b1612be97cc0bc8d395ca4b5a9"}},{"ruleId":"D2","level":"warning","message":{"text":"JsInteropChecks._isAllowedExternalType (cognitive 16): JsInteropChecks._isAllowedExternalType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (10 pts), boolean chains 6 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":985}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b02e0d707c691a384ee132e8c22169a2a1fd716937bf637adf1c2801371c49e"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractScanner.tokenize (cognitive 16): AbstractScanner.tokenize has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (8 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":938}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dd161a191a2a5b7a9532eed8ef63fce9129a99fa2efcc6091ff22221299ba7e"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeShapeMetricsComputer._computeInContext (cognitive 16): CodeShapeMetricsComputer._computeInContext has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (7 pts), loops 2 (6 pts), error handling 1 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/code_metrics.dart"},"region":{"startLine":1296}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ad8b36bcb88bb420fd0cddb5875d68e1cc64304d9d9001bfafecc8f44313030"}},{"ruleId":"D2","level":"warning","message":{"text":"FlutterMetricsComputer._computeInContext (cognitive 16): FlutterMetricsComputer._computeInContext has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (7 pts), loops 2 (6 pts), error handling 1 (3 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/flutter_metrics.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"efa40839316cc43fa7efd71695957f863773c331bb28a30f3315175976d43a93"}},{"ruleId":"D2","level":"warning","message":{"text":"_ConcreteAstVisitorGenerator._writeGeneralizing (cognitive 16): _ConcreteAstVisitorGenerator._writeGeneralizing has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"df40732ce35b52e56f6dac8d26f3ec5b14cba1a39d69c105a4c8d68583caff26"}},{"ruleId":"D2","level":"warning","message":{"text":"_Generator._generateSnapshot (cognitive 16): _Generator._generateSnapshot has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 2, ternaries 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2native/lib/generate.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"1846969909653da60934cf5e7cc8938c0a9f337e5096d1eea4581617c4e16778"}},{"ruleId":"D2","level":"warning","message":{"text":"AstCodeGenerator.visitVariable (cognitive 16): AstCodeGenerator.visitVariable has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), boolean chains 4, ternaries 1 (3 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"56adfb5a25d54653002ac78caa07879d7ef3b69154296f8444762c2753f1eabe"}},{"ruleId":"D2","level":"warning","message":{"text":"AstCodeGenerator.visitStringConcatenation (cognitive 16): AstCodeGenerator.visitStringConcatenation has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (10 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":2937}}}],"partialFingerprints":{"codehealthFindingId/v1":"746871badcd514f1a81c4c2a0006061c963491c1f299b069989964ab76c14d23"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantCreator.visitAuxiliaryConstant (cognitive 16): ConstantCreator.visitAuxiliaryConstant has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (11 pts), loops 1 (4 pts), boolean chains 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1650}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dd549cb878bbfb4a6ecc46f7f643151f5c591c86d159a79eae717ecbf9a4014"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorInfo.ConstructorInfo (cognitive 16): ConstructorInfo.ConstructorInfo has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 2, boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constructor_info.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"5962b2e3f5d136af92e5dfd6d86b7bcbc5d525055252abd6fba02d476da1e6d2"}},{"ruleId":"D2","level":"warning","message":{"text":"Translator.translateExternalType (cognitive 16): Translator.translateExternalType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1216}}}],"partialFingerprints":{"codehealthFindingId/v1":"e44e61fac6f108ca1facdd1cbb34c34db3b9a1a3212a82db7b669a67d3480e66"}},{"ruleId":"D2","level":"warning","message":{"text":"Translator._filterInferredType (cognitive 16): Translator._filterInferredType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (13 pts), boolean chains 2, ternaries 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":2163}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1045bf5e1f236b7c93f65ab9e0d35d4a914dc1de42748a6ebce44924e828807"}},{"ruleId":"D2","level":"warning","message":{"text":"Types.emitAsCheck (cognitive 16): Types.emitAsCheck has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (10 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"94296cac8a390b476b26a3d466b78d454cc8de1943898df0334dc116210cc0d9"}},{"ruleId":"D2","level":"warning","message":{"text":"_AstIndexerAndIgnoreCollectorBody._recordIfIsCallToNotExpectedCoverage (cognitive 16): _AstIndexerAndIgnoreCollectorBody._recordIfIsCallToNotExpectedCoverage has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 12, if/else 3 (4 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":1300}}}],"partialFingerprints":{"codehealthFindingId/v1":"92baff2d791fb61e8215bfa7ff917ccbe0cb0a585d1d0cccb3890cfa0ad76373"}},{"ruleId":"D2","level":"warning","message":{"text":"_SnapshotGraph._buildOwnedSizes (cognitive 16): _SnapshotGraph._buildOwnedSizes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (8 pts), loops 4 (5 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":1266}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcec8d8212eb421a5ab7d9adeb6c49b1511f7bb34a5fcf4e304d029c80d23f55"}},{"ruleId":"D2","level":"warning","message":{"text":"DartFuzz.emitLiteral (cognitive 16): DartFuzz.emitLiteral has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14 (16 pts) (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":2026}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e30291cfc78d65fe7046a77ff038fbce68c4fa4fb1515763007d7edf6f48928"}},{"ruleId":"D2","level":"warning","message":{"text":"_HttpHeaders._addContentLength (cognitive 16): _HttpHeaders._addContentLength has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"164144f01088ddb815529a9ee0e9790f4d5895d34a3723da82b8a6e2b155b61f"}},{"ruleId":"D2","level":"warning","message":{"text":"_WebSocketImpl.connect (cognitive 16): _WebSocketImpl.connect has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (10 pts), boolean chains 4, loops 1, ternaries 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":1356}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e7823e368ef98ae3396726475d58ebba39d9265dede071a0f178006de12391f"}},{"ruleId":"D2","level":"warning","message":{"text":"CustomHashMap.putIfAbsent (cognitive 16): CustomHashMap.putIfAbsent has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b61d4a8f83779b02f06f7568a313b2e51913943bff424fa44b17cbe1a7c4adc"}},{"ruleId":"D2","level":"warning","message":{"text":"JSNumber.compareTo (cognitive 16): JSNumber.compareTo has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_number.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"be67de43b9d2986dc7d43ff4a5db67c2ded02a238e0489d95f56920248ceca1a"}},{"ruleId":"D2","level":"warning","message":{"text":"Expando.[]= (cognitive 16): Expando.[]= has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (14 pts), boolean chains 1, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/expando_patch.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ec3dc8ab4c76897c8e94392cadbfd1b069c591d92a785e430922a70a1057eb1"}},{"ruleId":"D2","level":"warning","message":{"text":"_OneByteString.indexOf (cognitive 16): _OneByteString.indexOf has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), boolean chains 3, loops 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (_OneByteString.contains) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1087}}}],"partialFingerprints":{"codehealthFindingId/v1":"985f22871b62ec26e229825c5277528f6b028872d977de75c30f741addd3138e"}},{"ruleId":"D2","level":"warning","message":{"text":"_OneByteString.contains (cognitive 16): _OneByteString.contains has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), boolean chains 3, loops 1 (3 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (_OneByteString.indexOf) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1110}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e013b404c346287893b5ca54ffbb983e89b29bce72c64eb45066fb26d8e7614"}},{"ruleId":"D2","level":"warning","message":{"text":"_LinkedHashSetMixin._add (cognitive 16): _LinkedHashSetMixin._add has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 2, ternaries 1 (2 pts), loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"d57f4a0492ea2f568d85873602c56e708dc024f16089747e47182e23b24e1176"}},{"ruleId":"D2","level":"warning","message":{"text":"_LinkedHashSetMixin._add (cognitive 16): _LinkedHashSetMixin._add has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), boolean chains 2, ternaries 1 (2 pts), loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bec463110254512a29a668caed98c381e9fbf12467558ca25b8300aaed2b27a"}},{"ruleId":"D2","level":"warning","message":{"text":"_Utf8Decoder.decode16 (cognitive 16): _Utf8Decoder.decode16 has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (15 pts), loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2659}}}],"partialFingerprints":{"codehealthFindingId/v1":"527319ce3d6e5286327f2de1bf3ccf1347e52ea4344a7fbd4ad5f8891eb7618d"}},{"ruleId":"D2","level":"warning","message":{"text":"_FunctionType.== (cognitive 16): _FunctionType.== has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 3 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"733f77f3c9e3215352c1bdbfc523f1658bc213814a569bc591b0cfaa5e384b34"}},{"ruleId":"D2","level":"warning","message":{"text":"_StreamController._recordCancel (cognitive 16): _StreamController._recordCancel has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), error handling 1 (3 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream_controller.dart"},"region":{"startLine":722}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3257ba24591f9386b12a7ec2b9647140caab953effe9c3ee17b484fe1e78d63"}},{"ruleId":"D2","level":"warning","message":{"text":"SplayTreeMap.update (cognitive 16): SplayTreeMap.update has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (16 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/splay_tree.dart"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"d67ee832430060b75adbb35888b2404ea8a65b05a43ff01f07bb547e37520fff"}},{"ruleId":"D2","level":"warning","message":{"text":"_Base64Decoder._trimPaddingChars (cognitive 16): _Base64Decoder._trimPaddingChars has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (14 pts), boolean chains 1, loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/base64.dart"},"region":{"startLine":803}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5104a1ba026afdc080aa666110fd5cd5530ac42e1ba75c6feb12123f3fb548d"}},{"ruleId":"D2","level":"warning","message":{"text":"_Uri._Uri (cognitive 16): _Uri._Uri has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, boolean chains 7. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":1933}}}],"partialFingerprints":{"codehealthFindingId/v1":"608ac783061deb63933e691424afdff12ff7eb66a20d261d9c6334ff5c94b08b"}},{"ruleId":"D2","level":"warning","message":{"text":"UriData.contentAsBytes (cognitive 16): UriData.contentAsBytes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (14 pts), loops 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":4148}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e4d0339286de4ccb71d8d21c67f2f9f0a5070fca78e25df055b873496fd6417"}},{"ruleId":"D2","level":"warning","message":{"text":"AstToIr.visitTryCatch (cognitive 16): AstToIr.visitTryCatch has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 2, boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd01eece93f0a34eeaee9fa585ab7705686fd9b3a0b3a222987b565b78751ce0"}},{"ruleId":"D2","level":"warning","message":{"text":"_ScopeBuilder._visitFunction (cognitive 16): _ScopeBuilder._visitFunction has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 1 (3 pts), boolean chains 2, match/switch 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/computed_scopes.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e172596b7c67fcc6ef2d50265af3b6c7feccd2147e3b74b6cd90f07e75e9e32"}},{"ruleId":"D2","level":"warning","message":{"text":"ListIterable.join (cognitive 16): ListIterable.join has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 2 (4 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/iterable.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"9470e00da92551c1d5bcba36460e5ac1ae203e469e96fa41e67fe823e54bed5b"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiDefinitionTransformer._checkCompoundClass (cognitive 16): _FfiDefinitionTransformer._checkCompoundClass has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 5 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"38cb005f9ba556ac7c055639709efcf3dfb6500829fcd83c48b84dc81f7d2821"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiUseSiteTransformer._extendsOrImplementsSealedClass (cognitive 16): _FfiUseSiteTransformer._extendsOrImplementsSealedClass has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 8, if/else 4 (7 pts), loops 1 (nesting depth added 3). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":1949}}}],"partialFingerprints":{"codehealthFindingId/v1":"611aa3bfb3121e9fdb1ba471853e51f82a4e47ed5a647d28688616544b2951f0"}},{"ruleId":"D2","level":"warning","message":{"text":"_FfiUseSiteTransformer._replaceNativeCall (cognitive 16): _FfiUseSiteTransformer._replaceNativeCall has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (9 pts), match/switch 2 (3 pts), boolean chains 2, loops 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":2106}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d4055cb9995337f6ce72b95dc00fabf0a1393b127e81fc6b1ad313c52c1bbb3"}},{"ruleId":"D2","level":"warning","message":{"text":"FormattedMessage.toJson (cognitive 16): FormattedMessage.toJson has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 2 (5 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/messages/codes.dart"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"74594f15a9fb706e47de83759e35ac86cfd9257b7a458b735db30ea504e6c9e3"}},{"ruleId":"D2","level":"warning","message":{"text":"ForCondition.computeNext (cognitive 16): ForCondition.computeNext has cognitive complexity 16 (threshold 15). Drivers by points: ternaries 5 (9 pts), if/else 4, boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"d30a7f1e8e24b7750e7b2ed38e266e825d9f7187851c6e633dade994646c0fdd"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseSuperInitializerExpression (cognitive 16): Parser.parseSuperInitializerExpression has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (16 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4917}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a910472d21d4f64c2721b207066aab453a2fcfc15ca464afdf7af6aca43fe5"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parsePrecedenceExpression (cognitive 16): Parser.parsePrecedenceExpression has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (15 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7056}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2412c0c911625a7a1f7b5b78df6f2dd9f22ccb2467ae0a78c26372144400b97"}},{"ruleId":"D2","level":"warning","message":{"text":"Parser.parseExpressionStatementOrDeclaration (cognitive 16): Parser.parseExpressionStatementOrDeclaration has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 5 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9791}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e10d71f979e2359072e71378a1fa78314cc2195a8cad31314dad7c62aa56f61"}},{"ruleId":"D2","level":"warning","message":{"text":"_StringCanonicalizer.canonicalizeBytes (cognitive 16): _StringCanonicalizer.canonicalizeBytes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 2 (5 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/string_canonicalizer.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7f90f6d816351fb257bb8c4d971177f86ba35001c623dd4f802110f7131cfd5"}},{"ruleId":"D2","level":"warning","message":{"text":"Utf8BytesScanner.passIdentifierCharAllowDollar (cognitive 16): Utf8BytesScanner.passIdentifierCharAllowDollar has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 10, if/else 2 (4 pts), loops 2 (nesting depth added 2). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"5872bd4d3277c30627d9763bc42d2eb04cb7524839c242e3ff74daf5d1941f3e"}},{"ruleId":"D2","level":"warning","message":{"text":"JsUtilOptimizer._lowerToCallUnchecked (cognitive 16): JsUtilOptimizer._lowerToCallUnchecked has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9da1f955f2ac511021a09fa46ad58b9b1367f276cb03acab553987cebbd4c82"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticInteropMockValidator._implements (cognitive 16): StaticInteropMockValidator._implements has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 3 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/static_interop_mock_validator.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb8eaded5e985420a9eb8a4804b2233713dee202c9e23b742e45dc566a744d03"}},{"ruleId":"D2","level":"warning","message":{"text":"DartDocumentationComputer.compute (cognitive 16): DartDocumentationComputer.compute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 3, loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_documentation.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e4f1e7400f17f88bddb1c9eb1265ec748ecaf0d9ee186f1378a5dea3d3ccfcf"}},{"ruleId":"D2","level":"warning","message":{"text":"LegacyAnalysisServer.updateContent (cognitive 16): LegacyAnalysisServer.updateContent has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), error handling 2 (3 pts), loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":1121}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba1d06b3f29d20ab6945a84fc78d297eae7797b785ef31cc2be4b76c412e660b"}},{"ruleId":"D2","level":"warning","message":{"text":"MigrationSummaryBuilder._writeStepFixes (cognitive 16): MigrationSummaryBuilder._writeStepFixes has cognitive complexity 16 (threshold 15). Drivers by points: loops 4 (8 pts), ternaries 4 (7 pts), if/else 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/migration/migration_summary_builder.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f8017a39b3ee29950768efaa83c1c99c47617c1b8506d7be27f8ec8997b792"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletionHandler.handle (cognitive 16): CompletionHandler.handle has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), ternaries 3, boolean chains 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b0c399ec50bfc20753e65818a043d5892303e6b8ba32b3e398505761fa1ff5d"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper.addParametersFromSuperConstructor (cognitive 16): DeclarationHelper.addParametersFromSuperConstructor has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":624}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e21af2749c51b78bc9d6b0048b675edcb2114c3420d9bcfc4cb8de595d9a3c5"}},{"ruleId":"D2","level":"warning","message":{"text":"DeclarationHelper._suggestTopLevelFunction (cognitive 16): DeclarationHelper._suggestTopLevelFunction has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (11 pts), boolean chains 5 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2819}}}],"partialFingerprints":{"codehealthFindingId/v1":"086c56297e6a8c7a705202fba3144157e48ef5e286564bf8c9be7e320687bc46"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitEmptyStatement (cognitive 16): InScopeCompletionPass.visitEmptyStatement has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (15 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a0514410155d78f6d8c668414a13d3f90edd3ab747f8ff6019510bfe1d18bd8"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass.visitFieldFormalParameter (cognitive 16): InScopeCompletionPass.visitFieldFormalParameter has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 3 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1447}}}],"partialFingerprints":{"codehealthFindingId/v1":"25920a4585a1174f66916050c293c7668b2af6bc8e828765f76aa3442a1808cb"}},{"ruleId":"D2","level":"warning","message":{"text":"InScopeCompletionPass._suggestRecordLiteralNamedFields (cognitive 16): InScopeCompletionPass._suggestRecordLiteralNamedFields has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 1, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4499}}}],"partialFingerprints":{"codehealthFindingId/v1":"f86007b18be2db1b07794f7736b1fc29e7d2bb27817c16090234e3ffbe485d80"}},{"ruleId":"D2","level":"warning","message":{"text":"FilePathProducer.suggestions (cognitive 16): FilePathProducer.suggestions has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6, ternaries 1 (4 pts), loops 1 (3 pts), error handling 1 (2 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/producer.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcf6647db146dcf487cfcb5baebc4ea2a636b86ea95356404557e3a1e2e1c77d"}},{"ruleId":"D2","level":"warning","message":{"text":"AddMissingEnumLikeCaseClauses.compute (cognitive 16): AddMissingEnumLikeCaseClauses.compute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (4 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddf414446ba4bd1d973647250ecf527dcb0a156ca1cd3229c21cfc509133b2d2"}},{"ruleId":"D2","level":"warning","message":{"text":"AddMissingEnumLikeCaseClauses._caseValues (cognitive 16): AddMissingEnumLikeCaseClauses._caseValues has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d5dfdba410c197dd74e543b7128ceef556bf7a6b5fd796a1029f8d608ff7b2"}},{"ruleId":"D2","level":"warning","message":{"text":"AddSuperConstructorInvocation.producers (cognitive 16): AddSuperConstructorInvocation.producers has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_super_constructor_invocation.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"af78c751216788374a1bca112bd6d66ee551124d09c082b6b946615702127a94"}},{"ruleId":"D2","level":"warning","message":{"text":"ChangeTypeAnnotation.compute (cognitive 16): ChangeTypeAnnotation.compute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 4 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/change_type_annotation.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"627ebabb7e55f7c65c52ec8292617e758e3f337c18ca670c49b2fdd218ea84e9"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertIntoForIndex.compute (cognitive 16): ConvertIntoForIndex.compute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, boolean chains 3, ternaries 1. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_for_index.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eace2136f804116b75a7cd0ba5077e23a3669efe5c31cba786b49de672c36f6"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToIfNull._useToConvertNullsToBools (cognitive 16): ConvertToIfNull._useToConvertNullsToBools has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 4 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_if_null.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"02aa14f2c4a76220178ba134a092f87144722b77565a0329be6040f47edae7a0"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToPrimaryConstructor.compute (cognitive 16): ConvertToPrimaryConstructor.compute has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 9, if/else 7. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_primary_constructor.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9020ed4c4cc7867825efdc4ce49c85ebfbd3c0ad32ea9519c7b4e80c2ce947e"}},{"ruleId":"D2","level":"warning","message":{"text":"ConvertToSuperParameters._findConstructor (cognitive 16): ConvertToSuperParameters._findConstructor has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (16 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"fac90507ea76e91bc4884cd2a062815e75a045f124c303a4abe2555afe8f7a42"}},{"ruleId":"D2","level":"warning","message":{"text":"CreateMethodOrFunction.compute (cognitive 16): CreateMethodOrFunction.compute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 4 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_method_or_function.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a9725307b65f362afb4eb290f15adea865a38ab9c87e366de87e2d669e8a787"}},{"ruleId":"D2","level":"warning","message":{"text":"ImportLibrary._namesForExtensionMember (cognitive 16): ImportLibrary._namesForExtensionMember has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (14 pts), boolean chains 1, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/import_library.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"70eedfd569bbd7622864ede975f2b9a383b722a6f619b521842487f76cc5eb72"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveComparison.compute (cognitive 16): RemoveComparison.compute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (11 pts), boolean chains 5 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_comparison.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"da87cb5a245e765daf2d7b611de862596d5de9decff1ba1a91411e8cac94ac08"}},{"ruleId":"D2","level":"warning","message":{"text":"RemoveTypeAnnotation.compute (cognitive 16): RemoveTypeAnnotation.compute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff8e0ddb3c4bb875e73ad57110f5385a218a89734a54c60b828cbb185f4d5c19"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameMethodParameter.compute (cognitive 16): RenameMethodParameter.compute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/rename_method_parameter.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"51152f339c2d6963ed688e7191d8937594fdce9ed8772f5afa21280e6a64c00d"}},{"ruleId":"D2","level":"warning","message":{"text":"SortChildPropertyLast.compute (cognitive 16): SortChildPropertyLast.compute has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (13 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 3). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/sort_child_property_last.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e05e5a0712f09ecddde96505056b13afb82b57ad3209fb09f6c19237f9a33c"}},{"ruleId":"D2","level":"warning","message":{"text":"MemberSorter._sortClassMembers (cognitive 16): MemberSorter._sortClassMembers has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/sort_members.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb91e875cdcb2754ff840326b3e0041c4d69165addf87b3dfa9ca6e93ad1e371"}},{"ruleId":"D2","level":"warning","message":{"text":"_WidgetDescriptionComputer._addProperties (cognitive 16): _WidgetDescriptionComputer._addProperties has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 2 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/widget_descriptions.dart"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"daf4245c75313e9c2ebd654b308d5e031365b46ee27d60e8e5e43949ea915e8f"}},{"ruleId":"D2","level":"warning","message":{"text":"_ExtractMethodAnalyzer.visitSimpleIdentifier (cognitive 16): _ExtractMethodAnalyzer.visitSimpleIdentifier has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":1151}}}],"partialFingerprints":{"codehealthFindingId/v1":"35a53eec03e052181f113f04fbddcc3e32484beadb5dec8af0f56dc7fc00633a"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameRefactoring.create (cognitive 16): RenameRefactoring.create has cognitive complexity 16 (threshold 15). Drivers by points: if/else 15 (16 pts) (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a248d912ae03ba62c32bc01dac76552169ef931e3f21a8a6187e819634521fa"}},{"ruleId":"D2","level":"warning","message":{"text":"RenameImportRefactoringImpl.buildChange (cognitive 16): RenameImportRefactoringImpl.buildChange has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_import.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5b7dcbd7b82ca24b75c107b349bb29b785490cffb7beedb827b7cd1f3b25522"}},{"ruleId":"D2","level":"warning","message":{"text":"_BaseUnitMemberValidator._validateWillShadow (cognitive 16): _BaseUnitMemberValidator._validateWillShadow has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (9 pts), loops 2 (3 pts), ternaries 1 (3 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_unit_member.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"8280edb035f4f43ad65aa5b874f8f2b6522b4fdfd65214548cb1def0bc3d51dc"}},{"ruleId":"D2","level":"warning","message":{"text":"VisibleRangesComputer._patternVariableRange (cognitive 16): VisibleRangesComputer._patternVariableRange has cognitive complexity 16 (threshold 15). Drivers by points: if/else 2 (6 pts), match/switch 2 (5 pts), ternaries 1 (4 pts), loops 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/visible_ranges_computer.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"62d1859e320f4bfd4464edc354771f75df1c0b9b2d04b05b552e4a098a2a243a"}},{"ruleId":"D2","level":"warning","message":{"text":"SurveyManager.checkForSurveys (cognitive 16): SurveyManager.checkForSurveys has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), loops 1 (2 pts), boolean chains 1, error handling 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/user_prompts/survey_manager.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee233d4e40048db8df5ced533983b4d5c14b474a247546a1473c31c5daa880b4"}},{"ruleId":"D2","level":"warning","message":{"text":"AstWriter._getName (cognitive 16): AstWriter._getName has cognitive complexity 16 (threshold 15). Drivers by points: if/else 15 (16 pts) (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/utilities/ast_writer.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"940397707dbf002b4ea3359f4c7eaaf87b2e975fb7b6d0e0bcf68388472d906d"}},{"ruleId":"D2","level":"warning","message":{"text":"PluginServer._canUseParsedResult (cognitive 16): PluginServer._canUseParsedResult has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3 (5 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa44dafe2eeb14497ab2e2fa6964b1d38572567373c3604f1feb6ad38052d5bc"}},{"ruleId":"D2","level":"warning","message":{"text":"_ParsedErrorProcessorsData.parse (cognitive 16): _ParsedErrorProcessorsData.parse has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (13 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ebecc15a2d06562277f9ac0195ef5322703919e14144be554643a0a25721cfc"}},{"ruleId":"D2","level":"warning","message":{"text":"_ContextLocator._loadWorkspaceDetailsFromPubspec (cognitive 16): _ContextLocator._loadWorkspaceDetailsFromPubspec has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_locator.dart"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"2197a7886a92366c407a5b57b2a59e98f3fb8b65c5ba0793a732d2337a04652c"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisDriver.dispose2 (cognitive 16): AnalysisDriver.dispose2 has cognitive complexity 16 (threshold 15). Drivers by points: loops 11 (16 pts) (nesting depth added 5). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5a7f307c87a3d8e732b3c71f78351289ddba391e563bcae5ce693feeb04f80a"}},{"ruleId":"D2","level":"warning","message":{"text":"AnalysisDriver.getLibraryByUri (cognitive 16): AnalysisDriver.getLibraryByUri has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 1, match/switch 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ff9b81326bd561e262806bc29353b52ee8e84fc27f9e23ce04f549bea1dbc80"}},{"ruleId":"D2","level":"warning","message":{"text":"_DiscoverAvailableFilesJob._discoverChildren (cognitive 16): _DiscoverAvailableFilesJob._discoverChildren has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 1 (2 pts), boolean chains 1, error handling 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":3170}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2666b066887e5c516fae7bc284a655cbbe7e07a434920da8ded7e00fe0f6fcb"}},{"ruleId":"D2","level":"warning","message":{"text":"EvictingFileByteStore._cleanUpFolder (cognitive 16): EvictingFileByteStore._cleanUpFolder has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (8 pts), error handling 3 (6 pts), loops 2 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_byte_store.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"37c6669b0424b25879e13e404f40e90489a5bc21faec6efe2c32621ab9976093"}},{"ruleId":"D2","level":"warning","message":{"text":"FileKind.collectTransitive (cognitive 16): FileKind.collectTransitive has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (10 pts), loops 3 (6 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"b67b200eafb229a055afd39547a972d4b0f33c39a02ca319f769ffab32c32e5a"}},{"ruleId":"D2","level":"warning","message":{"text":"AstNodeImpl._containsOffset (cognitive 16): AstNodeImpl._containsOffset has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (11 pts), boolean chains 5 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":3578}}}],"partialFingerprints":{"codehealthFindingId/v1":"278446924ae2f58f0ee16eca52b769069f740d98cfd8766d99f3b9602878f446"}},{"ruleId":"D2","level":"warning","message":{"text":"ChildEntities.syntacticEntities (cognitive 16): ChildEntities.syntacticEntities has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (5 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7526}}}],"partialFingerprints":{"codehealthFindingId/v1":"70869ba1aacb80c22bff415c8b83e65dea781bcabf5c3a3a0c2acfcae842e6c6"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier.visitConstantPattern (cognitive 16): ConstantVerifier.visitConstantPattern has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (16 pts) (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"33abe11dbf1ab982a3ba02b3aca734bcf23c3bc3b1a3b45ae4542c8e8158299d"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantVerifier._validateSwitchStatement_nullSafety (cognitive 16): ConstantVerifier._validateSwitchStatement_nullSafety has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (15 pts), loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1171}}}],"partialFingerprints":{"codehealthFindingId/v1":"899f96866078116c33f46e3042de92b70f8c201e384711cd8cbbedc46ddba49d"}},{"ruleId":"D2","level":"warning","message":{"text":"DartObjectComputer.typeInstantiate (cognitive 16): DartObjectComputer.typeInstantiate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (16 pts) (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2880}}}],"partialFingerprints":{"codehealthFindingId/v1":"760a3548818515c44884344bda5d54d3679456d4fe14d00e421fc5dc688d29be"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionState.isIdentical (cognitive 16): FunctionState.isIdentical has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (12 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":1467}}}],"partialFingerprints":{"codehealthFindingId/v1":"9feebb24b539307bca6f7a35f3969bf90ed167e04b0f03b346b1bb2c296087f2"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementDisplayStringBuilder._writeFormalParameters (cognitive 16): ElementDisplayStringBuilder._writeFormalParameters has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), ternaries 4, boolean chains 2, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/display_string_builder.dart"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da683b9281323b1792f9329fa00584b0e86152ff5c51bc8519d83c55dd2eebc"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeParameterElementImpl.computeVarianceInType (cognitive 16): TypeParameterElementImpl.computeVarianceInType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (9 pts), loops 3 (6 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11503}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f0fd5946de57d6c192b96b5d3cd178d33013be078bc859cbd8a9c232bb5ab9e"}},{"ruleId":"D2","level":"warning","message":{"text":"LeastUpperBoundHelper._futureOr (cognitive 16): LeastUpperBoundHelper._futureOr has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 7, if/else 5, ternaries 4. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"a68a1edc5f1b5a2fc2025dcbeff0408de054b757019c8da284e5e55ad3673e6a"}},{"ruleId":"D2","level":"warning","message":{"text":"ElementNameUnion.contains (cognitive 16): ElementNameUnion.contains has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/name_union.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"247f8b7fd97a52a6b10681e9ae3adfa70778cb7e41870cfb9ddcf1f4df093d2b"}},{"ruleId":"D2","level":"warning","message":{"text":"SubtypeHelper._interfaceArguments (cognitive 16): SubtypeHelper._interfaceArguments has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/subtype.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"6734004ffbe51d3327a73dc873584bf58dc714c51af8c329263c33b467ea307e"}},{"ruleId":"D2","level":"warning","message":{"text":"AstRewriter.parsedAssignmentTarget (cognitive 16): AstRewriter.parsedAssignmentTarget has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (15 pts), match/switch 1 (nesting depth added 9). The drivers above price the dispatch low by construction \u2014 a dispatch is charged once however many cases it lists, while each branch inside an arm is charged in full \u2014 so most of this count is what the case bodies hold, and the arms are where it can be reduced. To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Keep every case explicit, and make the behaviour for cases you do not list a deliberate choice rather than an accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbcf724cf857b2d0d35472cbd395ea8d3ba78885f7fe4f992d8474d90c28e528"}},{"ruleId":"D2","level":"warning","message":{"text":"AstRewriter.propertyAccess (cognitive 16): AstRewriter.propertyAccess has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13 (16 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9b268cd06a937710609b3251b6b0fcc5878ffd6d839270ae5835b447843efbb"}},{"ruleId":"D2","level":"warning","message":{"text":"ExitDetector.visitSwitchStatement (cognitive 16): ExitDetector.visitSwitchStatement has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (12 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1fa63fd4a14d0f3eac7dfaa1d45c69fca9b34b8a1c00fc2f0e7f3b842f6216b"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementOrDecrementResolver._resolveResult (cognitive 16): IncrementOrDecrementResolver._resolveResult has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (9 pts), ternaries 3 (5 pts), boolean chains 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/increment_or_decrement_resolver.dart"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0b17b2632a30ab6c07161b73497cbfe7d11eaf89cf00c2ee04c29ee24bef9e3"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodInvocationResolver.resolveImportPrefixed (cognitive 16): MethodInvocationResolver.resolveImportPrefixed has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (9 pts), ternaries 3 (5 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dda2b29f5adde0eacf1dfdd06b709d512a7902253908f7950cf09268525527a"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodInvocationResolver._resolveQualifiedInvocation (cognitive 16): MethodInvocationResolver._resolveQualifiedInvocation has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (11 pts), boolean chains 2, ternaries 1 (2 pts), match/switch 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":1227}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b9dcbfac9b7a922ef0f5b6b75a064b83bf1331143e4ad06b100163714123db4"}},{"ruleId":"D2","level":"warning","message":{"text":"TypedLiteralResolver._computeSetOrMapResolution (cognitive 16): TypedLiteralResolver._computeSetOrMapResolution has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (11 pts), boolean chains 3, ternaries 1 (2 pts) (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7fd3d01993429ac0b0c44b7f3b8eb27f9c6139c8f67300bb47edef3adf9042a"}},{"ruleId":"D2","level":"warning","message":{"text":"MustCallSuperVerifier.checkMethodDeclaration (cognitive 16): MustCallSuperVerifier.checkMethodDeclaration has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/must_call_super_verifier.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7563dde6d84559e67df7b8cf548a81d2a43357e828230a72a6d54e429350f8b"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeArgumentsVerifier._checkInvocationTypeArguments (cognitive 16): TypeArgumentsVerifier._checkInvocationTypeArguments has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/type_arguments_verifier.dart"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"a455494188b2011b0913f6d7456747378950d81b416d3619b9f3f66da5b4e989"}},{"ruleId":"D2","level":"warning","message":{"text":"AstBuilder.buildInitializerTargetExpressionRecovery (cognitive 16): AstBuilder.buildInitializerTargetExpressionRecovery has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (11 pts), ternaries 1 (3 pts), loops 1, match/switch 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e9c95915fb911aa39b81d2a5ad7bc257d7de76d06053d4b3b260b6bab2267fb"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryManifestBuilder._computeHashForRequirements (cognitive 16): LibraryManifestBuilder._computeHashForRequirements has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1158}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4682e27caf4f2a5e533d4327480f5c0e77f48d39458d367a76f19f7fffeaa9c"}},{"ruleId":"D2","level":"warning","message":{"text":"ManifestNode.match (cognitive 16): ManifestNode.match has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (14 pts), loops 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_ast.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"300e14a9b460db63a98424d46019bc57f370586e2e013d292594723f64a4aae0"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier.visitSuperFormalParameter (cognitive 16): ErrorVerifier.visitSuperFormalParameter has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), ternaries 1 (2 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":2307}}}],"partialFingerprints":{"codehealthFindingId/v1":"44ec8962db6aef4c8305ed829942e7afb3cf5c78502dd59f167ebceeb09d90d5"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForConstConstructorWithNonConstSuper (cognitive 16): ErrorVerifier._checkForConstConstructorWithNonConstSuper has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 2, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":4570}}}],"partialFingerprints":{"codehealthFindingId/v1":"34bebd2c65da7c8a673b9038c674ddc9fd57ef0aedfa56f375e619d862e8a332"}},{"ruleId":"D2","level":"warning","message":{"text":"ErrorVerifier._checkForFunctionBodyCompleteness (cognitive 16): ErrorVerifier._checkForFunctionBodyCompleteness has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (9 pts), match/switch 2 (5 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5864}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fca0823fecedcbc8a58ec92cff904a50ed37a0fee0d98e2bbb62d0bb0e31b8f"}},{"ruleId":"D2","level":"warning","message":{"text":"_WhyNotPromotedVisitor.visitPropertyNotPromotedForNonInherentReason (cognitive 16): _WhyNotPromotedVisitor.visitPropertyNotPromotedForNonInherentReason has cognitive complexity 16 (threshold 15). Drivers by points: loops 3 (9 pts), if/else 5 (7 pts) (nesting depth added 8). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":6617}}}],"partialFingerprints":{"codehealthFindingId/v1":"e80e8527fced547a87d8cc8d45bae15a64281cbd73977ab95260794783f9770d"}},{"ruleId":"D2","level":"warning","message":{"text":"_InfoBuilder._buildConstantOffsets (cognitive 16): _InfoBuilder._buildConstantOffsets has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (8 pts), loops 4 (8 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"536a4d9584d698d4bc7f8e58a80ce65bd8969ea47eee533a93842ae108eeab0f"}},{"ruleId":"D2","level":"warning","message":{"text":"_MixinInference._inferSingle (cognitive 16): _MixinInference._inferSingle has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/types_builder.dart"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f1bc21fcf0fc5c890754af28c52f358aa77446f4d8254b6d137b68b98990d43"}},{"ruleId":"D2","level":"warning","message":{"text":"_OpTypeAstVisitor.visitFieldDeclaration (cognitive 16): _OpTypeAstVisitor.visitFieldDeclaration has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (9 pts), boolean chains 7 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"de92143e6f67b58597ebe36ddabf3a4717b814a29298faa500ac2b18fbf918bf"}},{"ruleId":"D2","level":"warning","message":{"text":"Compiler.computeTimings (cognitive 16): Compiler.computeTimings has cognitive complexity 16 (threshold 15). Drivers by points: ternaries 4 (9 pts), loops 3 (5 pts), if/else 1 (2 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/compiler.dart"},"region":{"startLine":1103}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e89967e89721a3eecb783793476498af24930caa1f0354a8008ed5c6f07d83"}},{"ruleId":"D2","level":"warning","message":{"text":"_DartTypeToStringVisitor.run (cognitive 16): _DartTypeToStringVisitor.run has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (8 pts), loops 3 (7 pts), boolean chains 1 (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1527}}}],"partialFingerprints":{"codehealthFindingId/v1":"77c99874f4cf5744fe91fefb3d3cd26704a33778dadfe2a95b51d85cbb7639b7"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelTypeGraphBuilder.visitConstructor (cognitive 16): KernelTypeGraphBuilder.visitConstructor has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), boolean chains 5 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"be95f73f4a90c29944a6bc5c7949201e47f8ba5e6ae63a3c27fe444e5b0d6476"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelTypeGraphBuilder.visitSwitchStatement (cognitive 16): KernelTypeGraphBuilder.visitSwitchStatement has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (6 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"746b52bdd23ce329b51f1723b425e7476f756d4f872532e179873b43cb2a1753"}},{"ruleId":"D2","level":"warning","message":{"text":"InferrerEngine._addOverrideTypeInputs (cognitive 16): InferrerEngine._addOverrideTypeInputs has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (14 pts), boolean chains 2 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f7e41b3362f7b54c5967fdf521e21cd25247e8e415bd6fff8c2f037b9b5b84c"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelGlobalTypeInferenceElementData.compress (cognitive 16): KernelGlobalTypeInferenceElementData.compress has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (13 pts), boolean chains 3 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":1903}}}],"partialFingerprints":{"codehealthFindingId/v1":"08d9f3a19843f9c50ecdcd094c6c74bc1097003cac6914f1a621a4db0b8d341f"}},{"ruleId":"D2","level":"warning","message":{"text":"RecordTypeMask.containsMask (cognitive 16): RecordTypeMask.containsMask has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), boolean chains 2, loops 1 (2 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"af17c5814240c92a8d382ec7078e986a5c63bb5caca878873a4254e5962496dd"}},{"ruleId":"D2","level":"warning","message":{"text":"ScopeModelBuilder.computeModel (cognitive 16): ScopeModelBuilder.computeModel has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (12 pts), boolean chains 4 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"051214849e5e699338456ae24b9ea8423dcd5dcc413e49f162052309e35e84a9"}},{"ruleId":"D2","level":"warning","message":{"text":"ScopeModelBuilder.attachCapturedScopeVariables (cognitive 16): ScopeModelBuilder.attachCapturedScopeVariables has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (15 pts), loops 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"77598dca4647a8918cf0101041dffc7165d67a0edf27fd0c7724881cc1ac3708"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncRewriterBase.visitTry (cognitive 16): AsyncRewriterBase.visitTry has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (13 pts), ternaries 2 (3 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1715}}}],"partialFingerprints":{"codehealthFindingId/v1":"32364f1972cb13fc7473f004540d1a87dd47de58f67e94c764a68b4e742aee11"}},{"ruleId":"D2","level":"warning","message":{"text":"InstantiationStubGenerator.generateStubs (cognitive 16): InstantiationStubGenerator.generateStubs has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 2 (5 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0f649bbeec81665f7ff1799a16fbaa526c3ca4fc5d6e2dd930ae84e5e33d3ad"}},{"ruleId":"D2","level":"warning","message":{"text":"FieldVisitor.visitFields (cognitive 16): FieldVisitor.visitFields has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 10, if/else 5 (6 pts) (nesting depth added 1). To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"938c357c26e265477c5fbd3c782f82a2dded59b3ac43134bd3a0e0fc24cb2f57"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramBuilder._buildFields (cognitive 16): ProgramBuilder._buildFields has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b2603de239b7aa069e3a95a1735a9cb1d0a8d56e0d47d40011592bbd2d15d59"}},{"ruleId":"D2","level":"warning","message":{"text":"RuntimeTypeGenerator.generateIsTests (cognitive 16): RuntimeTypeGenerator.generateIsTests has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e4bb6b843b0e0a078b355ad089d7baad9ffa6279c71473e18306b6866ab5850"}},{"ruleId":"D2","level":"warning","message":{"text":"JsKernelToElementMap.getFunctionType (cognitive 16): JsKernelToElementMap.getFunctionType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (9 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":861}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f801179b7949e4cb36cc32b483219f02f44f2e36ba7c760484932774929a416"}},{"ruleId":"D2","level":"warning","message":{"text":"JsKernelToElementMap._computeClosureName (cognitive 16): JsKernelToElementMap._computeClosureName has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2142}}}],"partialFingerprints":{"codehealthFindingId/v1":"84f9b85c3c11863692b7048146f8ac66473231ee64e4ed4a5aee99d667dab796"}},{"ruleId":"D2","level":"warning","message":{"text":"JClosedWorld.needsNoSuchMethod (cognitive 16): JClosedWorld.needsNoSuchMethod has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_world.dart"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"18346f80e6b46db8c52f5654a3aa6205a5381eb54f9c3e7dc58f1024d0fb12ba"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelToElementMap.getFunctionType (cognitive 16): KernelToElementMap.getFunctionType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (9 pts), loops 4 (6 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4cfc32275e535dcc40c621e86a9ca88d7e2ce3ffdeb91e3a0d4ae93dc68d4c6"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelToElementMap.getLocalFunction (cognitive 16): KernelToElementMap.getLocalFunction has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), loops 3 (6 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1607}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e85b1e09338815e3325ba5944b423026dc1998a5854401961144f7e57d8b62b"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._buildInitializers (cognitive 16): KernelSsaGraphBuilder._buildInitializers has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 2, loops 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1151}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a0b79f46e12a75a62aec1e0cc8ef363b3e9fecc77b3f271adf2b57c5597efd9"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._buildExternalNativeFunctionNode (cognitive 16): KernelSsaGraphBuilder._buildExternalNativeFunctionNode has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (13 pts), boolean chains 2, loops 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2107}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa7767efc6484211b316f5a7bd297de759a1acaae41f15127bf22934de69357"}},{"ruleId":"D2","level":"warning","message":{"text":"KernelSsaGraphBuilder._handleSwitch (cognitive 16): KernelSsaGraphBuilder._handleSwitch has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (12 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":3829}}}],"partialFingerprints":{"codehealthFindingId/v1":"165537f9bc51e9e227d550a38383cc40800fb8021bff1033a4de58a0be99c485"}},{"ruleId":"D2","level":"warning","message":{"text":"SsaValueRangeAnalyzer.visitBoundsCheck (cognitive 16): SsaValueRangeAnalyzer.visitBoundsCheck has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (10 pts), boolean chains 6 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"2caa2e8f1284d3cd8b24692d66093c4e6d31347cb74fcabd8f953f93101ee6b8"}},{"ruleId":"D2","level":"warning","message":{"text":"MemberUsage.MemberUsage (cognitive 16): MemberUsage.MemberUsage has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (14 pts), boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3466323b82767360fde7c0b2506ce068d58f740e90f944d3e3be91620f4b402"}},{"ruleId":"D2","level":"warning","message":{"text":"MemberUsage.dataEquals (cognitive 16): MemberUsage.dataEquals has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 16. To reduce it, name the conditions: bind each compound test to a well-named local or a small predicate function, so the body reads as a sequence of named decisions rather than a chain of operators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"511688048a84309f48c2b4087f0e86d4be0bc26387c7312051ddd0aee6069a15"}},{"ruleId":"D2","level":"warning","message":{"text":"IsolateManager._resume (cognitive 16): IsolateManager._resume has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (11 pts), boolean chains 3, error handling 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"32cb3651e77e4e13e01b053906d6a93ddde4cfb091c5d950b4f32fae6d4ae673"}},{"ruleId":"D2","level":"warning","message":{"text":"DartRuntimeServiceRpcs.registerRpcsWithPeer (cognitive 16): DartRuntimeServiceRpcs.registerRpcsWithPeer has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), error handling 2 (4 pts), boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/dart_runtime_service_rpcs.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"d766f0cb1618fb3747b9384b7972e36eb654de1e42872927006c5cfc10f0baa8"}},{"ruleId":"D2","level":"warning","message":{"text":"EventStreamManager.streamListen (cognitive 16): EventStreamManager.streamListen has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 2 (5 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/event_streams.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"48766da3a93d86ad825dfeded219b96df6db50ce7636bb1edd3b6c877a3b5a0a"}},{"ruleId":"D2","level":"warning","message":{"text":"InstallCommand._installExecutablesOnPath (cognitive 16): InstallCommand._installExecutablesOnPath has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), error handling 1 (4 pts), boolean chains 2, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/install.dart"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"551dc73d036e461f92753ccbe71d2c0bb2726b3ceac9ae0c2ff345ee295942d6"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncRewriterBase.visitTry (cognitive 16): AsyncRewriterBase.visitTry has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (13 pts), ternaries 2 (3 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":1765}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc674bb0bdc800919f0da4a27e3d2b6ec4012de295a1bae39c6a04e3efa29cc"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.ifOut (cognitive 16): Printer.ifOut has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), boolean chains 3 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"11098d93ca21af9355f695b09bbf6d9fd5064e1abb9b36786cea8e5441832553"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.nameSpecifierOut (cognitive 16): Printer.nameSpecifierOut has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (8 pts), ternaries 2 (8 pts) (nesting depth added 9). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1577}}}],"partialFingerprints":{"codehealthFindingId/v1":"b70ad632e7b463aa66afe26ff8f36e87f7f34515c7bfc92833063f8ecb357fa1"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceMapPrintingContext.exitNode (cognitive 16): SourceMapPrintingContext.exitNode has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (12 pts), boolean chains 4 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/source_map_printer.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d45531aa23715bbf113786d9d248dd67a55e43bd1bd58a2c51c1e14952be4f9"}},{"ruleId":"D2","level":"warning","message":{"text":"ProgramCompiler._emitArgumentGroups (cognitive 16): ProgramCompiler._emitArgumentGroups has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (8 pts), loops 3, ternaries 3, boolean chains 2 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7165}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8eeaf7726768278f77bea708de05b0b641bd6508b97953b4505bd71f60125f5"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._initializeFields (cognitive 16): LibraryCompiler._initializeFields has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (10 pts), boolean chains 3, loops 2 (3 pts) (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2689}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0bed0c712ea20da3187235747578c6f61c26da600bb21c49b18c76f791a3188"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._rewriteInvocationWithHotReloadChecks (cognitive 16): LibraryCompiler._rewriteInvocationWithHotReloadChecks has cognitive complexity 16 (threshold 15). Drivers by points: loops 5 (7 pts), if/else 4 (6 pts), boolean chains 2, ternaries 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7787}}}],"partialFingerprints":{"codehealthFindingId/v1":"11d1a0af593e23cc0a9e33422c63174471269c1ae1b47b8554aeb6f73c4aac2d"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryCompiler._emitArgumentGroups (cognitive 16): LibraryCompiler._emitArgumentGroups has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (8 pts), loops 3, ternaries 3, boolean chains 2 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8032}}}],"partialFingerprints":{"codehealthFindingId/v1":"e38e98b43a80e524018ca1b2c367671c9fff8549a9814827f4f15c71c143e17c"}},{"ruleId":"D2","level":"warning","message":{"text":"DevCompilerConstants.getFieldValueFromAnnotation (cognitive 16): DevCompilerConstants.getFieldValueFromAnnotation has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (16 pts) (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/constants.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a8aaa185b1f0539809e79ed2a75f3ffd49da5a47c307bbfda6b3ae70e20e22"}},{"ruleId":"D2","level":"warning","message":{"text":"DTDClient._streamListen (cognitive 16): DTDClient._streamListen has cognitive complexity 16 (threshold 15). Drivers by points: loops 4 (11 pts), if/else 2 (4 pts), error handling 1 (nesting depth added 9). To reduce it, break up the iteration: give each loop body a named function, and split a multi-phase loop into one function per phase so no single body carries the whole pipeline."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd_impl/lib/src/dtd_client.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"cedafbeca8707d035c3c87ea8db031f373489ca59c6064ec5f11ae9e0c025deb"}},{"ruleId":"D2","level":"warning","message":{"text":"MetadataProvider._processMetadata (cognitive 16): MetadataProvider._processMetadata has cognitive complexity 16 (threshold 15). Drivers by points: if/else 3 (8 pts), error handling 1 (4 pts), loops 1 (3 pts), boolean chains 1 (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/metadata/provider.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b222a5a8880e7149531336ec08adafb50fbd6c68cb1776d22b5c0062359a0d"}},{"ruleId":"D2","level":"warning","message":{"text":"ComputedMutableNameSpaceImpl.addLocalMember (cognitive 16): ComputedMutableNameSpaceImpl.addLocalMember has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 2, ternaries 1 (2 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/name_space.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"28b790732f858807446b53c49145671b49e3e47e319c693b17594e104e87a6ef"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionTypeBuilderImpl.FunctionTypeBuilderImpl (cognitive 16): FunctionTypeBuilderImpl.FunctionTypeBuilderImpl has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (9 pts), loops 2 (4 pts), boolean chains 2, ternaries 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/function_type_builder.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd1f36e7451575c205f2467f37338a5720df93e47e2d215d447d59856d6c9056"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionTypeBuilderImpl.buildAliased (cognitive 16): FunctionTypeBuilderImpl.buildAliased has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), loops 1 (2 pts), boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/function_type_builder.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"a20a50c8f594cb9d3acec0659f5dc673798f9cb755c40c882ff7a9f621378b7f"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeAliasBuilderImpl.unaliasTypeArguments (cognitive 16): TypeAliasBuilderImpl.unaliasTypeArguments has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (11 pts), loops 2 (3 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_alias_builder.dart"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3b6835524e9220cb36b755e98c2f2ff7e3162153b42d1483aaca6c94f0f7c8"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl.endMetadata (cognitive 16): BodyBuilderImpl.endMetadata has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (10 pts), boolean chains 6 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4817}}}],"partialFingerprints":{"codehealthFindingId/v1":"575dbca625f5bc6d323296faf9d9e0826febf3ad548217b6843aabcbd755281b"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl._buildForLoopVariableDeclarations (cognitive 16): BodyBuilderImpl._buildForLoopVariableDeclarations has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (14 pts), loops 1 (2 pts) (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10988}}}],"partialFingerprints":{"codehealthFindingId/v1":"905a792e42b7c5d9f625d5898409da089b02e0b0cf56479814887fa00d84ba88"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl._computeForInElement (cognitive 16): BodyBuilderImpl._computeForInElement has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (16 pts) (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":11069}}}],"partialFingerprints":{"codehealthFindingId/v1":"490cde694e5d1fa6e08f22cbd61aeb92899e299f4d3205f989f77c5fe0eed68b"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyBuilderImpl._prepareInitializers (cognitive 16): BodyBuilderImpl._prepareInitializers has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (13 pts), loops 1 (3 pts) (nesting depth added 10). To reduce it, flatten the nesting: this score is depth rather than breadth \u2014 most of its points come from checks stacked inside one another, so the work sits several levels in. Invert each enclosing check into an early exit (a return, or the language\u0027s equivalent) so the happy path stays at one level, and where a level cannot be exited early, lift the block it encloses into its own named function."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":11340}}}],"partialFingerprints":{"codehealthFindingId/v1":"8596a604ee2921a1475e9f1350195caa011d94db68772f5334bd5fd46b07a870"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstantEvaluator.visitInstanceCreation (cognitive 16): ConstantEvaluator.visitInstanceCreation has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (13 pts), loops 3 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3686}}}],"partialFingerprints":{"codehealthFindingId/v1":"44d6741abe1089666c60cdc30d752a42f2d53d36b85f3930654ad72adbc92d4a"}},{"ruleId":"D2","level":"warning","message":{"text":"DelayedAssignment.handleAssignment (cognitive 16): DelayedAssignment.handleAssignment has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":6080}}}],"partialFingerprints":{"codehealthFindingId/v1":"727a50d04c1038ece0d4a69735387f16016ae0c3e9fde9b70cffee31582de1e4"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalSwitchStatementCase.toTextInternal (cognitive 16): InternalSwitchStatementCase.toTextInternal has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 3 (5 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (InternalPatternSwitchCase.toTextInternal) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff076caab3c83b284b368a0da7c9ea823a6c085cc8a4e10dc140deca8e7891e"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalPatternSwitchCase.toTextInternal (cognitive 16): InternalPatternSwitchCase.toTextInternal has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 3 (5 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (InternalSwitchStatementCase.toTextInternal) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7476}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c930a01b00b5290e33cce0f4b05685bc8ef8cb95a73dca6fad2c6afab59a38d"}},{"ruleId":"D2","level":"warning","message":{"text":"NominalParameterNameSpace.addTypeParameters (cognitive 16): NominalParameterNameSpace.addTypeParameters has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (13 pts), boolean chains 2, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/nominal_parameter_name_space.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f8d8e03c19cb31c8d56cc03c2860b76ef35c319963e0db2414b23f9efba424"}},{"ruleId":"D2","level":"warning","message":{"text":"OutlineBuilder.beginClassDeclaration (cognitive 16): OutlineBuilder.beginClassDeclaration has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1080}}}],"partialFingerprints":{"codehealthFindingId/v1":"69d29e0676e1fe735db5630127968a130aced31e1ace99ca5bd604efa9974f6b"}},{"ruleId":"D2","level":"warning","message":{"text":"InferredMapOrSetElementInferenceContext.inferElementType (cognitive 16): InferredMapOrSetElementInferenceContext.inferElementType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (12 pts), loops 2 (4 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/element_inference.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"a76f5034079f2d01a7af1441a4338bdbd90ec2feb4448e8efda6203b7515abbb"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitIndexSet (cognitive 16): InferenceVisitorImpl.visitIndexSet has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11 (14 pts), boolean chains 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6350}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a679b56e1a462d70fec60f70e77a02c28f385242fb624b875f55736c25841e3"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitExtensionIfNullIndexSet (cognitive 16): InferenceVisitorImpl.visitExtensionIfNullIndexSet has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14 (16 pts) (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7257}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6822a55e4f61c9c13af688e9e1f8422cd766cb285cf116f1231b5271438acd"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.dispatchPatternSchema (cognitive 16): InferenceVisitorImpl.dispatchPatternSchema has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (7 pts), loops 1 (3 pts), ternaries 1 (3 pts), match/switch 1 (2 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":11359}}}],"partialFingerprints":{"codehealthFindingId/v1":"694100bd065906e863a0ce4ef5da79775d7e3139eac7724f9bdf6ff6415f65c4"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitObjectPattern (cognitive 16): InferenceVisitorImpl.visitObjectPattern has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3, match/switch 1 (2 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12652}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f07103eb8fa006e46d1df64f6cb193e23ae0200b2f965b18753246a1799943"}},{"ruleId":"D2","level":"warning","message":{"text":"InferenceVisitorImpl.visitMapPattern (cognitive 16): InferenceVisitorImpl.visitMapPattern has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (11 pts), loops 2 (3 pts), boolean chains 1, ternaries 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13050}}}],"partialFingerprints":{"codehealthFindingId/v1":"d75a9093ace2433f6c7156c2ecac9b77975419ed71c62d1d95e97f4f6fbea8fb"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtensionAccessCandidate.isMoreSpecificThan (cognitive 16): ExtensionAccessCandidate.isMoreSpecificThan has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (11 pts), boolean chains 5 (nesting depth added 3). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1463}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8a9ec5c386c2446f51482124663e9b237835320b3a5595179a664387ebd1daa"}},{"ruleId":"D2","level":"warning","message":{"text":"IncrementalJavaScriptBundler.invalidate (cognitive 16): IncrementalJavaScriptBundler.invalidate has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (8 pts), loops 3 (6 pts), boolean chains 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/javascript_bundle.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"90120f71f4ec46024260fabd7a05fdcba7e9652920c83c466e33af4a8901f77b"}},{"ruleId":"D2","level":"warning","message":{"text":"ResidentFrontendServer._getResidentCompilerForEntrypoint (cognitive 16): ResidentFrontendServer._getResidentCompilerForEntrypoint has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (13 pts), error handling 1 (3 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/resident_frontend_server.dart"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"c872c6dca4c2278aece69c186ac11e62f66a7664ced8a8ade30247b5d47769c8"}},{"ruleId":"D2","level":"warning","message":{"text":"Printer.visitObjectInitializer (cognitive 16): Printer.visitObjectInitializer has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (10 pts), boolean chains 5, loops 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":1599}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc68d3ca95ef03d624d553af2a836acf2ba0f5cad33c57d71f57a954a3b0e988"}},{"ruleId":"D2","level":"warning","message":{"text":"StringToSource.writeString (cognitive 16): StringToSource.writeString has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (10 pts), boolean chains 5, loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/strings.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ddf24d956ce4158ce99b64a007798126d6eabb62e892f520df53e3c8ecceeec"}},{"ruleId":"D2","level":"warning","message":{"text":"TypedefTearOffConstant.== (cognitive 16): TypedefTearOffConstant.== has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (10 pts), loops 3 (6 pts) (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":1054}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0f0ded25581bc0d1b800cd740639fe045795159d22d55870796066bab09e57c"}},{"ruleId":"D2","level":"warning","message":{"text":"Types.areTypeArgumentsOfSubtypeKernel (cognitive 16): Types.areTypeArgumentsOfSubtypeKernel has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (14 pts), boolean chains 1, loops 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/types.dart"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"19e5a1a301cb27c70311640811a65bc33b5c40cc4b8034835613df012c67b5b2"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitRegularFormalParameter (cognitive 16): _Visitor.visitRegularFormalParameter has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (12 pts), boolean chains 4 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/always_specify_types.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"e08ffcf5dced93eb7021016de737d36e2dd79df80aaf74062037ddec9dd688fe"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitComment (cognitive 16): _Visitor.visitComment has cognitive complexity 16 (threshold 15). Drivers by points: if/else 5 (12 pts), loops 2 (3 pts), boolean chains 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/comment_references.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8804979c21f312dd3da4bfa91634b64afe603c865ed9e9fd70ba0f2c3822aa1"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.visitConditionalExpression (cognitive 16): _Visitor.visitConditionalExpression has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (13 pts), match/switch 1 (2 pts), loops 1 (nesting depth added 4). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_null_aware_operators.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"24aac9c978b2c824a0da8a12e5eec1355d83ec25c286144c733351ae91e14e11"}},{"ruleId":"D2","level":"warning","message":{"text":"DependOnReferencedPackages.registerNodeProcessors (cognitive 16): DependOnReferencedPackages.registerNodeProcessors has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/pub/depend_on_referenced_packages.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"22449b34feef19edc32bbf519c0d27da10a718e414d41e34df92bafdc17ee1f3"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.checkMethods (cognitive 16): _Visitor.checkMethods has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 3, boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/public_member_api_docs.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f188ee4402fdce24fe80d382ba3353999d72cdf4eecdb62ea9739b94890eb9f"}},{"ruleId":"D2","level":"warning","message":{"text":"_Visitor.parametersMatch (cognitive 16): _Visitor.parametersMatch has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), loops 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_lambdas.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7914b791677176c93add477c3b7865be32d9f75f2d0da2314b0812b5fd73dae"}},{"ruleId":"D2","level":"warning","message":{"text":"DebuggerLocation._parseScriptLine (cognitive 16): DebuggerLocation._parseScriptLine has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12 (15 pts), ternaries 1 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger_location.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"e83dd8302b540a8ffdece4f0ad8d2d67d1d5aac31f01bf01797a52b7f88dae3d"}},{"ruleId":"D2","level":"warning","message":{"text":"AllocationProfileElement.render (cognitive 16): AllocationProfileElement.render has cognitive complexity 16 (threshold 15). Drivers by points: ternaries 7 (14 pts), if/else 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"c94d980aa813ee090589f5ce0674b6d005ebf89c0afe129a2791d5018b079949"}},{"ruleId":"D2","level":"warning","message":{"text":"DebuggerFrameElement.render (cognitive 16): DebuggerFrameElement.render has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (10 pts), ternaries 2 (4 pts), boolean chains 2 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":2572}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cc6635798f452fba1a292bbbb42a38146e635839f6c27b495422934be71d6cc"}},{"ruleId":"D2","level":"warning","message":{"text":"SampleProfileLoadingProgress._run (cognitive 16): SampleProfileLoadingProgress._run has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), ternaries 1 (3 pts), boolean chains 1, error handling 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/repositories/sample_profile.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4c832d54379f2403333ca0720d7893df63c9b74926574c7e045f8e43a169b5c"}},{"ruleId":"D2","level":"warning","message":{"text":"SampleProfile.buildFunctionTrie (cognitive 16): SampleProfile.buildFunctionTrie has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 3 (7 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (SampleProfile.buildCodeTrie) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/sample_profile/sample_profile.dart"},"region":{"startLine":1233}}}],"partialFingerprints":{"codehealthFindingId/v1":"288fffba8f3e71b28467ce2725a43f1b47192f821dbb069f84a8729fe8db8b77"}},{"ruleId":"D2","level":"warning","message":{"text":"SampleProfile.buildCodeTrie (cognitive 16): SampleProfile.buildCodeTrie has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (9 pts), loops 3 (7 pts) (nesting depth added 9). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body. This shape REPEATS in the file: one other method here (SampleProfile.buildFunctionTrie) has the same decision points, in the same order, at the same nesting depths \u2014 so this is one pattern written twice rather than two separate problems. Splitting this body alone leaves the other exactly as it is. Where these are variations on one operation, the change that clears both is the shared one: lift the common shape into a single routine the variants call, parameterised by whatever genuinely differs between them, and keep in each method only the part that is not shared."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/sample_profile/sample_profile.dart"},"region":{"startLine":1288}}}],"partialFingerprints":{"codehealthFindingId/v1":"187d0074cbb29e6579b76fea614e397dce14342277445dc9826c5838ae1515df"}},{"ruleId":"D2","level":"warning","message":{"text":"_TokenIterator.moveNextPattern (cognitive 16): _TokenIterator.moveNextPattern has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (13 pts), loops 2, boolean chains 1 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/heapsnapshot/lib/src/expression.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"9546933c03f397b7e6b7423e2926ca516e7450456e98a53613daa22450d2f2cd"}},{"ruleId":"D2","level":"warning","message":{"text":"FlowGraph._collectInstructions (cognitive 16): FlowGraph._collectInstructions has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (10 pts), loops 2 (4 pts), boolean chains 2 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/testing/il_matchers.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ef2ecefbda04fd1ff13b9b3e5e691b1083d21854bf133d82ee9839e0044b96c"}},{"ruleId":"D2","level":"warning","message":{"text":"_DispatchableInvocation._collectTargetsForConcreteType (cognitive 16): _DispatchableInvocation._collectTargetsForConcreteType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (16 pts) (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"c96003fec55c8fa4e1c3bd8faf57b9b1416e30267c1b9558861d1a8e0c795ff9"}},{"ruleId":"D2","level":"warning","message":{"text":"_DispatchableInvocation._collectTargetsForDynamicallyExtendableType (cognitive 16): _DispatchableInvocation._collectTargetsForDynamicallyExtendableType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8 (14 pts), boolean chains 1, loops 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"a33d78f4e334a145630c1a9d296a03a9dd8e99baa67ba5d3450cad5f0f210654"}},{"ruleId":"D2","level":"warning","message":{"text":"ConeType.intersection (cognitive 16): ConeType.intersection has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10 (15 pts), boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"51d6e93f39777a60acbcf152419de2f187c576cfe744323c37fa7d894cda9c7a"}},{"ruleId":"D2","level":"warning","message":{"text":"ConcreteType.== (cognitive 16): ConcreteType.== has cognitive complexity 16 (threshold 15). Drivers by points: if/else 6 (11 pts), loops 1 (3 pts), boolean chains 2 (nesting depth added 7). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1346}}}],"partialFingerprints":{"codehealthFindingId/v1":"b327f1771c76f9e026eab591ce9e1075438dace32f5366d3182fef2f4bd52e69"}},{"ruleId":"D2","level":"warning","message":{"text":"PRESUBMIT.CheckNodeTextExpectationsCollectorUpdatingIsDisabled (cognitive 16): PRESUBMIT.CheckNodeTextExpectationsCollectorUpdatingIsDisabled has cognitive complexity 16 (threshold 15). Drivers by points: if/else 4 (12 pts), loops 2 (4 pts) (nesting depth added 10). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/PRESUBMIT.py"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"33b95bda1021e5ca4229439be46fa9bddb4076ff7ab79e9b890ce7db1294208f"}},{"ruleId":"D2","level":"warning","message":{"text":"DatabaseBuilder._sign (cognitive 16): DatabaseBuilder._sign has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7 (11 pts), loops 2 (4 pts), boolean chains 1 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"5011c98597720e2360c71156b4b9c3fee12bbd0a65deb1dff2a4743840ac1f14"}},{"ruleId":"D2","level":"warning","message":{"text":"LibraryLoader.load (cognitive 16): LibraryLoader.load has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9 (11 pts), boolean chains 5 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2e06ff11aaa379da068ecef18d568b55e7c5a08a3b3eb66e55fe1a8b045f9d9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dartfuzz/dartfuzz_type_table.dart: FileTooLong \u2014 228059 significant lines (blank, comment-only and punctuation-only lines excluded), about 62% of them inside a single declaration: DartType (13-173146). The bar is 500 significant lines; this is 227559 over it, 456.12\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"90455e0b376d385944519fd8aae511c56bed9c0ed338341b9acecb409948a0aa"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartType: ClassTooLong \u2014 142422 significant lines (blank, comment-only and punctuation-only lines excluded), 31 methods. The bar is 400 significant lines; this is 142022 over it, 356.06\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c713bfa4998749d5b8a14371af12cc815322db3eb732ed5bb5bd4e4ccb3907"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartTypeNoFp: ClassTooLong \u2014 50499 significant lines (blank, comment-only and punctuation-only lines excluded), 30 methods. The bar is 400 significant lines; this is 50099 over it, 126.25\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":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":173148}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1382709066bbf63f2f4a0cd4825d8a3f8d0f0132414fd57e5e6b09d3113d2eb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/ast.dart: FileTooLong \u2014 39261 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 38761 over it, 78.52\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"803e5919eddcd891983dd667458f9f521f905a80a3d78f7bbaafbae2a92a5442"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartTypeFlatTp: ClassTooLong \u2014 17795 significant lines (blank, comment-only and punctuation-only lines excluded), 30 methods. The bar is 400 significant lines; this is 17395 over it, 44.49\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":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":237028}}}],"partialFingerprints":{"codehealthFindingId/v1":"977006e8e4c82964cbcfbd31bc11a5dfd121d986aeef2550b0dacf9b6f3749c5"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartTypeNoFpFlatTp: ClassTooLong \u2014 17343 significant lines (blank, comment-only and punctuation-only lines excluded), 30 methods. The bar is 400 significant lines; this is 16943 over it, 43.36\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":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":261194}}}],"partialFingerprints":{"codehealthFindingId/v1":"efe04bbfde9e4cd09d8993e8367e2830549d4c2a53c309f38a9fc9119fc23297"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InferenceVisitorImpl: ClassTooLong \u2014 10049 significant lines (blank, comment-only and punctuation-only lines excluded), 264 methods. The bar is 400 significant lines; this is 9649 over it, 25.12\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf3cd26cc017e3a69634f493623ac4749f5d50d343084a7d727fe9b3d11366f4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/inference_visitor.dart: FileTooLong \u2014 10132 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: InferenceVisitorImpl (110-14466). The bar is 500 significant lines; this is 9632 over it, 20.26\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4971507b68b3db3d806448ef980d685aa87a16fdae37dfbada1ec0ab010f3d1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/parser_ast_helper.dart: FileTooLong \u2014 9982 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 9482 over it, 19.96\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"65adde093cd2684a6d34a6a8f07c1734ee5ef68cf2ae965bec04159c1b2e23bb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Intrinsifier.generateStaticIntrinsic: MethodTooLong \u2014 generateStaticIntrinsic runs 1944 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1844 over it, 19.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":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":1362}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49d03d018b9617915e6eee91107ca4d5758c2e383766c1624f02e8b7d10fb62"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InstructionsBuilder: TooManyMethods \u2014 510 methods. The bar is 30 methods; this is 480 over it, 17.00\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":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"17fc03fefdacf2d084d5631f2bd3fec4f26dc5866df9b0a141157f4708a8fd90"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/body_builder.dart: FileTooLong \u2014 7948 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 7448 over it, 15.90\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":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cac167314aab16033b7386d88b44804d213fe9e60811336c9f3f2621b932f001"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/parser_impl.dart: FileTooLong \u2014 7924 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 7424 over it, 15.85\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":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd2e2a4be0a243aba2a8ac31ab13f5b28e502fc92fe3f868e56aaaeb9226fe25"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: element/element.dart: FileTooLong \u2014 7793 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 7293 over it, 15.59\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf753682ac080a69f655e65c144ba0af3cd25499d1f63c069f52c8a40f54e7a6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: KernelSsaGraphBuilder: ClassTooLong \u2014 5394 significant lines (blank, comment-only and punctuation-only lines excluded), 266 methods. The bar is 400 significant lines; this is 4994 over it, 13.49\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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c966fa3b3f1282ec1f1f883f3c3ea533ed3ef68100fb92c8d5790127b2bf59"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BodyBuilderImpl: TooManyMethods \u2014 380 methods. The bar is 30 methods; this is 350 over it, 12.67\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":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b94d32625b1292cd028d3a1ab4dadb7efad1ccbcb50deed3cc89ca18a64c809"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ForwardingListener: TooManyMethods \u2014 379 methods. The bar is 30 methods; this is 349 over it, 12.63\u00D7 the bar. Most of these members implement src.Listener (378 of 379 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d2f06e8e349d02936fc224f96d935819fd94058c89badfbac6b05fbea7bd31"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ssa/builder.dart: FileTooLong \u2014 6303 significant lines (blank, comment-only and punctuation-only lines excluded), about 86% of them inside a single declaration: KernelSsaGraphBuilder (102-8611). The bar is 500 significant lines; this is 5803 over it, 12.61\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"347fbe48672b3cbe767dbda0447e3094a35ca69fd4347d20940bc4385a786433"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Listener: TooManyMethods \u2014 378 methods. The bar is 30 methods; this is 348 over it, 12.60\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":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"80717be790be01d7fcd1cb76846ddf7ea9d115e6af2dd107ed73ad294a416a4a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractParserAstListener: TooManyMethods \u2014 377 methods. The bar is 30 methods; this is 347 over it, 12.57\u00D7 the bar. Most of these members implement src.Listener (376 of 377 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dadf65636dac96428d9f6d457afe67d40be558d1861e215ec383859aa37a2d4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RecursiveParserAstVisitorWithDefaultNodeAsync: TooManyMethods \u2014 377 methods. The bar is 30 methods; this is 347 over it, 12.57\u00D7 the bar. Most of these members implement src.ParserAstVisitor (376 of 377 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":12490}}}],"partialFingerprints":{"codehealthFindingId/v1":"895da969c0bf464c47226ccd51012a6dcbd8918ccfb1103da690af2f46e855f3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ParserAstVisitor: TooManyMethods \u2014 376 methods. The bar is 30 methods; this is 346 over it, 12.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":10622}}}],"partialFingerprints":{"codehealthFindingId/v1":"75a6ee0da77a6e613a56a980b73fb49fa83e31683e2089f12868cddb2af7958a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RecursiveParserAstVisitor: TooManyMethods \u2014 376 methods. The bar is 30 methods; this is 346 over it, 12.53\u00D7 the bar. Most of these members implement src.ParserAstVisitor (376 of 376 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":11051}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc2d437640cc2169b709814a89af9cf88f9dcf8f9f3185afd4833a09209aa27f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LibraryCompiler: TooManyMethods \u2014 363 methods. The bar is 30 methods; this is 333 over it, 12.10\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":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"e879f778541f658dcb81b8381b46d28a163aa4c291c8fe397060a47a742c29b7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AstBuilder: ClassTooLong \u2014 4737 significant lines (blank, comment-only and punctuation-only lines excluded), 312 methods. The bar is 400 significant lines; this is 4337 over it, 11.84\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":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"defde59e003c4a4fe1bda056934464d26ec63bb86187b27e175543f65eab65db"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ProgramCompiler: TooManyMethods \u2014 353 methods. The bar is 30 methods; this is 323 over it, 11.77\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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b2e2a015b710c5f2ab9cb55be655576ecb591d06e877632c0e1f8ac91011893"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/compiler_new.dart: FileTooLong \u2014 5700 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 5200 over it, 11.40\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"92dba9de8f0ad8a3c2bab83c814c7302cbc393dc85eef0f1231ef4ab4f5e47bf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/internal_ast.dart: FileTooLong \u2014 5491 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 4991 over it, 10.98\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d48e485d84db32cef29203fb732ed39c2b7fb7161a22ff5408ac38adafc312c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BinaryBuilder: TooManyMethods \u2014 324 methods. The bar is 30 methods; this is 294 over it, 10.80\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":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"95ae2b77bea8c85ecc7e436662b8ec24b7a0325fe1526b44b8a7826fbc50d523"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BinaryPrinter: TooManyMethods \u2014 320 methods. The bar is 30 methods; this is 290 over it, 10.67\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":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c733d847bad111a7a2ad432d7342cabc8293b12055869cbeb02019f6fd722e7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/compiler.dart: FileTooLong \u2014 5257 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 4757 over it, 10.51\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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"56aed9de9012bb307a811e11a4a64c2d90de07048d87dc850e6a50f4a71ff108"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AstBuilder: TooManyMethods \u2014 312 methods. The bar is 30 methods; this is 282 over it, 10.40\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":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"efee41ace9a14c1d8ed2552317ccad284ed702883bf587540690a65d414e60a2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/expression_generator.dart: FileTooLong \u2014 5127 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 4627 over it, 10.25\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a247300ef55b635f0897540fb5e10d98a4c13955485e4f3f5575721228a285d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fasta/ast_builder.dart: FileTooLong \u2014 5125 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: AstBuilder (52-6750). The bar is 500 significant lines; this is 4625 over it, 10.25\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b050c98d796c8f34e48c271b4af34ee6b298b0e4b061651d7ebc43a9508d957"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InferenceVisitorBase: ClassTooLong \u2014 4092 significant lines (blank, comment-only and punctuation-only lines excluded), 133 methods. The bar is 400 significant lines; this is 3692 over it, 10.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea739544c25eeae8cb3e0132302d0e5b53cbaecc9f9a35fb32c693bc539e57e6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InstructionsBuilder: ClassTooLong \u2014 4032 significant lines (blank, comment-only and punctuation-only lines excluded), 510 methods. The bar is 400 significant lines; this is 3632 over it, 10.08\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":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"0441c5ec5cfefbc78900f6c1f1d1f76d68a75b7926722ec39154fc4e77e1fae5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: flow_analysis/flow_analysis.dart: FileTooLong \u2014 4834 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 4334 over it, 9.67\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e728052f1bae09a8ef91fac5e8614ba19cd7f642fba34766f6226919e7c9828c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/inference_visitor_base.dart: FileTooLong \u2014 4701 significant lines (blank, comment-only and punctuation-only lines excluded), about 87% of them inside a single declaration: InferenceVisitorBase (133-5879). The bar is 500 significant lines; this is 4201 over it, 9.40\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cafde7c2d792e4a51c6565f2bb32e070297277bfb2cdcaa271b07a7257891dc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/vm_service.dart: FileTooLong \u2014 4617 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 4117 over it, 9.23\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a35f078632f25a631c5b8b431c122bcc59e7f792ac3c6435786dbbdb4aed3168"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Parser: TooManyMethods \u2014 273 methods. The bar is 30 methods; this is 243 over it, 9.10\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":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdc7340272ce655a1da7c8b85562dc7343a1a89d89188b991c165648a915dd8e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KernelSsaGraphBuilder: TooManyMethods \u2014 266 methods. The bar is 30 methods; this is 236 over it, 8.87\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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba737548e799b707d12fe9c00be64b7d320d975530be92bf8f3aadc83a482443"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InferenceVisitorImpl: TooManyMethods \u2014 264 methods. The bar is 30 methods; this is 234 over it, 8.80\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ba7a6b7f6945b0742df0f3c726d63a7296b4445b508b964ca4c92707ee1e73e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/constant_evaluator.dart: FileTooLong \u2014 4362 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 3862 over it, 8.72\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5dda3e67e945cc748aed67c176be478e4df3e8b0a5be9baaa74d5f0b2213e03"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/typed_data_patch.dart: FileTooLong \u2014 4167 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 3667 over it, 8.33\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"859a2ee02830c1300b081520b7736480848ade648abdc3f7495a10cf8bc58172"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BinaryBuilder: ClassTooLong \u2014 3324 significant lines (blank, comment-only and punctuation-only lines excluded), 324 methods. The bar is 400 significant lines; this is 2924 over it, 8.31\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":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"e984919298bdef01f41310aba5ef91a5126be328c91afcccf6542705bd775677"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builder/instructions.dart: FileTooLong \u2014 4125 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: InstructionsBuilder (172-6601). The bar is 500 significant lines; this is 3625 over it, 8.25\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c372d912001f9025046df5c6615fc0870808b994011af450f742cfaed7ece44"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BytecodeGenerator: ClassTooLong \u2014 3286 significant lines (blank, comment-only and punctuation-only lines excluded), 210 methods. The bar is 400 significant lines; this is 2886 over it, 8.22\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cdd2d3172abc8a8c62887eb33358ff46d2b2978efac14943f2728bea8835a12"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/code_generator.dart: FileTooLong \u2014 4103 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 3603 over it, 8.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19462a50de4fca03a5f4ca68d58a561af152583c27f6838ed399d71bdda46f7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Printer: TooManyMethods \u2014 241 methods. The bar is 30 methods; this is 211 over it, 8.03\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":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f88e1dd2db78d0ddd1e2dc173bd588095e25b229e954f7e50da4843793bbee"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ToSourceVisitor: TooManyMethods \u2014 238 methods. The bar is 30 methods; this is 208 over it, 7.93\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":"pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"44898605d48f447227882c8032abc44790260355788406e803cc65203d00288e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: OutlineBuilder: ClassTooLong \u2014 3173 significant lines (blank, comment-only and punctuation-only lines excluded), 158 methods. The bar is 400 significant lines; this is 2773 over it, 7.93\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":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bdfb38d47a118aa82fe2ae4ce8d53b8ae7428f32644b16e73e89b867f9236fa"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Intrinsifier: ClassTooLong \u2014 3129 significant lines (blank, comment-only and punctuation-only lines excluded), 23 methods. The bar is 400 significant lines; this is 2729 over it, 7.82\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":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8c55097682b38edfa8c27d6547e13103d8e6010a8886cba54b8297ebdaca937"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Types.performSubtypeCheck: MethodTooLong \u2014 performSubtypeCheck runs 746 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 646 over it, 7.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/types.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"80f0360ca5dd34df04dae556c0057073d4089450056b0c3cb95f1801fbafd8dd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: binary/ast_from_binary.dart: FileTooLong \u2014 3650 significant lines (blank, comment-only and punctuation-only lines excluded), about 91% of them inside a single declaration: BinaryBuilder (129-4777). The bar is 500 significant lines; this is 3150 over it, 7.30\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a6674450acdcf61948b286ada6c02281c13bfb79987b1f60e53f8d4f57ed76e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/intrinsics.dart: FileTooLong \u2014 3607 significant lines (blank, comment-only and punctuation-only lines excluded), about 87% of them inside a single declaration: Intrinsifier (507-4223). The bar is 500 significant lines; this is 3107 over it, 7.21\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c77fbcbb570476b9980fbdfb3fbdb3571a12033f4e4e3cbc68a72b3f7de00536"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AbstractParserAstListener: ClassTooLong \u2014 2866 significant lines (blank, comment-only and punctuation-only lines excluded), 377 methods. The bar is 400 significant lines; this is 2466 over it, 7.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6eb0942ffa4759918aaccbf99a795b2d7b4d165b4d746cce24b5ac8aca59e6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BytecodeGenerator: TooManyMethods \u2014 210 methods. The bar is 30 methods; this is 180 over it, 7.00\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":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"11c84e921e5d465d40010ba2061b9fa0e27c50d036594ef65c36056e1e31c4be"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: service/object.dart: FileTooLong \u2014 3460 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2960 over it, 6.92\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":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"769efaac271f12a84e6228433074c3a04988b6de8f67a95f9957e31d18b42cd7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InScopeCompletionPass: TooManyMethods \u2014 206 methods. The bar is 30 methods; this is 176 over it, 6.87\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":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"d14aa81f56bbe50f8f16c40a910e38e92b9434fa312b5a088677d84f46eac81b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/outline_builder.dart: FileTooLong \u2014 3412 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: OutlineBuilder (481-5013). The bar is 500 significant lines; this is 2912 over it, 6.82\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cc1b3446370a7c044dfd3169cf530b6c68b1feb5297d9a4929777dcea57fbb7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ir/instruction.dart: FileTooLong \u2014 3404 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2904 over it, 6.81\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/instruction.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"db90881743039da0d30a2f76430f4cdad6c591cf46f03a02df7fab82dcb07fc2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/in_scope_completion_pass.dart: FileTooLong \u2014 3403 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2903 over it, 6.81\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2036a425bfb47f5470156570ecc971d291bb41994b5e023951ac49fcd2917ad5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/bytecode_generator.dart: FileTooLong \u2014 3387 significant lines (blank, comment-only and punctuation-only lines excluded), about 97% of them inside a single declaration: BytecodeGenerator (112-4979). The bar is 500 significant lines; this is 2887 over it, 6.77\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54179ff44422a36ee4f4c411e81c7264593c602d38d6ccab50a70b20c6168d92"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ssa/nodes.dart: FileTooLong \u2014 3363 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2863 over it, 6.73\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"629e0aeda20718b0e69b09f5025bac67d08bd01fd024c96e001210ed67343d20"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/typed_data.dart: FileTooLong \u2014 3285 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2785 over it, 6.57\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":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1bf32ed6a5a34f80287ba475529dd07ee69cea5d1842c0eaf7969838f9dfee6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/expressions.dart: FileTooLong \u2014 3275 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2775 over it, 6.55\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bff7008e1e88e415e109b751ede75f94cda7918eb032a56c6c0f9c8ec79f9cd1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SsaCodeGenerator: ClassTooLong \u2014 2605 significant lines (blank, comment-only and punctuation-only lines excluded), 191 methods. The bar is 400 significant lines; this is 2205 over it, 6.51\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":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c1b96c420833d14278da4bb83366be98c857b5cbc409b40efc6c67ad63acb49"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RelevanceDataCollector: TooManyMethods \u2014 194 methods. The bar is 30 methods; this is 164 over it, 6.47\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":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6a205713abf4061143304ec0b7e8d41af9774a12401e84573606583e800d4c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BinaryPrinter: ClassTooLong \u2014 2562 significant lines (blank, comment-only and punctuation-only lines excluded), 320 methods. The bar is 400 significant lines; this is 2162 over it, 6.41\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":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6adbb8315582d64581f97f77345975e2fb84c472a2da928e2ddf14121289182"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SsaCodeGenerator: TooManyMethods \u2014 191 methods. The bar is 30 methods; this is 161 over it, 6.37\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":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"10dec2b73b63b8389d1603d790155f9e6a65ba28b5fa6cb2627f393bbc4dc44a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ssa/optimize.dart: FileTooLong \u2014 3039 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2539 over it, 6.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57ab7d32a8185efff1e0153d26892b381f6b55536ed9cbcd86d2fda5fe6c15b5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Arm64Assembler: TooManyMethods \u2014 182 methods. The bar is 30 methods; this is 152 over it, 6.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":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"51c92ece9e947ced0deda7a23deb62912f86fd4fad462ee69797170de146c9ca"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CloneVisitorNotMembers: TooManyMethods \u2014 174 methods. The bar is 30 methods; this is 144 over it, 5.80\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":"pkg/kernel/lib/clone.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a65957e8b0e58349d27eee2df1d9c8b83e3c1457123d392c0ea68d4ce8459b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _FlowAnalysisImpl: TooManyMethods \u2014 173 methods. The bar is 30 methods; this is 143 over it, 5.77\u00D7 the bar. Most of these members implement src.FlowAnalysis (129 of 173 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":6243}}}],"partialFingerprints":{"codehealthFindingId/v1":"098593297d9ec6e35f1dbc7a289b14ac9bf1de5fd61eb2205ce4f5ecd8acdbe1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ssa/codegen.dart: FileTooLong \u2014 2877 significant lines (blank, comment-only and punctuation-only lines excluded), about 91% of them inside a single declaration: SsaCodeGenerator (296-4339). The bar is 500 significant lines; this is 2377 over it, 5.75\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"752020a7cf6e91da20a5610471939f3d569d3d22bd66bc9007e2ee31934a98ec"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Printer: ClassTooLong \u2014 2260 significant lines (blank, comment-only and punctuation-only lines excluded), 241 methods. The bar is 400 significant lines; this is 1860 over it, 5.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":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cfe0594043da579c2c7b1f042fa3a2311051d8cde0ab339277bcdc20f96dbcf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: binary/ast_to_binary.dart: FileTooLong \u2014 2811 significant lines (blank, comment-only and punctuation-only lines excluded), about 91% of them inside a single declaration: BinaryPrinter (18-3605). The bar is 500 significant lines; this is 2311 over it, 5.62\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78dae5b7009ffa775685e6310013de38e9b00f4449f510cc8ea2d7f9c0016898"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Arm64CodeGenerator: ClassTooLong \u2014 2248 significant lines (blank, comment-only and punctuation-only lines excluded), 68 methods. The bar is 400 significant lines; this is 1848 over it, 5.62\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":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b662a6b1a17628a74c53c078ecb6502a380b44466b9fdd65944e938ed56b91b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: _http/http_impl.dart: FileTooLong \u2014 2733 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2233 over it, 5.47\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8d0c42176b613fd2076d8b4f00b31b28c9da0d7c03472d9dc0a4b0d3ed61a9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/translator.dart: FileTooLong \u2014 2663 significant lines (blank, comment-only and punctuation-only lines excluded), about 60% of them inside a single declaration: Translator (102-2706). The bar is 500 significant lines; this is 2163 over it, 5.33\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b157c26e38300f2d1162ba381e443e1045bc8e2f881a49ec764978e7eb554edb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: base/incremental_compiler.dart: FileTooLong \u2014 2646 significant lines (blank, comment-only and punctuation-only lines excluded), about 62% of them inside a single declaration: IncrementalCompiler (161-2873). The bar is 500 significant lines; this is 2146 over it, 5.29\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbdb566dc6dc624731baaeb960feb9dd9af5a814dae74a3896b6ca5249e2676f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: text/ast_to_text.dart: FileTooLong \u2014 2643 significant lines (blank, comment-only and punctuation-only lines excluded), about 86% of them inside a single declaration: Printer (292-3329). The bar is 500 significant lines; this is 2143 over it, 5.29\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d62373790f383849725a5866d230c10787d70591cdefaf7eb7d5e42a5cd43755"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: OutlineBuilder: TooManyMethods \u2014 158 methods. The bar is 30 methods; this is 128 over it, 5.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"08fb0b7aa885a9cb1186367371d38a933ae2fe5533dcc76f605d61e32c84de6f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RequirementsManifest.isSatisfied: MethodTooLong \u2014 isSatisfied runs 522 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 422 over it, 5.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":"pkg/analyzer/lib/src/fine/requirements.dart"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"06d563b84a33249c90149a5d52a1989656de914cefc0e76dd2f7c2763e82ac3e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: arm64/code_generator.dart: FileTooLong \u2014 2587 significant lines (blank, comment-only and punctuation-only lines excluded), about 87% of them inside a single declaration: Arm64CodeGenerator (28-2996). The bar is 500 significant lines; this is 2087 over it, 5.17\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d07e0192477e35fd73865a567e6d6b3f7c01ddaadc6dd40a51dc81f1c2fe3b95"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: change_builder/change_builder_dart.dart: FileTooLong \u2014 2581 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2081 over it, 5.16\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":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"04a60f04e3832411dede4458795c102f21104e3e482c09a87eac234d20589516"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: constant/evaluation.dart: FileTooLong \u2014 2563 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 2063 over it, 5.13\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":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4e54593ac1868a02b4452867c5c0c0d1455ff30efc3bca3b628f18f549e4de0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Instruction.deserialize: MethodTooLong \u2014 deserialize runs 507 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 407 over it, 5.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/instruction.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"97afb39581122385d55e0ffaacbf9eb502abf2cfe7a75ceea54f1ea26bb13229"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DeclarationHelper: ClassTooLong \u2014 2025 significant lines (blank, comment-only and punctuation-only lines excluded), 89 methods. The bar is 400 significant lines; this is 1625 over it, 5.06\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6c01cd24242eb39b7c18e0ce38fa37cdc296a15f175b200a60980ce13e980c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeCreator._createExpressionFromKind: MethodTooLong \u2014 _createExpressionFromKind runs 506 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 406 over it, 5.06\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":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":812}}}],"partialFingerprints":{"codehealthFindingId/v1":"f609cd195d8145fb96c0fe0a6ac2e46eeb652743ef0573863ea3c055410f4cba"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SourceLoader: ClassTooLong \u2014 2019 significant lines (blank, comment-only and punctuation-only lines excluded), 114 methods. The bar is 400 significant lines; this is 1619 over it, 5.05\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":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"6509c1fada1ffbbf7824543f5b18a86e271bad903c8926d5829d71be8d1fd3f4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KernelTypeGraphBuilder: TooManyMethods \u2014 149 methods. The bar is 30 methods; this is 119 over it, 4.97\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":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda2136fed755de7920c2ea0114b313c121fef23e8e99e81f1e3c0b41610746e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: core/uri.dart: FileTooLong \u2014 2482 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1982 over it, 4.96\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e49f0ab9d113991aaefbe56ec66f10ec41a5ff421987ece70ace5f301ba1287"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AstCodeGenerator: TooManyMethods \u2014 147 methods. The bar is 30 methods; this is 117 over it, 4.90\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":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"823f8d3795fc239bcde0d733c25a8ed43cdfae894a001f02de315e0da268d777"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _VerifyingVisitor: TooManyMethods \u2014 147 methods. The bar is 30 methods; this is 117 over it, 4.90\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":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0e76a879ce23420f7c8fd9a4fd0bfdd31d8e2608bc996c523508abb160403fd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CommonElements: TooManyMethods \u2014 145 methods. The bar is 30 methods; this is 115 over it, 4.83\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":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"64183a0e60747a265abb5c5123603794ac9e1a32c29aa294e79d9f785fb5b011"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartFixKind: ClassTooLong \u2014 1933 significant lines (blank, comment-only and punctuation-only lines excluded), 0 methods. The bar is 400 significant lines; this is 1533 over it, 4.83\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":"pkg/analysis_server/lib/src/services/correction/fix.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9acf28641edcaa7ab9a92be28c47b404b9af56266f74c072b272e60ce70c52d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/source_loader.dart: FileTooLong \u2014 2415 significant lines (blank, comment-only and punctuation-only lines excluded), about 84% of them inside a single declaration: SourceLoader (103-3308). The bar is 500 significant lines; this is 1915 over it, 4.83\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5db0d4e311a3f37c93b7d72559775db6905ab1bf85a3b76294ab60549c2b79c3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/rti.dart: FileTooLong \u2014 2409 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1909 over it, 4.82\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4f25f02881f86470d9cc0f09fb5b6945bf02d091684c02670cfef105f4b2fae"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: elements/debugger.dart: FileTooLong \u2014 2392 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1892 over it, 4.78\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e63d7289a4d97e3451f209bf6ceeac7564717f054b064c5d0480da08965758a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: NodeCreator: ClassTooLong \u2014 1910 significant lines (blank, comment-only and punctuation-only lines excluded), 51 methods. The bar is 400 significant lines; this is 1510 over it, 4.78\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":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f417ebecc5f7086629df4fadf84d2820b607e50c721225f9d9c2448084786c6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PropertyElementResolver: ClassTooLong \u2014 1886 significant lines (blank, comment-only and punctuation-only lines excluded), 48 methods. The bar is 400 significant lines; this is 1486 over it, 4.72\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":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a0bfb15e380681f8d16965a1ffc392d85d8614e341a2aadec5507980a0bfc7c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/js_helper.dart: FileTooLong \u2014 2353 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1853 over it, 4.71\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":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c482a8aec83aacae2678cbb8db3024db6822a797461469537cfe54ee7eed80a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RelevanceDataCollector: TooManyMethods \u2014 141 methods. The bar is 30 methods; this is 111 over it, 4.70\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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba2800ca03c842be2acb768ffbcf68fb900e64baf3130b98254ddba060aa561"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_flow/summary_collector.dart: FileTooLong \u2014 2315 significant lines (blank, comment-only and punctuation-only lines excluded), about 72% of them inside a single declaration: SummaryCollector (553-2902). The bar is 500 significant lines; this is 1815 over it, 4.63\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c2de136b0246326c3442419fde4356fa71c86270fd1ff577ea692ed739392ad"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FlowAnalysisDebug: TooManyMethods \u2014 137 methods. The bar is 30 methods; this is 107 over it, 4.57\u00D7 the bar. Most of these members implement src.FlowAnalysis (130 of 137 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":2095}}}],"partialFingerprints":{"codehealthFindingId/v1":"4936c66d50478c3ea9743468d04330d51102d6a62590cffe533652c8895e51bf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstantEvaluator: TooManyMethods \u2014 137 methods. The bar is 30 methods; this is 107 over it, 4.57\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":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2607}}}],"partialFingerprints":{"codehealthFindingId/v1":"52343ddea7f5f8e43b671b612c45884125f61761d034cc46849c21ab94ec40d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/visitor.dart: FileTooLong \u2014 2270 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1770 over it, 4.54\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/visitor.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b53784b5671de14164c564d9309f597f7dffe7a9336007dab1ee3795343bfd31"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AstBinaryWriter: TooManyMethods \u2014 136 methods. The bar is 30 methods; this is 106 over it, 4.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_writer.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0df78d7972465a3fa619edd409b0cf3facfdf932f43c103d243b55e96e6241d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FragmentFactoryImpl: ClassTooLong \u2014 1801 significant lines (blank, comment-only and punctuation-only lines excluded), 86 methods. The bar is 400 significant lines; this is 1401 over it, 4.50\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":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"804a1f4eb65f6e2a10c497120aa490a6ac81482e0e10ec9cc561fbb665ba7672"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AstBinaryReader: TooManyMethods \u2014 134 methods. The bar is 30 methods; this is 104 over it, 4.47\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":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"622fe2cf6eacec0b340ad8e09519c6319293d3267485ccc0bb26e3d4c965df27"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DataSourceReader: TooManyMethods \u2014 133 methods. The bar is 30 methods; this is 103 over it, 4.43\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":"pkg/compiler/lib/src/serialization/source.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"d576d127fa29c85b378cc05d67b6c3707929d80d4d03600f572d57682a3d85c0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InferenceVisitorBase: TooManyMethods \u2014 133 methods. The bar is 30 methods; this is 103 over it, 4.43\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":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"39ecf4b05e4ef390ab31ee75d908eea7ed58b438db98aafa1c009c0bd915f58d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ScopeModelBuilder: TooManyMethods \u2014 132 methods. The bar is 30 methods; this is 102 over it, 4.40\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":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"c516edd57a96123c35b97836bcf158e20049f3f117bfea04a67c1c20a8b819e8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FlowAnalysis: TooManyMethods \u2014 131 methods. The bar is 30 methods; this is 101 over it, 4.37\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":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c83c30a2a62bd63c38d15eafde62496d61457ac4d8fcdba61c1b1fa815c063e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _OpTypeAstVisitor: TooManyMethods \u2014 131 methods. The bar is 30 methods; this is 101 over it, 4.37\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":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"31c74c771b3c451eedf99de6873fa919a4d3b3a5664b1a96c9e44ed27016ecbb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: compiler/rewrite_async.dart: FileTooLong \u2014 2171 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1671 over it, 4.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":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b73bba1f35adde4bc4302da9163a26e7b8cab2e45a3e701eb5acaa6973b91d2d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ImpactBuilder: TooManyMethods \u2014 130 methods. The bar is 30 methods; this is 100 over it, 4.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":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa0de320e5caf2e70463e7eb4e484083d97febab71b37032d1769cbf85990ae"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeCheckingVisitor: TooManyMethods \u2014 130 methods. The bar is 30 methods; this is 100 over it, 4.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":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"a38c414fad5995b126ac91dee6b5758a9674356ea43246ba1ee1b2e3367cb291"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SummaryCollector: TooManyMethods \u2014 128 methods. The bar is 30 methods; this is 98 over it, 4.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c290f9825300cacd987e2226fe50acd8cda60299d739390923e0a51a9b8c340"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SsaInstructionSimplifier: ClassTooLong \u2014 1705 significant lines (blank, comment-only and punctuation-only lines excluded), 88 methods. The bar is 400 significant lines; this is 1305 over it, 4.26\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8d7a54f38446d5a8594c6783d839187f40afb8c7766dd25134a41d2bf35e34"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inferrer/builder.dart: FileTooLong \u2014 2105 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1605 over it, 4.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fdf76be5d55682a13e247096ad84d01040a5145c65c582fef4e4975e376e2e9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SummaryCollector: ClassTooLong \u2014 1666 significant lines (blank, comment-only and punctuation-only lines excluded), 128 methods. The bar is 400 significant lines; this is 1266 over it, 4.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"89f98cfd4bb0585809540dacc057324c0557bec01ff0ed1e218a213fa5dcde82"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: arm64/assembler.dart: FileTooLong \u2014 2081 significant lines (blank, comment-only and punctuation-only lines excluded), about 78% of them inside a single declaration: Arm64Assembler (362-2654). The bar is 500 significant lines; this is 1581 over it, 4.16\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"87b45015fb011af0aa466cfe5df8e78bf866b513b1dcd8275199481e364d457f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: JsNodeDeserializer.read: MethodTooLong \u2014 read runs 416 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 316 over it, 4.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":"pkg/compiler/lib/src/common/codegen.dart"},"region":{"startLine":1564}}}],"partialFingerprints":{"codehealthFindingId/v1":"aabe58fea335c966c73c1a658fd30c4c7742475608f60e7fda51b09d33f0644e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/declaration_helper.dart: FileTooLong \u2014 2070 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: DeclarationHelper (30-3229). The bar is 500 significant lines; this is 1570 over it, 4.14\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd7cf4c5270b3f5f3484daae543ee21a9c1ecc60adb6d96a9706612a01011826"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_common/js_typed_array.dart: FileTooLong \u2014 2062 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1562 over it, 4.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":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d88a9ac6d115c3ac3dc89563c66f3e978bb335a0102623b2f4d3f6945b74594"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: IncrementalCompiler: ClassTooLong \u2014 1644 significant lines (blank, comment-only and punctuation-only lines excluded), 61 methods. The bar is 400 significant lines; this is 1244 over it, 4.11\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":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5e2f77a4f032ac8d608d37a99f790610c9f9ef0d02285a5017e8062790495c0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CodeShapeDataCollector: TooManyMethods \u2014 123 methods. The bar is 30 methods; this is 93 over it, 4.10\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":"pkg/analysis_server/tool/code_completion/code_metrics.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"cca3853b4a13994af67abf044eeadca440f3849d970e4f1cc7168e22c07cac76"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ComputableAbstractValueDomain: TooManyMethods \u2014 123 methods. The bar is 30 methods; this is 93 over it, 4.10\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":"pkg/compiler/lib/src/inferrer/computable.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"febe50db75bf549e00fc0db0ef93403c0f3cac95fb007c46b420b820d5cc54c1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JsKernelToElementMap: TooManyMethods \u2014 123 methods. The bar is 30 methods; this is 93 over it, 4.10\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":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c517563e7c141ba1d802c743cfaa0a89203a4228b0d7fc0892553ff0f534927"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AsyncRewriterBase: TooManyMethods \u2014 123 methods. The bar is 30 methods; this is 93 over it, 4.10\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":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fed759f5986012942e1af71595b79214e789f75a38130bc70a60b2ee3217169"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DietListener: TooManyMethods \u2014 123 methods. The bar is 30 methods; this is 93 over it, 4.10\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":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"475fed6dfedf8ef7d61e127d97d892f02b3ef7fd77053cbb8355bc67a612c6bd"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Intrinsifier.generateMemberIntrinsic: MethodTooLong \u2014 generateMemberIntrinsic runs 410 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 310 over it, 4.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":3594}}}],"partialFingerprints":{"codehealthFindingId/v1":"56dee606f3aadfbaf7d1a22b0e4d6fcea2e12588d2b20efb52a5566647f28e4f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ForwardingListener: ClassTooLong \u2014 1633 significant lines (blank, comment-only and punctuation-only lines excluded), 379 methods. The bar is 400 significant lines; this is 1233 over it, 4.08\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":"pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e41ac5a232f2791802f70f3ee770ba22a81371055bd24aed02076266ef93f3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AstBinaryReader: ClassTooLong \u2014 1633 significant lines (blank, comment-only and punctuation-only lines excluded), 134 methods. The bar is 400 significant lines; this is 1233 over it, 4.08\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":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"87587b69352c757bf25343e24ddc4b0555d7ff9989589d917f2ea4f7800ed4dd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AsyncRewriterBase: TooManyMethods \u2014 122 methods. The bar is 30 methods; this is 92 over it, 4.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":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd6b508b06f100239e41f18bfbb9479da228d870a473ba32e6a9e4d548364a80"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KernelToElementMap: TooManyMethods \u2014 122 methods. The bar is 30 methods; this is 92 over it, 4.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":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f83f801c81f36331e813c521c64ccff013f8df89e9abc84f9cae682e8f5be814"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Arm64Assembler: ClassTooLong \u2014 1619 significant lines (blank, comment-only and punctuation-only lines excluded), 182 methods. The bar is 400 significant lines; this is 1219 over it, 4.05\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":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cabb6aefdc6ae3073f9c70157ad693384bc5618c4922180709e40158e44691c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_ast/nodes.dart: FileTooLong \u2014 2016 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1516 over it, 4.03\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ad0cf3be1372c065d877a62bef83b0b1ba825159f2ac25994c6cc2e2a7b3940"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SourceClassBuilder: ClassTooLong \u2014 1611 significant lines (blank, comment-only and punctuation-only lines excluded), 67 methods. The bar is 400 significant lines; this is 1211 over it, 4.03\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":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf7ba9216c12c531fb8a9b6447731bfffff3dbf1e84ef4c90883aa974204a96"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VmServerConnection._delegateRequest: MethodTooLong \u2014 _delegateRequest runs 402 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 302 over it, 4.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service_interface/lib/src/vm_service_interface.dart"},"region":{"startLine":1403}}}],"partialFingerprints":{"codehealthFindingId/v1":"1502334f93b7ae9d773299e376e2e0e3a057016e23d7861c30b1782865271ade"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ResolutionVisitor: TooManyMethods \u2014 120 methods. The bar is 30 methods; this is 90 over it, 4.00\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":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"8687f838555338a451036f99d99feab75f1e23ed9afe55ac8d138bce56b96454"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TrivialAbstractValueDomain: TooManyMethods \u2014 120 methods. The bar is 30 methods; this is 90 over it, 4.00\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":"pkg/compiler/lib/src/inferrer/trivial.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3b128c41db2e1ccaeea05e40f45f5f14b1220517c0ecfff5c70d7243bd3ad8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Translator: ClassTooLong \u2014 1592 significant lines (blank, comment-only and punctuation-only lines excluded), 104 methods. The bar is 400 significant lines; this is 1192 over it, 3.98\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":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b0f1718cd80396c10601d70a18f125cf707c437f39d57d5d7d14562f0167f78"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js/rewrite_async.dart: FileTooLong \u2014 1970 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1470 over it, 3.94\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee60d0d48350c0c341d0c610ccbe006633f3b7828c169379ef49e60e241026a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dartfuzz/dartfuzz.dart: FileTooLong \u2014 1966 significant lines (blank, comment-only and punctuation-only lines excluded), about 80% of them inside a single declaration: DartFuzz (484-2840). The bar is 500 significant lines; this is 1466 over it, 3.93\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"491e4d93d5c6359cc438fc3d31004d387f626bbc257a62d29947910a73f50a77"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: JsKernelToElementMap: ClassTooLong \u2014 1572 significant lines (blank, comment-only and punctuation-only lines excluded), 123 methods. The bar is 400 significant lines; this is 1172 over it, 3.93\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":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d9f95da542914271050575bb8a79a8d00424f25ab506803682be78199b7a5b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartFuzz: ClassTooLong \u2014 1565 significant lines (blank, comment-only and punctuation-only lines excluded), 107 methods. The bar is 400 significant lines; this is 1165 over it, 3.91\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":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc7a862ba590b3448bff9f0417bdf542f5c8ddd55f14bf3cc5ad42d47a2bd37"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: correction/fix.dart: FileTooLong \u2014 1952 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: DartFixKind (34-2541). The bar is 500 significant lines; this is 1452 over it, 3.90\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"220ab13176f774756b31e3163201803e0bd7bc7951556c2aa589e869d3916a21"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DataSinkWriter: TooManyMethods \u2014 117 methods. The bar is 30 methods; this is 87 over it, 3.90\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":"pkg/compiler/lib/src/serialization/sink.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2d97e8ac2c8d85f6272a808b5a2381965e4bd49d3c4aa81337820d6a4ffa762"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/property_element_resolver.dart: FileTooLong \u2014 1942 significant lines (blank, comment-only and punctuation-only lines excluded), about 97% of them inside a single declaration: PropertyElementResolver (34-2705). The bar is 500 significant lines; this is 1442 over it, 3.88\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8cc68599ab1a3fafcd070bea191cc361cfb789c5a8bc8ea54b319a50478f819"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/node_creator.dart: FileTooLong \u2014 1934 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: NodeCreator (19-2509). The bar is 500 significant lines; this is 1434 over it, 3.87\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8df40a5b820214088d5a42e6edf3209f9dee4c74a06cb157e63c5930e73882e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_flow/transformer.dart: FileTooLong \u2014 1923 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1423 over it, 3.85\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":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3783f84c36b9c33f50b31f74d7e2771570c8fe8005d9804ae31388edbc4181c4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: constant/value.dart: FileTooLong \u2014 1910 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1410 over it, 3.82\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"da342b6e5a1062ac014e2af349ceb8e43e80b7439908b4af96a3c87d257a9d1a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AstToIr: ClassTooLong \u2014 1527 significant lines (blank, comment-only and punctuation-only lines excluded), 106 methods. The bar is 400 significant lines; this is 1127 over it, 3.82\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":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f99b5810b902efe77352e62ecb3dec9b7b2ca5466b243231afe0e664646bf6a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fine/requirements.dart: FileTooLong \u2014 1904 significant lines (blank, comment-only and punctuation-only lines excluded), about 65% of them inside a single declaration: RequirementsManifest (864-2793). The bar is 500 significant lines; this is 1404 over it, 3.81\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/requirements.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e62270db1a421920f6c8f2bf3420644d327d049b6e00d0f45aab72e1e0cb8f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceLoader: TooManyMethods \u2014 114 methods. The bar is 30 methods; this is 84 over it, 3.80\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":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0f479b7144e7436803a18ea81295d0392f1e13e00d4db12d796fc60d760885d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MethodInvocationResolver: ClassTooLong \u2014 1498 significant lines (blank, comment-only and punctuation-only lines excluded), 38 methods. The bar is 400 significant lines; this is 1098 over it, 3.75\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":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"7548bfa3462f678fa680ea57689019198a22c0015677841f56177dab9b604854"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/type_analyzer.dart: FileTooLong \u2014 1870 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1370 over it, 3.74\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":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"435b3a3192246e3f9d7341d93d45c9c86c45b0ffa76be427a5720feb9f147217"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartDebugAdapter: ClassTooLong \u2014 1495 significant lines (blank, comment-only and punctuation-only lines excluded), 102 methods. The bar is 400 significant lines; this is 1095 over it, 3.74\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":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"48bdd3a988574677d4301ccc5efbc815aa7bece8eeaf5a31a6eaf6cb9e7d9230"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/fragment_factory_impl.dart: FileTooLong \u2014 1868 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: FragmentFactoryImpl (70-2461). The bar is 500 significant lines; this is 1368 over it, 3.74\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7fce064e461ae62b4bc111d25153b11541a750c56ac10e27b6fc0527ffc1363"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/nodes.dart: FileTooLong \u2014 1867 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1367 over it, 3.73\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d28c1bdbdf0ff688d141c24b515af26a853c1a61ea43e471e0ee537cc74c600"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CommonMasks: TooManyMethods \u2014 112 methods. The bar is 30 methods; this is 82 over it, 3.73\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":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"16a2ffc89c9b7b49879c4380da838f340f8e373246e0b6fe9960ca7e2016f643"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BytecodeAssembler: TooManyMethods \u2014 112 methods. The bar is 30 methods; this is 82 over it, 3.73\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":"pkg/dart2bytecode/lib/assembler.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc1fd94c0679066bc5ffd6c3b33197cbbfa088bd2754aef1aba800413dc2803"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_model/element_map_impl.dart: FileTooLong \u2014 1861 significant lines (blank, comment-only and punctuation-only lines excluded), about 84% of them inside a single declaration: JsKernelToElementMap (52-2390). The bar is 500 significant lines; this is 1361 over it, 3.72\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"23bdaad2b8b71e77b53c5613ede5a784c6d2ae22e32ae8c42a5c673e370d153d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/codegen.dart: FileTooLong \u2014 1847 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1347 over it, 3.69\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":"pkg/compiler/lib/src/common/codegen.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e03be54e83cfcecca49a868d6b5a25a1218129711c94949a4639c0986e6bee85"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analysis/driver.dart: FileTooLong \u2014 1838 significant lines (blank, comment-only and punctuation-only lines excluded), about 74% of them inside a single declaration: AnalysisDriver (113-2558). The bar is 500 significant lines; this is 1338 over it, 3.68\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c16534ef103694cf24c508c789f0c0ffecdc81b61dc1139208b97e549c6fdc8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _BigIntImpl: ClassTooLong \u2014 1469 significant lines (blank, comment-only and punctuation-only lines excluded), 84 methods. The bar is 400 significant lines; this is 1069 over it, 3.67\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":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d03d3d179657bcb11866cc6b37d270d4389fc8f1aa67b232057f98eab5a8a393"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _DartUnitHighlightsComputerVisitor: TooManyMethods \u2014 110 methods. The bar is 30 methods; this is 80 over it, 3.67\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":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"f075df2e4d83486c58d355d838f89834959f1b9c78f4095ae806216a21a36b77"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HBaseVisitor: TooManyMethods \u2014 110 methods. The bar is 30 methods; this is 80 over it, 3.67\u00D7 the bar. Most of these members implement src.HVisitor (93 of 110 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"a115436f74fae2d913d3d2eaebd095412cbaa7d4bbb7806e05067a4ce12cc1c5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Printer: TooManyMethods \u2014 110 methods. The bar is 30 methods; this is 80 over it, 3.67\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":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"9221b77ba6d76dd4905d3410be31354c9e5d88d5799a1835b33525c7509a1a80"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/source_class_builder.dart: FileTooLong \u2014 1833 significant lines (blank, comment-only and punctuation-only lines excluded), about 88% of them inside a single declaration: SourceClassBuilder (99-2371). The bar is 500 significant lines; this is 1333 over it, 3.67\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ef3636d55dfc93e3cc71ba802bce4e19531fca35d9fdaf23bd8ea863438cf2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fine/manifest_item.dart: FileTooLong \u2014 1812 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1312 over it, 3.62\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_item.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb0bc0e68a3dd89d6d1c54e6c20dca8ca1c965ca872ae329110e77314c43dee5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase._inferInvocation: MethodTooLong \u2014 _inferInvocation runs 361 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 261 over it, 3.61\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":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1734}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6b1b4b8a7f4d89e1bb070be9cdab293269da6042544ae7683ede45be5aa6936"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Printer: TooManyMethods \u2014 108 methods. The bar is 30 methods; this is 78 over it, 3.60\u00D7 the bar. Most of these members implement src.NodeVisitor (76 of 108 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ac002d9688069c4e80fe7cb73039137a0451a1da5a9532cc733ae1728c55634"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _FfiUseSiteTransformer._visitStaticInvocation: MethodTooLong \u2014 _visitStaticInvocation runs 360 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 260 over it, 3.60\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":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"58b07d77da63d0a4605ab8c86b8e0075bbf66567af8b6fc63dd68f477256f414"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartFuzz: TooManyMethods \u2014 107 methods. The bar is 30 methods; this is 77 over it, 3.57\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":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cb26647140c20baf208a875cd176adfaa17fa482743566c3401d3d8cb0a5170"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/bigint_patch.dart: FileTooLong \u2014 1783 significant lines (blank, comment-only and punctuation-only lines excluded), about 82% of them inside a single declaration: _BigIntImpl (117-2714). The bar is 500 significant lines; this is 1283 over it, 3.57\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"864603bd5e4dc2f79a9399fb89eea914a1f051fa47d8072ad97e0c1634f5d935"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary2/informative_data.dart: FileTooLong \u2014 1775 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1275 over it, 3.55\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"00455dfb0495657ebf0b1db93ee7c7d517ffc73e763ea930a1195e86b7b6cb0d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ToSourceVisitor: ClassTooLong \u2014 1419 significant lines (blank, comment-only and punctuation-only lines excluded), 238 methods. The bar is 400 significant lines; this is 1019 over it, 3.55\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":"pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d812ddd5ea68b7233faf51852a4b6bfdeeac14fe396dc8048d57ff617d0d10"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartLib: ClassTooLong \u2014 1419 significant lines (blank, comment-only and punctuation-only lines excluded), 2 methods. The bar is 400 significant lines; this is 1019 over it, 3.55\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":"runtime/tools/dartfuzz/dartfuzz_api_table.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f2227506dc9632d703c7032d82048aed78d2521f283ba483f54b2ae048ab50d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/convert_patch.dart: FileTooLong \u2014 1769 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1269 over it, 3.54\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b7382002e267062a1195c7bb634e1b038e3aa63eb98e9002a38d0da80883fd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AstToIr: TooManyMethods \u2014 106 methods. The bar is 30 methods; this is 76 over it, 3.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"32bb5a472a0c879f1acc384bad8c49be841bc6554a63cb80529fa72ec1dad382"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _VerifyingVisitor: ClassTooLong \u2014 1408 significant lines (blank, comment-only and punctuation-only lines excluded), 147 methods. The bar is 400 significant lines; this is 1008 over it, 3.52\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":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"a31c95ed5837e43ccbd2cfd39f1c3d3650690cf3639a34947d90b50113e8c431"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/object_table.dart: FileTooLong \u2014 1744 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1244 over it, 3.49\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/object_table.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3635811757709ab8eb286e01b56b004727e6b850bd03d74c9efa616bb3fa157b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/builder_factory.dart: FileTooLong \u2014 1741 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1241 over it, 3.48\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f151b95d751456c467843da5d127c88477e891c28039df178490d0633ab8c583"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Translator: TooManyMethods \u2014 104 methods. The bar is 30 methods; this is 74 over it, 3.47\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":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"9981584e2d5831ff8b91585cb89bc506a948535080786c6604653e57f089121a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TypeUseGenerator.buildSelectorAccess: MethodTooLong \u2014 buildSelectorAccess runs 344 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 244 over it, 3.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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":4698}}}],"partialFingerprints":{"codehealthFindingId/v1":"32e375824c395cfe779f9f0f6fe461d0604bc44bca2a71fd41f33ae5c269a702"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: adapters/dart.dart: FileTooLong \u2014 1706 significant lines (blank, comment-only and punctuation-only lines excluded), about 88% of them inside a single declaration: DartDebugAdapter (332-3274). The bar is 500 significant lines; this is 1206 over it, 3.41\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbb9f4829f33236a8f03e99b786f93a0feafacf685e39fd756ace9ec969b4f90"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HInstructionStringifier: TooManyMethods \u2014 102 methods. The bar is 30 methods; this is 72 over it, 3.40\u00D7 the bar. Most of these members implement src.HVisitor (93 of 102 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/tracer.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98eaee2859247b37dba295df9e0ffb458bdb5ce0723ea5b90cae63772472fc5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartDebugAdapter: TooManyMethods \u2014 102 methods. The bar is 30 methods; this is 72 over it, 3.40\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":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6a43952ad4125ae7a2c59d49b250f137f6c31fafc7d3bfd82728020c2f2b65"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AnalysisDriver: ClassTooLong \u2014 1357 significant lines (blank, comment-only and punctuation-only lines excluded), 101 methods. The bar is 400 significant lines; this is 957 over it, 3.39\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":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef1ae694b19cf13a359dfaa573491a1d47326de2fb660d879dc7e2f5ce5b4f0a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scanner/token.dart: FileTooLong \u2014 1695 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1195 over it, 3.39\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/token.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"18facc411f963e9fdeed0e8dfc7155ef5c20fd4112d034d00ec7516902be0bfe"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _HttpParser._doParse: MethodTooLong \u2014 _doParse runs 339 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 239 over it, 3.39\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea63e5cf92131ed630ae37a79e5af710bc46361c50c9c10b67f75ba63a0ea14d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FfiTransformer: ClassTooLong \u2014 1355 significant lines (blank, comment-only and punctuation-only lines excluded), 38 methods. The bar is 400 significant lines; this is 955 over it, 3.39\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":"pkg/vm/lib/modular/transformations/ffi/common.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"627a8b9cd11ac5d7d5b24f21587fa01d328fde79b734e4816c6e7b5e83b727cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: code_completion/relevance_table_generator.dart: FileTooLong \u2014 1688 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1188 over it, 3.38\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":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"85c4b3891a4d752453116c611396a409f43a0bc155e1a5c949e5f1df8b887c5f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AnalysisDriver: TooManyMethods \u2014 101 methods. The bar is 30 methods; this is 71 over it, 3.37\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":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc4a9c1bdec04228b7d70d53a022dd8fa979a54dc3f7fea5ec49123c168d7ff2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: files/token.dart: FileTooLong \u2014 1682 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1182 over it, 3.36\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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/token.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"14e86848ef875e09172cc6f5fec53805156fc76e687d6be533b9575d1896d76d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ReferenceDependenciesCollector: TooManyMethods \u2014 100 methods. The bar is 30 methods; this is 70 over it, 3.33\u00D7 the bar. Most of these members implement repository.ExpressionVisitor (67 of 100 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/deferred_load/dependencies.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6992eb9bb7f310751ab972b71676fc4e6ce4ece9478de6ec5b4da2b133d5aba"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: front_end/ast_to_ir.dart: FileTooLong \u2014 1656 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: AstToIr (41-2236). The bar is 500 significant lines; this is 1156 over it, 3.31\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3e0721fb1f39eabe53ab5eaf9d6e36ab5ff1b754087479e23daecb1aae85452"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractScanner: TooManyMethods \u2014 99 methods. The bar is 30 methods; this is 69 over it, 3.30\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":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f4c46a7c8f240f8924f9a652c263c5143525640ce6c7e8ad24b3a27c0bd964"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary2/ast_binary_reader.dart: FileTooLong \u2014 1648 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: AstBinaryReader (22-2132). The bar is 500 significant lines; this is 1148 over it, 3.30\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"76cf136c649dbc35643a4c045c4708e1409405e487ab5605280535e6f08f5646"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dwarf.dart: FileTooLong \u2014 1647 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1147 over it, 3.29\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/dwarf.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c8584cfb18f0e81128edab9b93e0ee35647c9123c60a2d84b10f714e0fdd16d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/forwarding_listener.dart: FileTooLong \u2014 1645 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: ForwardingListener (10-2503). The bar is 500 significant lines; this is 1145 over it, 3.29\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"77628c97adaae433d73cab6cd6beb6a50ec42c936a7fd264bfc7bfd99e55518c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ffi/use_sites.dart: FileTooLong \u2014 1645 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1145 over it, 3.29\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8963f3e1027d8dd9ce3ecaacd4a9520d6d253b6ca3b6287ddb4a1fb57d6a99b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: snapshot/snapshot.dart: FileTooLong \u2014 1631 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1131 over it, 3.26\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":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"14bedd1f905738960a4015fe2bc8c081e4ca7218464c2d43bcf9146df54dd30c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary2/element_builder.dart: FileTooLong \u2014 1616 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1116 over it, 3.23\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cc9176e7299ae853b2f092fd195414dc61a014f2dc65dfbae8ac67732206b65"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/types.dart: FileTooLong \u2014 1607 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1107 over it, 3.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9fc9e83a09e9901d399f7e405ebe42314d310e42470a888e25dc6cebf469f78"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/verifier.dart: FileTooLong \u2014 1600 significant lines (blank, comment-only and punctuation-only lines excluded), about 88% of them inside a single declaration: _VerifyingVisitor (150-2271). The bar is 500 significant lines; this is 1100 over it, 3.20\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6d02a86bb8e925005fe07d4d4fde46d138a81fc54554a53395168bd0350505c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/element_map_impl.dart: FileTooLong \u2014 1594 significant lines (blank, comment-only and punctuation-only lines excluded), about 76% of them inside a single declaration: KernelToElementMap (59-1911). The bar is 500 significant lines; this is 1094 over it, 3.19\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6acf9e90d79ec393b51b756cbce03cdd62f5a158aa50fb6a34f8bc8b354b45"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/frontend_server.dart: FileTooLong \u2014 1587 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1087 over it, 3.17\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9e18e0f6864a15da13e79469315aa39b9fe8b66d15b5e0cc67f20f262bbe9bb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inferrer/type_graph_nodes.dart: FileTooLong \u2014 1584 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1084 over it, 3.17\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"35bf05a26a667ffa09daa6628cb223d586f786efdb3496097f06b0ecf56eb82c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InspectPage._visitObject: MethodTooLong \u2014 _visitObject runs 315 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 215 over it, 3.15\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/app/page.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"45733a594db53e6b9bb80cf65c233c9710fd36779ec6597617ea1ba79a50df35"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: code_completion/relevance_metrics.dart: FileTooLong \u2014 1574 significant lines (blank, comment-only and punctuation-only lines excluded), about 78% of them inside a single declaration: RelevanceDataCollector (214-2112). The bar is 500 significant lines; this is 1074 over it, 3.15\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a72538413c8cc58b6ad83c611bed4992034627f7f7247f0099c5ef1a509e30f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/variables.dart: FileTooLong \u2014 1567 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1067 over it, 3.13\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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8996784d49b217b9978cf58a44d55c13a7d470a3f1474e6cff4cbb1c657c044"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: VmService: TooManyMethods \u2014 94 methods. The bar is 30 methods; this is 64 over it, 3.13\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"a39838ffd48b6af8c0644fcd1da56f17d40c30dbb69eaf3314a9c7e53c91c225"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/generator.py: FileTooLong \u2014 1566 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1066 over it, 3.13\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":"tools/dom/scripts/generator.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e83b57b31f0a3cce067a61186d5b6c10690d5c5c21b086e2486963d48354b16"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ConstantVisitor: ClassTooLong \u2014 1248 significant lines (blank, comment-only and punctuation-only lines excluded), 68 methods. The bar is 400 significant lines; this is 848 over it, 3.12\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d7626ea4772ae09515d42170c707b1974b6b94c833675e7b650801ea4cd875"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/collection_encoding.dart: FileTooLong \u2014 1555 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1055 over it, 3.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"67feffa8b848e5833f85ecd5bcd2956a6767b5f28a8aa22050f86f934ed77c7b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HVisitor: TooManyMethods \u2014 93 methods. The bar is 30 methods; this is 63 over it, 3.10\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"309545edc8be801372d32321002300fa591cc1d323543eeebd93fd63e433cb5b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: KernelTarget: ClassTooLong \u2014 1233 significant lines (blank, comment-only and punctuation-only lines excluded), 55 methods. The bar is 400 significant lines; this is 833 over it, 3.08\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":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"f23737cab997717726b1f4d2292d1bcd02f43598d20ed643ecb7312c5158540d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RequirementsManifest: ClassTooLong \u2014 1229 significant lines (blank, comment-only and punctuation-only lines excluded), 68 methods. The bar is 400 significant lines; this is 829 over it, 3.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":"pkg/analyzer/lib/src/fine/requirements.dart"},"region":{"startLine":864}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf1052d7fd4f177bbe6deebb9b692fdbc07a1bdc52a684708b161974f03fc62f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scanner/abstract_scanner.dart: FileTooLong \u2014 1535 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1035 over it, 3.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":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a93b440e2cdc94084bb13c7295f420e7845a4ccfdf459f10c4f44cbfc360d67"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DataExtractor: TooManyMethods \u2014 92 methods. The bar is 30 methods; this is 62 over it, 3.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":"pkg/front_end/lib/src/testing/id_extractor.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"683b0f3443a94140919d25ec42a6f8b52dd78c9ba89df999032d475f8420d7b3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/printer.dart: FileTooLong \u2014 1533 significant lines (blank, comment-only and punctuation-only lines excluded), about 78% of them inside a single declaration: Printer (88-1775). The bar is 500 significant lines; this is 1033 over it, 3.07\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c01604112a724d7b795c922daaf3b09c8b2169910b6ccc65e0b8d14649e4dc3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RelevanceDataCollector: ClassTooLong \u2014 1226 significant lines (blank, comment-only and punctuation-only lines excluded), 141 methods. The bar is 400 significant lines; this is 826 over it, 3.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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ec1f9e8861b71cf469f0a55c366764ab5911c7ee4e623fca117d4d1a4162542"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: hierarchy/members_node.dart: FileTooLong \u2014 1529 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1029 over it, 3.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":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b0ad316fbbb6e7db6c1ef3d83026c634f6e617e06b6017527f5ebe53a590c31"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: generators/ast_generator.dart: FileTooLong \u2014 1525 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1025 over it, 3.05\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":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca049ab2eb2ae9f31251327c506acc336585332211f684e8d211790a7896ea8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ffi/common.dart: FileTooLong \u2014 1521 significant lines (blank, comment-only and punctuation-only lines excluded), about 89% of them inside a single declaration: FfiTransformer (184-2046). The bar is 500 significant lines; this is 1021 over it, 3.04\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/common.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcb3507aa19c0f2f05a496176cdb1af3c1cf85310807f486a4d50463aebbd606"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/method_invocation_resolver.dart: FileTooLong \u2014 1520 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: MethodInvocationResolver (28-2057). The bar is 500 significant lines; this is 1020 over it, 3.04\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7704ff730e263b36c59eda8bf8d6fbd92671dc8f3df0f05b225d63d3482f2832"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BestPracticesVerifier: TooManyMethods \u2014 91 methods. The bar is 30 methods; this is 61 over it, 3.03\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":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"1082cd8b726629101b97817ec071ccd1d293979dc3a527ee2dc3b5c095f7d4d8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Tokens: TooManyMethods \u2014 91 methods. The bar is 30 methods; this is 61 over it, 3.03\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":"pkg/analyzer/lib/src/summary2/ast_binary_tokens.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"8404db7fc6acb1244ab5a59361cd9f7ad93e28fddf5ea1fd61a1f8dcf4c78bba"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InstantiatorGeneratorVisitor: TooManyMethods \u2014 91 methods. The bar is 30 methods; this is 61 over it, 3.03\u00D7 the bar. Most of these members implement src.NodeVisitor (76 of 91 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"a20fc7d0d0144364980690e5d55adf2a32c8f3d1be3a5d175d3c7ab9fe69e8c6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Resolver: ClassTooLong \u2014 1209 significant lines (blank, comment-only and punctuation-only lines excluded), 23 methods. The bar is 400 significant lines; this is 809 over it, 3.02\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":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"696521d1a6ed39a5b1a487c673625b8bb0a533170be0de647183e282abfeb074"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: KernelToElementMap: ClassTooLong \u2014 1207 significant lines (blank, comment-only and punctuation-only lines excluded), 122 methods. The bar is 400 significant lines; this is 807 over it, 3.02\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":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7957cd921a0ed28d98ed11c7f1f2757ab375f417778d195030cfbfd34803f8b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dump_info.dart: FileTooLong \u2014 1503 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1003 over it, 3.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c0dbe4e2a34c65ec9f2a733f9a1636a914ff132290e30848eae22f7cc558b4"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Printer: ClassTooLong \u2014 1202 significant lines (blank, comment-only and punctuation-only lines excluded), 110 methods. The bar is 400 significant lines; this is 802 over it, 3.01\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":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ef96d500d3f55d9fda27101d4a7bd036b7425cc9430395b4c5872119c800118"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: error/best_practices_verifier.dart: FileTooLong \u2014 1502 significant lines (blank, comment-only and punctuation-only lines excluded), about 75% of them inside a single declaration: BestPracticesVerifier (44-1800). The bar is 500 significant lines; this is 1002 over it, 3.00\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"84fceb14c94acad5e13bf9d6386d63f5dff0f794524e2f16f298044bdabf08c5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/type_algebra.dart: FileTooLong \u2014 1502 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 1002 over it, 3.00\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"55989a5fc3a8686b6cbe8b8955877421cc00529eca756e549fae99c29e21c814"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_flow/analysis.dart: FileTooLong \u2014 1498 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 998 over it, 3.00\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fecb9f4dbede131d23fbf811262a8ab68dbc5269013f165b3835ac501ab4c452"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: elements/types.dart: FileTooLong \u2014 1486 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 986 over it, 2.97\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":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"526f0e7ffb9a1b8c0eb7094b918cd2eb345b9aec549eb251ec5e1490a5f601ce"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DeclarationHelper: TooManyMethods \u2014 89 methods. The bar is 30 methods; this is 59 over it, 2.97\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":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeffda8e926fb90d89c40c54af39f80689473c56fb1a3d120e2d5524e99e2da1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractScanner: TooManyMethods \u2014 89 methods. The bar is 30 methods; this is 59 over it, 2.97\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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe280c767d451645a18ba307ec7b7a0017d667a2082fd5c702bcb2337945116e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _OffsetsAstVisitor: TooManyMethods \u2014 89 methods. The bar is 30 methods; this is 59 over it, 2.97\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":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":1868}}}],"partialFingerprints":{"codehealthFindingId/v1":"94d09b781e8d5676330ab9b00d8aaca8e62969372d1ed687d15612e2a93e1280"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SizeEstimator: TooManyMethods \u2014 89 methods. The bar is 30 methods; this is 59 over it, 2.97\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":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7911b42eda38282691b601ef04df4841045247c749e2dd3c792be0545875191"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartEditBuilderImpl: ClassTooLong \u2014 1185 significant lines (blank, comment-only and punctuation-only lines excluded), 54 methods. The bar is 400 significant lines; this is 785 over it, 2.96\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":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"c65ab1a3ed203657a3d3417198f812c8aa122eaec72768689b90b2bc39dcf19e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analysis/search.dart: FileTooLong \u2014 1479 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 979 over it, 2.96\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"61389af64a3d5f30c1aa6f259f9c154b0d5c01e01cbc6028a59412e7ad43402c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/constants.dart: FileTooLong \u2014 1477 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 977 over it, 2.95\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd8a42f8fd3c326efa5e474e5d9078226074208f3391397e26a26da49aa3735"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: computer/computer_highlights.dart: FileTooLong \u2014 1475 significant lines (blank, comment-only and punctuation-only lines excluded), about 65% of them inside a single declaration: _DartUnitHighlightsComputerVisitor (736-2154). The bar is 500 significant lines; this is 975 over it, 2.95\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9d4b85a2e200d9eafe515cfc4bfc3626a660b323935284092d363d5af4301b0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase.inferMethodInvocation: MethodTooLong \u2014 inferMethodInvocation 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":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3621}}}],"partialFingerprints":{"codehealthFindingId/v1":"483600aecb024f3f9fd7d74d38f674ccd0e5f03b6a5920461f504be5faf4fd23"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _OpTypeAstVisitor: ClassTooLong \u2014 1174 significant lines (blank, comment-only and punctuation-only lines excluded), 131 methods. The bar is 400 significant lines; this is 774 over it, 2.94\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":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1f7725e2b28b0dc1230d7e0b8eba352f0218b2e878458652dbca93488c15f79"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SsaInstructionSimplifier: TooManyMethods \u2014 88 methods. The bar is 30 methods; this is 58 over it, 2.93\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":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9df7345a3415208c6428c676c192bfbd45fdbf11d87d522374a875c26b1e4a2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ClassMembersNodeBuilder.build: MethodTooLong \u2014 build runs 292 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 192 over it, 2.92\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dae8ba1655ba789d17d92639c7dc404d4a2d2fbe8d13f79fe28204b7be499c7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_backend/namer.dart: FileTooLong \u2014 1446 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 946 over it, 2.89\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":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c6c8f948617e3d2b9cf739379aee6e1edca479233530a550b3148a26e156a60"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_ast/printer.dart: FileTooLong \u2014 1446 significant lines (blank, comment-only and punctuation-only lines excluded), about 80% of them inside a single declaration: Printer (71-1678). The bar is 500 significant lines; this is 946 over it, 2.89\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"360307d52c4566fb23089a50aea320ff06f15ed615d70c9c207e27a1c9c00e42"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Printer: ClassTooLong \u2014 1155 significant lines (blank, comment-only and punctuation-only lines excluded), 108 methods. The bar is 400 significant lines; this is 755 over it, 2.89\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":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2f4fcf87eb8d2308a3258f153d5b7b4e9bb6144db80364c3387c14b60b0ac53"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TokensContext.binaryToAstTokenType: MethodTooLong \u2014 binaryToAstTokenType runs 288 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 188 over it, 2.88\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":"pkg/analyzer/lib/src/summary2/tokens_context.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d26a0f06ab5d1ad11086c0aff0049d25f8e2d8e80ecd825b1404e7d05de91d3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TokensWriter.astToBinaryTokenType: MethodTooLong \u2014 astToBinaryTokenType runs 287 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 187 over it, 2.87\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":"pkg/analyzer/lib/src/summary2/tokens_writer.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d94b7d3f4f649a1813d9c3abbf6d341c72427be58f4c0128a25a21e5eb8a628"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BaseVisitor: TooManyMethods \u2014 86 methods. The bar is 30 methods; this is 56 over it, 2.87\u00D7 the bar. Most of these members implement src.NodeVisitor (76 of 86 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b4012772246a6ddbe1c757cdabd12402d5e8731b22fb1daf6eea904c88d419"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FragmentFactoryImpl: TooManyMethods \u2014 86 methods. The bar is 30 methods; this is 56 over it, 2.87\u00D7 the bar. Most of these members implement src.FragmentFactory (76 of 86 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"260f07d197a6b6e0f776771992464ebe9c962b6a74110ca7226dec35b16470fb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InstantiatorGeneratorVisitor: TooManyMethods \u2014 86 methods. The bar is 30 methods; this is 56 over it, 2.87\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":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"f670a0555aadd2072da28f4ad22a321aa17bb825a4cafe4a22b3f88d35d40fe4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSArray: TooManyMethods \u2014 86 methods. The bar is 30 methods; this is 56 over it, 2.87\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":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"265aff4872fc5e7dfe92d00de4c3fe6d94c24c943dabb15fc890e14a11aec92c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RecursiveParserAstVisitorWithDefaultNodeAsync: ClassTooLong \u2014 1140 significant lines (blank, comment-only and punctuation-only lines excluded), 377 methods. The bar is 400 significant lines; this is 740 over it, 2.85\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":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":12490}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a3aeffd5ad96c57834d2125bc8bc2aac8720441cc0e0cecd6a1ccc4ff7387d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/to_source_visitor.dart: FileTooLong \u2014 1422 significant lines (blank, comment-only and punctuation-only lines excluded), about 100% of them inside a single declaration: ToSourceVisitor (11-1988). The bar is 500 significant lines; this is 922 over it, 2.84\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"07f59fc7f5627c5730cd12392f3b89ad06228a02d942c19febf8036f7d24a456"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dartfuzz/dartfuzz_api_table.dart: FileTooLong \u2014 1421 significant lines (blank, comment-only and punctuation-only lines excluded), about 100% of them inside a single declaration: DartLib (21-2537). The bar is 500 significant lines; this is 921 over it, 2.84\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz_api_table.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"042520b76855b2854402b57734f4a37b38a80db9191bd3e06d98a75b7aaba098"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fine/library_manifest.dart: FileTooLong \u2014 1418 significant lines (blank, comment-only and punctuation-only lines excluded), about 61% of them inside a single declaration: LibraryManifestBuilder (269-1638). The bar is 500 significant lines; this is 918 over it, 2.84\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"903f89925f2fa55025a6823cbfc02c98f82d2db4b7e743f9a19e65b6dbc99507"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analysis/file_state.dart: FileTooLong \u2014 1417 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 917 over it, 2.83\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":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21f35b96c9fd7cd14cd10b86bce74413b0cda80f054d9f0c9a23e8a0bdeb01e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeAnalyzerOperations: TooManyMethods \u2014 85 methods. The bar is 30 methods; this is 55 over it, 2.83\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":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f2eeced682497b7de00f19c3d50573ad89c9fe4fcdf565f2076009d0066713"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: private/native_typed_data.dart: FileTooLong \u2014 1413 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 913 over it, 2.83\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":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea89293896b5d3b8f1460d1ce2376b8c2f9a85fe2a56b90baf18426f1edae8df"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/native_typed_data.dart: FileTooLong \u2014 1404 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 904 over it, 2.81\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"378b17ef8bb7e53685f30482082d7c297852deae8df5527b04bb9c724173b239"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _BigIntImpl: ClassTooLong \u2014 1121 significant lines (blank, comment-only and punctuation-only lines excluded), 76 methods. The bar is 400 significant lines; this is 721 over it, 2.80\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":"sdk/lib/_internal/js_runtime/lib/bigint_patch.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"329d483026dd817de4d6d42e2eab5ba7d104eed842086942220b6c35d9735716"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _BigIntImpl: TooManyMethods \u2014 84 methods. The bar is 30 methods; this is 54 over it, 2.80\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":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"f735718ea4eb13d800a5369b3bd026de1118fb7a3302d69541fbda3484777877"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: graphexplorer/graphexplorer.js: FileTooLong \u2014 1400 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 900 over it, 2.80\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":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5ea5de8e1ad4661480d99566f4b8e1a4397e67a9e2b453fa66aa6b237c217e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BestPracticesVerifier: ClassTooLong \u2014 1119 significant lines (blank, comment-only and punctuation-only lines excluded), 91 methods. The bar is 400 significant lines; this is 719 over it, 2.80\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":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"55056bb0c133432b1bcb1e2a89c31a2d8622e990beb7c95dc544602ae3243658"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/patterns.dart: FileTooLong \u2014 1393 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 893 over it, 2.79\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb12286e087df77f93ac8fe46efb0737c03ada42b47997d2f2aaf6edda9eeac8"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _BigIntImpl: ClassTooLong \u2014 1113 significant lines (blank, comment-only and punctuation-only lines excluded), 76 methods. The bar is 400 significant lines; this is 713 over it, 2.78\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":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"8da2e4f47db9cb3732013167a4956f72a6ebc7cc93c4abd51eb8c3c8f64eccea"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/ffi_patch.dart: FileTooLong \u2014 1388 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 888 over it, 2.78\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/ffi_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe93d9fb2219b9f39a20e175d91a7e0e35e2b763f808f512cd051cc972b9297"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Intrinsifier.generateInstanceIntrinsic: MethodTooLong \u2014 generateInstanceIntrinsic runs 277 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 177 over it, 2.77\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"22cbdbcdd974820fc4d2e00f59efe982a4e49e5f1d1f4500fa98964fabc6286b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: field/encoding.dart: FileTooLong \u2014 1381 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 881 over it, 2.76\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":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"450bce4f9c61663d79cd17e4ca99db5198730b3e564732aea3d34c734603cf5e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: typed_data/typed_data.dart: FileTooLong \u2014 1371 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 871 over it, 2.74\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":"sdk/lib/typed_data/typed_data.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c73b48a4abc9a294ede04f9c6652166d7b5b20578f916d8fca7c551b056e5b36"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FragmentEmitter: ClassTooLong \u2014 1095 significant lines (blank, comment-only and punctuation-only lines excluded), 40 methods. The bar is 400 significant lines; this is 695 over it, 2.74\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":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"63464e1c95696471c82d27a42a15a0a0ba3e9bdf943e8697d8165255c6c32504"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstantPropagation: TooManyMethods \u2014 82 methods. The bar is 30 methods; this is 52 over it, 2.73\u00D7 the bar. Most of these members implement ir.InstructionVisitor (61 of 82 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/constant_propagation.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"408bd70934c3cb53ed99220446470f5383c19aa857972aeced7098a80e6fd893"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _Uri: TooManyMethods \u2014 82 methods. The bar is 30 methods; this is 52 over it, 2.73\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":"sdk/lib/core/uri.dart"},"region":{"startLine":1799}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab57637f83be5d31fd1b861ae5e953331bbae04af48843ca9c3348065f090c88"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ssa/invoke_dynamic_specializers.dart: FileTooLong \u2014 1365 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 865 over it, 2.73\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"47056d59acdbdc170792cc1c509c6f493dcf38ae2a98a77f99fc846ba7b510b9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: startup_emitter/fragment_emitter.dart: FileTooLong \u2014 1362 significant lines (blank, comment-only and punctuation-only lines excluded), about 80% of them inside a single declaration: FragmentEmitter (539-2359). The bar is 500 significant lines; this is 862 over it, 2.72\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"39676cde810835483269dd8c8d0786c2a3ded13e323ce45eeeccc79c887cd827"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ir/impact_data.dart: FileTooLong \u2014 1359 significant lines (blank, comment-only and punctuation-only lines excluded), about 63% of them inside a single declaration: ImpactBuilder (84-1370). The bar is 500 significant lines; this is 859 over it, 2.72\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bff82cefe67127a1ca76eeff0c0c88006a3caf947c3dad078d7bd8878e774da"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartFileEditBuilderImpl: ClassTooLong \u2014 1084 significant lines (blank, comment-only and punctuation-only lines excluded), 49 methods. The bar is 400 significant lines; this is 684 over it, 2.71\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1789}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5b76fd4af1993077d81d97418b7a93564cb09887cdae2610462a9d083d68d72"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FrontendCompiler.compile: MethodTooLong \u2014 compile runs 271 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 171 over it, 2.71\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"cacb351d11ad67cb7feec871809680cc1d6a9f80b7004a830a9d7cef39026d62"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TypeSystemImpl: ClassTooLong \u2014 1083 significant lines (blank, comment-only and punctuation-only lines excluded), 76 methods. The bar is 400 significant lines; this is 683 over it, 2.71\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c76db58e917bc0996cf81f7142d51261d13d00e2059b91cb510697633a5f69e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/type_analyzer_operations.dart: FileTooLong \u2014 1352 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 852 over it, 2.70\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":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4bab9c0a4fe7a60a3046b835f4725953b28b3f8f3131eee90a187506889004a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LibraryElementImpl: TooManyMethods \u2014 81 methods. The bar is 30 methods; this is 51 over it, 2.70\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6699}}}],"partialFingerprints":{"codehealthFindingId/v1":"79cfbf96898ce6eeebccab2e6b1c26e7b07323438d29f8401a9f95f305e0966c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ir/instructions.dart: FileTooLong \u2014 1345 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 845 over it, 2.69\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":"pkg/cfg/lib/ir/instructions.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"930bc8754ab57916515c7dc4559b3832e8da99f3bebe2feada65895e78c3933c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RuntimeTypesNeedBuilderImpl.computeRuntimeTypesNeed: MethodTooLong \u2014 computeRuntimeTypesNeed runs 269 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 169 over it, 2.69\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":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"649bef280d5db3dd89dc64fa2d0ad8cbe119f03540f22b22436b682ca16b1331"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/declarations.dart: FileTooLong \u2014 1340 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 840 over it, 2.68\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":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3adb85e0e40491b555018cb2c281db4921b4d598fa9474f3e83e5d0bff9f1e92"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CloneVisitorNotMembers: ClassTooLong \u2014 1067 significant lines (blank, comment-only and punctuation-only lines excluded), 174 methods. The bar is 400 significant lines; this is 667 over it, 2.67\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":"pkg/kernel/lib/clone.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd511224bf8cd2cfb80afe5cb43197489a5f279740f56e01adc20fe9511ec750"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TransformSetParser: ClassTooLong \u2014 1064 significant lines (blank, comment-only and punctuation-only lines excluded), 42 methods. The bar is 400 significant lines; this is 664 over it, 2.66\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":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6854a1eda13353f75b335c5b0f3196b33e2e2100160620dcfc9ca80ff8e9d11"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RecursiveParserAstVisitor: ClassTooLong \u2014 1062 significant lines (blank, comment-only and punctuation-only lines excluded), 376 methods. The bar is 400 significant lines; this is 662 over it, 2.66\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":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":11051}}}],"partialFingerprints":{"codehealthFindingId/v1":"c39011fbf4545fe820dc166003167e520a8fa21da84d5e43c4bbd74188ebc457"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/kernel_target.dart: FileTooLong \u2014 1326 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: KernelTarget (77-2017). The bar is 500 significant lines; this is 826 over it, 2.65\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4007043ff6e7c41ec0263cd4ad4858dcd61674802a3a59932430b37b04c258db"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: code_completion/completion_metrics.dart: FileTooLong \u2014 1325 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 825 over it, 2.65\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c3bebc7da78ad9dbb2df960037fa679fa734695e48cd6c5599311b6fb8b7ad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analysis/index.dart: FileTooLong \u2014 1321 significant lines (blank, comment-only and punctuation-only lines excluded), about 72% of them inside a single declaration: _IndexContributor (529-1870). The bar is 500 significant lines; this is 821 over it, 2.64\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d00b903db2ce19686c962c2484727457d677adcf392a17c051e8828b699abd49"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExitDetector: TooManyMethods \u2014 79 methods. The bar is 30 methods; this is 49 over it, 2.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbcd351da458c006139a4f6382d7a7c667029f4bf8059e728606328ea55a39be"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PreTranslationAnalysis: TooManyMethods \u2014 79 methods. The bar is 30 methods; this is 49 over it, 2.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":2973}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff5781cafb29cf41c1fb5b2448ed53d38e767042c4ef06a4c78c6f2d7df310e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SourceCompilationUnitImpl: ClassTooLong \u2014 1046 significant lines (blank, comment-only and punctuation-only lines excluded), 59 methods. The bar is 400 significant lines; this is 646 over it, 2.62\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":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbc3a0d3573da52686fa999288ae1f7e752daf4c5b9740afd20edf2fffc8ba01"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/class_hierarchy.dart: FileTooLong \u2014 1295 significant lines (blank, comment-only and punctuation-only lines excluded), about 62% of them inside a single declaration: ClosedWorldClassHierarchy (729-1968). The bar is 500 significant lines; this is 795 over it, 2.59\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"221622af3f65b1464cd3348bebe3118cb1da146daee291097386d8aea5cdfa93"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inferrer/engine.dart: FileTooLong \u2014 1292 significant lines (blank, comment-only and punctuation-only lines excluded), about 77% of them inside a single declaration: InferrerEngine (51-1638). The bar is 500 significant lines; this is 792 over it, 2.58\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"edf2336d212918e1a640768e5d93e6d07b0182877b1499b832a82c339eb3aec4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StandardBounds.getStandardUpperBoundInternal: MethodTooLong \u2014 getStandardUpperBoundInternal runs 258 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 158 over it, 2.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":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"2698922488fdd704c192308054327c69a569873a3c177f033637a54ace4817f3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/type.dart: FileTooLong \u2014 1285 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 785 over it, 2.57\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":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0f47e5d2b0234a789079da82e5ef933899449c252c8b69e7edf2dc721cd6f3c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DillExtensionTypeDeclarationBuilder.DillExtensionTypeDeclarationBuilder: MethodTooLong \u2014 DillExtensionTypeDeclarationBuilder runs 257 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 157 over it, 2.57\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c9d86f144b730108f3dfe9dd4ca76f4e410ae2a51d56c3d421ce925fdcd7f75"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ProxyService: TooManyMethods \u2014 77 methods. The bar is 30 methods; this is 47 over it, 2.57\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":"pkg/dwds/lib/src/services/proxy_service.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"7501b96330a4bf1099b24a6eaff0b47acc790e9e8ad421b7ef67a4989198d0d5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BaseVisitor: TooManyMethods \u2014 77 methods. The bar is 30 methods; this is 47 over it, 2.57\u00D7 the bar. Most of these members implement src.NodeVisitor (53 of 77 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"615b1a66937a96b1207b647e2b488ff5ae8c0931309a340d7bdac2da9551126f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ImpactData.apply: MethodTooLong \u2014 apply runs 255 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 155 over it, 2.55\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":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":1438}}}],"partialFingerprints":{"codehealthFindingId/v1":"81e7aeeb350b0a44c6ea45c9982f2ecb07468d9c74eb946aa240d964e55e0f12"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: HeapSnapshotElement._createReport: MethodTooLong \u2014 _createReport runs 255 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 155 over it, 2.55\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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0051f55787d1e2ecf8f86ac5b548d137cc9b81e99da52c9ba87eda176d0dd52"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceClassBuilder.checkSupertypes: MethodTooLong \u2014 checkSupertypes runs 254 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 154 over it, 2.54\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf8b4576270a280cd9cd7a61bf2dd1047936c20eb87aa1c4e7c0587c93ee0e9d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/clone.dart: FileTooLong \u2014 1269 significant lines (blank, comment-only and punctuation-only lines excluded), about 84% of them inside a single declaration: CloneVisitorNotMembers (15-1606). The bar is 500 significant lines; this is 769 over it, 2.54\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/clone.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb94aac4499dd0d3b6d4ebe1623fc716f342a0797df49c084e733a03cea8ebec"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ResolutionVisitor: ClassTooLong \u2014 1014 significant lines (blank, comment-only and punctuation-only lines excluded), 120 methods. The bar is 400 significant lines; this is 614 over it, 2.54\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":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"50d8706fdddb87360866e3b97b461832293cc2b54ea075177f2e94515516ac7f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AnnotationsListener: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc6d64a682dce3520aa1b7877bbf60571158446c2f7c8c94113280b477eaaa7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ContextTypeVisitor: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"3486d43513d5391da856e872a1ac8d13550cf2a64aba7970f6e475f368793417"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeSystemImpl: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa64a72c82dd74bf1fdf594c36e680953f6d424d4a72e8471e6a1386d1b2a304"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KernelImpactConverter: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. Most of these members implement src.ImpactRegistry (60 of 76 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"15ee91b732d45648bf251c6699b2b828c89591affee74d6c8da381b64bc5bba3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HInstruction: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1146}}}],"partialFingerprints":{"codehealthFindingId/v1":"505347d671975735de9d483a11ec76cb0fe36916d2e4a1a6bb349fd18289ff0e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeVisitor: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"a769111f0f762b94fcf9b94173e7041e78742410061deb23d02e61af83544e23"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FragmentFactory: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"43125d074d3a16732ac1dbb4d611fe850db908f604a2ea827d8ba46e9e1cf295"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BaseVisitor1: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. Most of these members implement src.NodeVisitor1 (66 of 76 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ed8d44ad5ca8a8c2bad9753ac2d4516932969215474d8bc26998199f0043647"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CoreTypes: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/core_types.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"f17f8136b34dd314565bae502ad7a951c5a7da93f7df6088eaa0dbc6811289ca"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _BigIntImpl: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d8aaa305f6e33898e3a7efce53a4aeecf9e5fd29c5be49b963f0edc9de51913"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _BigIntImpl: TooManyMethods \u2014 76 methods. The bar is 30 methods; this is 46 over it, 2.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/bigint_patch.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"01155b3e1c9d29b5a9e44a150534cc47cb8cbf4ccb4e2372c00dda663abfa45c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/resolver.dart: FileTooLong \u2014 1265 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: Resolver (64-1629). The bar is 500 significant lines; this is 765 over it, 2.53\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0820db555fdbecc502ba7293c05a0bea6f6f143601d72356aba95c743a926ff9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: constructor/declaration.dart: FileTooLong \u2014 1261 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 761 over it, 2.52\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"026c7f6d00122f548be46db79e932354bdd76f731945d050eec73ee6809855cd"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InstanceViewElement._createMembers: MethodTooLong \u2014 _createMembers runs 252 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 152 over it, 2.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":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"18f4e3a500d858b5c581357b82ef7d445d89a80877828cc993497248295063b8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: completion/optype.dart: FileTooLong \u2014 1258 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: _OpTypeAstVisitor (188-1963). The bar is 500 significant lines; this is 758 over it, 2.52\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43110ce716d29a6874ed46e4660f971e223429a54f8dadbf8616b40eb1e63ab4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExpectedCompletionsVisitor: TooManyMethods \u2014 75 methods. The bar is 30 methods; this is 45 over it, 2.50\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":"pkg/analysis_server/tool/code_completion/visitors.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef5bbb804a4d7c8942747c76c7efb8e67d7ab2d1ca0c487e9a310fda835d9b8a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SuggestionBuilder: ClassTooLong \u2014 1000 significant lines (blank, comment-only and punctuation-only lines excluded), 51 methods. The bar is 400 significant lines; this is 600 over it, 2.50\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":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5339c6798d336c97d5c6498734be926d90c285c07651a69fe06c44328610ff0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AstBinaryReader._readNode: MethodTooLong \u2014 _readNode runs 250 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 150 over it, 2.50\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":1220}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1913194324ba63c34c54edec7bd6f6eb2198ce52361643812893aef19641cb2"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InferrerEngine: ClassTooLong \u2014 997 significant lines (blank, comment-only and punctuation-only lines excluded), 62 methods. The bar is 400 significant lines; this is 597 over it, 2.49\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":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"19d3d80e77ad20ab062b55313142893725e95b4465c2e5194ccbc03e51c36b5b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AstBinaryWriter: ClassTooLong \u2014 996 significant lines (blank, comment-only and punctuation-only lines excluded), 136 methods. The bar is 400 significant lines; this is 596 over it, 2.49\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":"pkg/analyzer/lib/src/summary2/ast_binary_writer.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"710d34031bb2a181de944258ce2c2562e269cef8175d66c07161cca358a6b57d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary2/bundle_reader.dart: FileTooLong \u2014 1245 significant lines (blank, comment-only and punctuation-only lines excluded), about 74% of them inside a single declaration: LibraryReader (88-1476). The bar is 500 significant lines; this is 745 over it, 2.49\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94fcb1a78ff3f53bec61ade280626f0ac382d0bec220d98b8456917434ea6ba6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SourceLibraryBuilder: ClassTooLong \u2014 993 significant lines (blank, comment-only and punctuation-only lines excluded), 67 methods. The bar is 400 significant lines; this is 593 over it, 2.48\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":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"33c424272f5acfb2fb129740750107d7b7a14fb3da6fb94d8a10f37ced6b7bd9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: copy_me/copy_me.dart: FileTooLong \u2014 1241 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 741 over it, 2.48\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d23cc2d349efc74c9e1287f171d553c736f4c5e07b1eddaea65731dabd9b383d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/convert_patch.dart: FileTooLong \u2014 1240 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 740 over it, 2.48\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"34df7b4397f2b3fb07bc1f61ba8f93fc062b48a58f71d3068abf02ad8b043e4e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceLoader._checkSupertypeClassModifiers: MethodTooLong \u2014 _checkSupertypeClassModifiers runs 248 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 148 over it, 2.48\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2210}}}],"partialFingerprints":{"codehealthFindingId/v1":"f859da83f43377d761422611c9cdfd0ed741d2d0d282df93d61f51e591bb5426"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analysis_options/analysis_options_parse_model.dart: FileTooLong \u2014 1239 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 739 over it, 2.48\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82f3ac39f8b4c1ebc46ae215c61abed5a9335afcd06a94da31e2fca81503047"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FastaErrorReporter.reportByCode: MethodTooLong \u2014 reportByCode runs 245 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 145 over it, 2.45\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":"pkg/analyzer/lib/src/fasta/error_converter.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f53f7661400ad6f7dd4715c8198b82215e40e159c5cde1f64f7d30feb2db205"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: elements/heap_snapshot.dart: FileTooLong \u2014 1220 significant lines (blank, comment-only and punctuation-only lines excluded), about 74% of them inside a single declaration: HeapSnapshotElement (451-1575). The bar is 500 significant lines; this is 720 over it, 2.44\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab7ca5861407f05fef810e5698a46768c5d5cf6f8e2b51c36e607af04a8f8535"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JsNodeSerializer: TooManyMethods \u2014 73 methods. The bar is 30 methods; this is 43 over it, 2.43\u00D7 the bar. Most of these members implement src.NodeVisitor (53 of 73 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/codegen.dart"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"6515e4dce8745ac24247248326d23aba281de6a138ee759a2680c3a4d066024e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSArray: TooManyMethods \u2014 73 methods. The bar is 30 methods; this is 43 over it, 2.43\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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df3fbe6cd5933a1a29fcbb320b1dbebcdf894b37e1e189c3c4b096fdce59b13"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: front_end/recognized_methods.dart: FileTooLong \u2014 1216 significant lines (blank, comment-only and punctuation-only lines excluded), about 65% of them inside a single declaration: VmRecognizedMethods (586-1545). The bar is 500 significant lines; this is 716 over it, 2.43\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/front_end/recognized_methods.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd4594d55115abecbabcf68296fafbec8e33ef13592952ddd242ff1e288838bb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AstRewriter: ClassTooLong \u2014 972 significant lines (blank, comment-only and punctuation-only lines excluded), 29 methods. The bar is 400 significant lines; this is 572 over it, 2.43\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":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3126a9d6522ef35d8a4b2a7a651eca9deeb8b40d0867a83032072dc2c968827"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartDocTest.compileAndRun: MethodTooLong \u2014 compileAndRun runs 242 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 142 over it, 2.42\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/dart_doctest_impl.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b369f11c4d13b9bd43b64f81a5b4eb8dcc6aba2af4db308ac3540a7827de5d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: tool/coverage_merger.dart: FileTooLong \u2014 1208 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 708 over it, 2.42\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aafad5762fa4c10438a5bdca98cc87e3a788131b04350eb32899c52236faa9a5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/source_library_builder.dart: FileTooLong \u2014 1207 significant lines (blank, comment-only and punctuation-only lines excluded), about 82% of them inside a single declaration: SourceLibraryBuilder (106-1584). The bar is 500 significant lines; this is 707 over it, 2.41\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"476228be7d9ddc32bb1140fabe1a6a14e436d81ee08f8529c5dd098d1f775f0d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/bigint_patch.dart: FileTooLong \u2014 1206 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: _BigIntImpl (70-2092). The bar is 500 significant lines; this is 706 over it, 2.41\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/bigint_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6f58404fa0cb451416cc7d9cb31318cc458303acb66d418d276aa154352ad1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: _http/websocket_impl.dart: FileTooLong \u2014 1203 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 703 over it, 2.41\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":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bac0361d74a6b7c9c703384df4f84a397917ddd1668aaaae8556ef89ab8315f6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ScopeModelBuilder: ClassTooLong \u2014 962 significant lines (blank, comment-only and punctuation-only lines excluded), 132 methods. The bar is 400 significant lines; this is 562 over it, 2.41\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":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6aab66a78a68b2b96796361292412ab7ef55828bf17289ae8950654415951a0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: EquivalenceVisitor: TooManyMethods \u2014 72 methods. The bar is 30 methods; this is 42 over it, 2.40\u00D7 the bar. Most of these members implement src.NodeVisitor1 (66 of 72 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/equivalence_visitor.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf9d243274579f5e00d5166eecf96cca16a7d572d3ce2e443f73d14c174224d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TypeCheckingVisitor: ClassTooLong \u2014 959 significant lines (blank, comment-only and punctuation-only lines excluded), 130 methods. The bar is 400 significant lines; this is 559 over it, 2.40\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":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"364593cec8eff83210b2ea2afc9d8d5fce9042da60b9e5b042f6152282cdf08c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: patch/bigint_patch.dart: FileTooLong \u2014 1198 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: _BigIntImpl (70-2074). The bar is 500 significant lines; this is 698 over it, 2.40\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"448b4b04c152cc8b35828429b4577bd4c9c781a03bcd2faaf9c1ac4682efb8dd"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _DartUnitHighlightsComputerVisitor: ClassTooLong \u2014 954 significant lines (blank, comment-only and punctuation-only lines excluded), 110 methods. The bar is 400 significant lines; this is 554 over it, 2.39\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":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"9267b15fa74441fc148ca3a66f7eb3f9f8830fed9415308a3bec41a5038f6f94"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _IndexContributor: ClassTooLong \u2014 951 significant lines (blank, comment-only and punctuation-only lines excluded), 68 methods. The bar is 400 significant lines; this is 551 over it, 2.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":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7d28c117273764d0956a23e8dd97c2052cae4ea03cacdff911793091cca3995"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Precedence: TooManyMethods \u2014 71 methods. The bar is 30 methods; this is 41 over it, 2.37\u00D7 the bar. Most of these members implement repository.ExpressionVisitor (70 of 71 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":3331}}}],"partialFingerprints":{"codehealthFindingId/v1":"7000b098a2c6b374c9a4a49f5d6c6bd815cc0927eb757738b6222fbc0f519795"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExpressionVisitor: TooManyMethods \u2014 71 methods. The bar is 30 methods; this is 41 over it, 2.37\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":"pkg/kernel/lib/visitor.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"8efcab6d99b4d5a49aa02fd3eabb72b73708b73fc76921ceee266cf113e34a85"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExpressionVisitor1: TooManyMethods \u2014 71 methods. The bar is 30 methods; this is 41 over it, 2.37\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":"pkg/kernel/lib/visitor.dart"},"region":{"startLine":2339}}}],"partialFingerprints":{"codehealthFindingId/v1":"12788314e68eb29b39e32e1da4a1006c209c75deefdaf15650a8a65d516334fc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LspTypingInBigFile.afterInitialization: MethodTooLong \u2014 afterInitialization runs 236 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 136 over it, 2.36\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":"pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"726933efded2c2bbf2d2cd0612dbe61d07c816f51cdfee21eefbea83b2805951"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Listener: ClassTooLong \u2014 938 significant lines (blank, comment-only and punctuation-only lines excluded), 378 methods. The bar is 400 significant lines; this is 538 over it, 2.35\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":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"d585c50d2ff3e46c840286bc669eada5e22d9117a7851b925ebed826875caac3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/resolution_visitor.dart: FileTooLong \u2014 1170 significant lines (blank, comment-only and punctuation-only lines excluded), about 87% of them inside a single declaration: ResolutionVisitor (34-1593). The bar is 500 significant lines; this is 670 over it, 2.34\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3f032815f4971c60078b771976296754ef854db55ad6474a73feadddddb9ef"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MiniJsParser: ClassTooLong \u2014 935 significant lines (blank, comment-only and punctuation-only lines excluded), 66 methods. The bar is 400 significant lines; this is 535 over it, 2.34\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":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd711eeb0a374eacdf404563d2f7e79e85167299cfc67eb961c98a0e8479c1d4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FlowGraphBuilder: TooManyMethods \u2014 70 methods. The bar is 30 methods; this is 40 over it, 2.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":"pkg/cfg/lib/ir/flow_graph_builder.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ef737a1804f99e146ef4c4da22b88260684a29f8afd3aa0ac5ca41d34c42be9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PreTranslationAnalysis: TooManyMethods \u2014 70 methods. The bar is 30 methods; this is 40 over it, 2.33\u00D7 the bar. Most of these members implement src.NodeVisitor (52 of 70 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":2826}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd9359bf472aaad721afc9063d68504af8e475c80a7bbd71a9b7980935a1fea"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DietListener: ClassTooLong \u2014 933 significant lines (blank, comment-only and punctuation-only lines excluded), 123 methods. The bar is 400 significant lines; this is 533 over it, 2.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":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c78694480dd52cf569ad4a834593b9b6e20ea07609d5c9296c6eab660b71560"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase.createPropertyGet: MethodTooLong \u2014 createPropertyGet runs 231 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 131 over it, 2.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":5357}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89fb923ca75011885cf04fbd35b97a533f2ce144f61be32f4a468c44030d0ae"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/suggestion_builder.dart: FileTooLong \u2014 1154 significant lines (blank, comment-only and punctuation-only lines excluded), about 87% of them inside a single declaration: SuggestionBuilder (53-1579). The bar is 500 significant lines; this is 654 over it, 2.31\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d15553f3ffbdc7fe87a41b41d1d9e562cb2abd3f40a834482a1a90bfe76490a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: element/type_system.dart: FileTooLong \u2014 1154 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: TypeSystemImpl (81-2198). The bar is 500 significant lines; this is 654 over it, 2.31\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd6a2c9096226a65f8f317d6b5d9af8eb031e7d9060c24a2e3ad1efbe7565637"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BuilderFactory: ClassTooLong \u2014 923 significant lines (blank, comment-only and punctuation-only lines excluded), 17 methods. The bar is 400 significant lines; this is 523 over it, 2.31\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":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"512e31b54f8ff89872b12d33a1e780aada0c2db18ca9e8f7c3aa1db9477c040d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FlowGraphChecker: TooManyMethods \u2014 69 methods. The bar is 30 methods; this is 39 over it, 2.30\u00D7 the bar. Most of these members implement ir.InstructionVisitor (61 of 69 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/flow_graph_checker.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae38e3c0f40782f4a61b6051e9a88e239ae75319364cca32e9c56568ce555be8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Namer: TooManyMethods \u2014 69 methods. The bar is 30 methods; this is 39 over it, 2.30\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":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb01e729539686b6dd1de5bd61027f3501ad2daa984d4a6d153d1c609fe1d11e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WrapperClass: TooManyMethods \u2014 69 methods. The bar is 30 methods; this is 39 over it, 2.30\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":"pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a873f43b82249db642261ba75e5d81d1d4062df78ec218393990f932fe2a622"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WrapperClass: TooManyMethods \u2014 69 methods. The bar is 30 methods; this is 39 over it, 2.30\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":"pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods_2.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"76ca29c4a59b05bb32ba9511410e3c0a208f9d5328e533c939975c83eb80e7c5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSArrayImpl: TooManyMethods \u2014 69 methods. The bar is 30 methods; this is 39 over it, 2.30\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":"sdk/lib/_internal/wasm/js_common/js_array.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"9effec8e057bde11b12ca0543e3dd3b48f65cb62fb51d970f69f34e0efbd926f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LibraryReader: ClassTooLong \u2014 920 significant lines (blank, comment-only and punctuation-only lines excluded), 59 methods. The bar is 400 significant lines; this is 520 over it, 2.30\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":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f57a5759efa3fdd171c71e6214efcbe3df5ced0f71320bb25eeee4b3fe580b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartFileEditBuilderImpl._addLibraryImports: MethodTooLong \u2014 _addLibraryImports runs 228 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 128 over it, 2.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":2482}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f338c3baa52884b8062313b86ba20b9cac8add141474a9cdf3bfc0ce604a10a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ProgramBuilder: ClassTooLong \u2014 911 significant lines (blank, comment-only and punctuation-only lines excluded), 35 methods. The bar is 400 significant lines; this is 511 over it, 2.28\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":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff375438cda570d64ba8200d1326ebd9532da5867880b992c6cd9999927bd795"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/source_compilation_unit.dart: FileTooLong \u2014 1138 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: SourceCompilationUnitImpl (74-1574). The bar is 500 significant lines; this is 638 over it, 2.28\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"221a403f0b4f8f18043777bed4ac50d5bf042aaf53091e4df27ca784105887db"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Type.generate: MethodTooLong \u2014 generate runs 227 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 127 over it, 2.27\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":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf849e31b56c6d8bb2179c1d2cbf9f26a92c12e528a07c96ba325a75bdceb838"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: constant/constant_verifier.dart: FileTooLong \u2014 1134 significant lines (blank, comment-only and punctuation-only lines excluded), about 69% of them inside a single declaration: ConstantVerifier (43-1226). The bar is 500 significant lines; this is 634 over it, 2.27\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"040773ae9bc348232e3bb702c5a7bc4625a3fc0807f2d75f4802bdfaa9316a6d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: element/type.dart: FileTooLong \u2014 1134 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 634 over it, 2.27\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"03bf33b6a07aa84469cb56cf6b34ca9ab175de8e728dd63c0691ffa823ecc2c1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _IndexContributor: TooManyMethods \u2014 68 methods. The bar is 30 methods; this is 38 over it, 2.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"392047a04a3caaface955579b52c8d57ca3b6bda4b2ded8c43cb2017830e6d1c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstantVisitor: TooManyMethods \u2014 68 methods. The bar is 30 methods; this is 38 over it, 2.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c7bb20b08a0135642aa4dac480674e9814111ba9ea92d9aac265f14fbee40e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RequirementsManifest: TooManyMethods \u2014 68 methods. The bar is 30 methods; this is 38 over it, 2.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/requirements.dart"},"region":{"startLine":864}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cf4b1513de886451161675e2b4d6d0fa9e1bee05a3db745856a29483867aeb0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MiniAstBuilder: TooManyMethods \u2014 68 methods. The bar is 30 methods; this is 38 over it, 2.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/mini_ast.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"2126da4cc8dcbb18b5dfde5cba6b46595fc603ba74f6efacc94ef0ee68c68f79"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ExpressionTransformer: TooManyMethods \u2014 68 methods. The bar is 30 methods; this is 38 over it, 2.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"59076d39801ba13bbfe937d59e06837a9d4db78ef7b144fa8442b01be0ec3cef"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Arm64CodeGenerator: TooManyMethods \u2014 68 methods. The bar is 30 methods; this is 38 over it, 2.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bb04c51bcc97ce3d8cf0941a8516146772dd8deeaea550181fa3470adfc3c3b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _Universe: TooManyMethods \u2014 68 methods. The bar is 30 methods; this is 38 over it, 2.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":2101}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5768a3199e13322ce1929421e7171a05ba56157c16f0c53c33af65f0f0c5338"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: HeapSnapshotElement: ClassTooLong \u2014 904 significant lines (blank, comment-only and punctuation-only lines excluded), 51 methods. The bar is 400 significant lines; this is 504 over it, 2.26\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee5ef5055270bc96e894a44cee9d5bd0e2595900fac591ad259c5e9288f88966"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IncrementalCompiler.computeDelta: MethodTooLong \u2014 computeDelta runs 226 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 126 over it, 2.26\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f33dec6fccea8136af1e520f8cd2e8c07e616b10f42a5e80454bf4aa7a57dbd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/candidate_suggestion.dart: FileTooLong \u2014 1126 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 626 over it, 2.25\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/candidate_suggestion.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f9bf0ddcd8e537239a569fdaa01efc44a22d3defd69af0d45557c293010b94c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeSystemOperations: TooManyMethods \u2014 67 methods. The bar is 30 methods; this is 37 over it, 2.23\u00D7 the bar. Most of these members implement src.TypeAnalyzerOperations (56 of 67 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"090ff010deb426aa97af6b915f6c8c7ffc194e97d2cf88515a9f1e54019aafea"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _AstToIRVisitor: TooManyMethods \u2014 67 methods. The bar is 30 methods; this is 37 over it, 2.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d7846f4c13d7cef905e536e77d1249c79967dca1cc42a5bc6b87ca45266209"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstantsTransformer: TooManyMethods \u2014 67 methods. The bar is 30 methods; this is 37 over it, 2.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b5f796979619d557b833667ba2465b63000e831389e29c127db1e711a862b03"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceClassBuilder: TooManyMethods \u2014 67 methods. The bar is 30 methods; this is 37 over it, 2.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd71cd110373b44dfb5e1778e640674b5e3cc4cd91204d22c06b660c29f8db3a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceLibraryBuilder: TooManyMethods \u2014 67 methods. The bar is 30 methods; this is 37 over it, 2.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ddbe64a2ed0b8c0f12ab46216beb063b5d0c8e47f6a39cd50b86e41e3475042"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: OperationsCfe: TooManyMethods \u2014 67 methods. The bar is 30 methods; this is 37 over it, 2.23\u00D7 the bar. Most of these members implement src.TypeAnalyzerOperations (56 of 67 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"281a86986d22a346403712969f4919413836d4d265cc1ebbbe198228164d1298"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/type_info_impl.dart: FileTooLong \u2014 1113 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 613 over it, 2.23\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0fa6805909b4cc6e5f678e923b8dad0d1e8fbaa7b14c06f6e6fd4faf3786b1c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/object_graph.dart: FileTooLong \u2014 1112 significant lines (blank, comment-only and punctuation-only lines excluded), about 64% of them inside a single declaration: _SnapshotGraph (657-1714). The bar is 500 significant lines; this is 612 over it, 2.22\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7273e7043099766151d50e2395961e0959d6949d8510d41c07e86fd8fbedb7be"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SizeEstimator: ClassTooLong \u2014 889 significant lines (blank, comment-only and punctuation-only lines excluded), 89 methods. The bar is 400 significant lines; this is 489 over it, 2.22\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"b219732e681f7195741ee577e74f2629ad50a7913d5e705e19c411cffabde7a8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_flow/types.dart: FileTooLong \u2014 1109 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 609 over it, 2.22\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecc97a217ba2058eb889992dfcba1d6b6f6417c9d16a7ff5701e93dd02c6e0ee"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: legacy/extract_method.dart: FileTooLong \u2014 1105 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 605 over it, 2.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"902d3836682a772149d5ca0a2e65217469bb892759c618cc0b009bdf4791f507"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_ast/builder.dart: FileTooLong \u2014 1103 significant lines (blank, comment-only and punctuation-only lines excluded), about 85% of them inside a single declaration: MiniJsParser (483-1792). The bar is 500 significant lines; this is 603 over it, 2.21\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d71e4ad73eb788e3af2b8243a344aa124959403b37f052f723c234e3d2a72d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: data_driven/transform_set_parser.dart: FileTooLong \u2014 1102 significant lines (blank, comment-only and punctuation-only lines excluded), about 97% of them inside a single declaration: TransformSetParser (47-1685). The bar is 500 significant lines; this is 602 over it, 2.20\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6882f9088c7d44939582f0a40c87db39f2686ac15dbcbefb43b1a4b14f99691d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ChildrenFinder: TooManyMethods \u2014 66 methods. The bar is 30 methods; this is 36 over it, 2.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/utilities/selection.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"18899976256644f85cb3acb7a57690b692ddc1c44d2d8b6e6da7e1a24598f1e0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ElementCollector: TooManyMethods \u2014 66 methods. The bar is 30 methods; this is 36 over it, 2.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_ast.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82e5990f002efba922a356fd4bf5db49dd13f7b00a22871a557eddbf2bda784"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MiniJsParser: TooManyMethods \u2014 66 methods. The bar is 30 methods; this is 36 over it, 2.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3f012df80268cb821333b1987aaaa79511714e642d92572c31ce8c717effce1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Transformer: TooManyMethods \u2014 66 methods. The bar is 30 methods; this is 36 over it, 2.20\u00D7 the bar. Most of these members implement src.NodeVisitor (54 of 66 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":2454}}}],"partialFingerprints":{"codehealthFindingId/v1":"4655dd4beac4b37f2cebb678a8ab3619695e12ab2dfd6ab64e429f2d4906d0d0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeVisitor: TooManyMethods \u2014 66 methods. The bar is 30 methods; this is 36 over it, 2.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa9ae533290bf387403808310707baa520e717511a6748778633bbecbb4363b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeVisitor1: TooManyMethods \u2014 66 methods. The bar is 30 methods; this is 36 over it, 2.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"210a67682a2791494e4a9320434e644088a212834dd65ede7bf2d8784a46d8f9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _IntegerImplementation: TooManyMethods \u2014 66 methods. The bar is 30 methods; this is 36 over it, 2.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"461c6857f8aff310987d844337fffaa8aea9f30c653019a41d2c53a9787b06f8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _MixinInferenceSolution._solveForEquality: MethodTooLong \u2014 _solveForEquality runs 220 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 120 over it, 2.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/mixin_inferrer.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d423e3fe74e59cb15812a97a37689e7b603b31ba1de583939af0d6b39fcc216"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/closures.dart: FileTooLong \u2014 1097 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 597 over it, 2.19\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/closures.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7218e69be069dd495478baa9b5e582699bd0314cef9a4e2fafdfbbb0c2e97b90"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: element/element.dart: FileTooLong \u2014 1090 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 590 over it, 2.18\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/dart/element/element.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f27f1c6a71095851e615a3e873f3a346214bb9c2a5d3b0432d59495923fd76a7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceClassBuilder.checkMethodOverride: MethodTooLong \u2014 checkMethodOverride runs 218 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 118 over it, 2.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":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1890}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eb0ac602aab1eb7c0022afc45cdff9a65f63555c9dcb9ca6ee0e3f4acdc474a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SummaryCollector.createSummary: MethodTooLong \u2014 createSummary runs 217 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 117 over it, 2.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a3c9053c11dd9ef1adf1f4e0af67d127ae27966c25b3baf0ecbc8d1df63606d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/parser_ast.dart: FileTooLong \u2014 1075 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 575 over it, 2.15\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":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f0f08800b820aa65eb02caf8f403134cab43f9f073340c44982ead72c3041a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompletionHandler._getServerDartItems: MethodTooLong \u2014 _getServerDartItems runs 215 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 115 over it, 2.15\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"58ff7f1f906a13a1451e7cebfc5116918f730346549f8f5200e562af8c56b8e2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _SanitizedMember.computeMembers: MethodTooLong \u2014 computeMembers runs 215 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 115 over it, 2.15\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1982}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e756d04ee24bbabdc29f29336e50ddfd1b46f7addb3dabbac0c30d86b532fa"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AnnotationsListener: ClassTooLong \u2014 859 significant lines (blank, comment-only and punctuation-only lines excluded), 76 methods. The bar is 400 significant lines; this is 459 over it, 2.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":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"9637581144d83c55fc0c4375e78340e8e345dd5f39b68df039d9e4af02960363"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ChromeProxyService: ClassTooLong \u2014 859 significant lines (blank, comment-only and punctuation-only lines excluded), 56 methods. The bar is 400 significant lines; this is 459 over it, 2.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":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a9b9bd60f1c7998f15a183f7248e00f64d4c3d65249915ff411fdbb1d711659"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LibraryManifestBuilder: ClassTooLong \u2014 859 significant lines (blank, comment-only and punctuation-only lines excluded), 34 methods. The bar is 400 significant lines; this is 459 over it, 2.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":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"c779543cf839a1c18032b688dd12a7c2ffdf8fb85959805eca49037f464b93e2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/identifier_context_impl.dart: FileTooLong \u2014 1068 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 568 over it, 2.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9232481d1a669c1966eb3074b87cde451a54a2a1fd7ba055bb023a5e8ea3d84"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartObjectImpl: TooManyMethods \u2014 64 methods. The bar is 30 methods; this is 34 over it, 2.13\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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"686258a1b8b64e8e75d69713a85a6be8d6fec646ab0244c4c82d88a111e25a40"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultInstructionVisitor: TooManyMethods \u2014 64 methods. The bar is 30 methods; this is 34 over it, 2.13\u00D7 the bar. Most of these members implement ir.InstructionVisitor (61 of 64 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/visitor.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"7faf099b028ec3bacbd40daf461e8670158dfb19d8b6cacd75f0b41c3f8e3aca"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Simplification: TooManyMethods \u2014 64 methods. The bar is 30 methods; this is 34 over it, 2.13\u00D7 the bar. Most of these members implement ir.InstructionVisitor (61 of 64 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/simplification.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"c39675d84e6e5fd6e8fec131f41da9d28633e8dd9712d4a3c8f283ef0d1454f2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AsyncStateVisitor: TooManyMethods \u2014 64 methods. The bar is 30 methods; this is 34 over it, 2.13\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":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"920190140beb8cdd7385efffbfac4af345c218a2668c7e66046912d60c7d526d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: VmServiceInterface: TooManyMethods \u2014 64 methods. The bar is 30 methods; this is 34 over it, 2.13\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":"pkg/vm_service_interface/lib/src/vm_service_interface.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"060a96e8d55fa06ab9fdad5921f9eb121b99259a2e86514d1c655d3d68d68681"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ImpactBuilder: ClassTooLong \u2014 850 significant lines (blank, comment-only and punctuation-only lines excluded), 130 methods. The bar is 400 significant lines; this is 450 over it, 2.13\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":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"99ec13365f054923ac93063fc19158ca3af610b61f3ec63f0e4cd8857d57ae9a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: io/position_information.dart: FileTooLong \u2014 1059 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 559 over it, 2.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"518a0904e8287039d8edf26b0cb7ee9188545d13fed65110b3a68d0c8399f80e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DataSourceReader: ClassTooLong \u2014 844 significant lines (blank, comment-only and punctuation-only lines excluded), 133 methods. The bar is 400 significant lines; this is 444 over it, 2.11\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":"pkg/compiler/lib/src/serialization/source.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"88dca14ee7dc41b29d537be519da797d669b452369f027c8145a5afc73a7feb9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: NamedTypeBuilderImpl: ClassTooLong \u2014 842 significant lines (blank, comment-only and punctuation-only lines excluded), 31 methods. The bar is 400 significant lines; this is 442 over it, 2.11\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":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0fe8de1d947f1691325fca54c5819775ba72e99da2f57a5b38ec5d167516cfe"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ProcessedOptions: TooManyMethods \u2014 63 methods. The bar is 30 methods; this is 33 over it, 2.10\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":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d8d41034a84d61fbfd36fa40664f586ae1d37216d68b6d3a37fda4b3b0b0f31"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/standard_bounds.dart: FileTooLong \u2014 1050 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 550 over it, 2.10\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a27da93512785522ba457aedcd33f2346a49dd7d38ba49c6e1126f4183a06d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CoreTypes: ClassTooLong \u2014 834 significant lines (blank, comment-only and punctuation-only lines excluded), 76 methods. The bar is 400 significant lines; this is 434 over it, 2.09\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/core_types.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"16cc0a52620ec0da3184fefcdd82828e033b9faac213a36574867f78ba3c159b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/type_checker.dart: FileTooLong \u2014 1040 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: TypeCheckingVisitor (132-1568). The bar is 500 significant lines; this is 540 over it, 2.08\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e05a1324652a5d4f1ef9e160db192eb39e0d984d6e97dc67f6893e34411d6e2"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: StatementCompletionProcessor: ClassTooLong \u2014 831 significant lines (blank, comment-only and punctuation-only lines excluded), 52 methods. The bar is 400 significant lines; this is 431 over it, 2.08\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":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"1374811736d745d3aa1b11d7ffcff31e8dbce38eccd1e090615cd68251266792"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AnalysisServer: TooManyMethods \u2014 62 methods. The bar is 30 methods; this is 32 over it, 2.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"4821cd2964e93abf6a4f48cfdd1dfe73670631dfd1c0efb21bf6b1316bf296a0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InferrerEngine: TooManyMethods \u2014 62 methods. The bar is 30 methods; this is 32 over it, 2.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"9da16d7f636ecdbd3f32d54989413192936680349290efad393be072006168f2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Isolate: TooManyMethods \u2014 62 methods. The bar is 30 methods; this is 32 over it, 2.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":1429}}}],"partialFingerprints":{"codehealthFindingId/v1":"5070234a45abafba234c348e337fdea82465207f0be9f3423724670a034cca85"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ir/scope_visitor.dart: FileTooLong \u2014 1033 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: ScopeModelBuilder (16-1572). The bar is 500 significant lines; this is 533 over it, 2.07\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8980494010b793110e41c4646471b57281fa5a63aa2dd3d017531b88ec1f8540"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/mirrors_impl.dart: FileTooLong \u2014 1032 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 532 over it, 2.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"296248b9bb0212dc3da550d1166290f018aa56cdb2ef1cb02be4fbd38c6d2d3e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeCreator._createPatternFromKind: MethodTooLong \u2014 _createPatternFromKind runs 206 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 106 over it, 2.06\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":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":1378}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e4d2c56b44f5a2d513ecfa9924e41ebd4e5e7bbe810328b81e8bd0f2b248be"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dart2js.dart: FileTooLong \u2014 1028 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 528 over it, 2.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dart2js.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8bac835e54a9d2dbb47a3f8629c6502b597a0e867d3fbc2386eb38e5605dc61"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FrontendCompiler: ClassTooLong \u2014 822 significant lines (blank, comment-only and punctuation-only lines excluded), 26 methods. The bar is 400 significant lines; this is 422 over it, 2.06\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"71fe0cf1d6ed920e8e687a6df96ef532325c697170ca6eb16916d99749dc5c4b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _AstToIRVisitor: ClassTooLong \u2014 821 significant lines (blank, comment-only and punctuation-only lines excluded), 67 methods. The bar is 400 significant lines; this is 421 over it, 2.05\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":"pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"da7a592b30e1088f06b62fb335aac13b2338c0685cec6b2d71c56af3a5e2660b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: C.test: MethodTooLong \u2014 test runs 205 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 105 over it, 2.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/rasta/super.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"53179489d96c923df4337b8499ee2c6072286011f0124f0d32dbcff625e742f2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeCreator._createStatementFromKind: MethodTooLong \u2014 _createStatementFromKind runs 205 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 105 over it, 2.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":1614}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fcaaaed24bff213fdaebd10dc10aa156f49984fabb714e8fa75b56c9df454f5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StandardBounds.getStandardLowerBoundInternal: MethodTooLong \u2014 getStandardLowerBoundInternal runs 205 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 105 over it, 2.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d74cb91e780142f05ce69928236337d6af543377a433d395bd0eade281319a0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_model/closure.dart: FileTooLong \u2014 1020 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 520 over it, 2.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6631c1db4bea8500088a9cbb9b3ada6485cb577cd58a1b45af9ce1b249d5167"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InstructionVisitor: TooManyMethods \u2014 61 methods. The bar is 30 methods; this is 31 over it, 2.03\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":"pkg/cfg/lib/ir/visitor.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"99f757c3baa0a5b5b3b65fb721aca4b01ec6b255f10eba66c224802191ce71cc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FlatTypeMask: TooManyMethods \u2014 61 methods. The bar is 30 methods; this is 31 over it, 2.03\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":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a66820859c3fbd256befea3b325821910045c3e74998b631c1a1a5aec70a3da"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: IncrementalCompiler: TooManyMethods \u2014 61 methods. The bar is 30 methods; this is 31 over it, 2.03\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":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"0930d0499b3312524b307d41cf074847048e4233c67d7cf77b7c6b2e3e39bfc0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSNumber: TooManyMethods \u2014 61 methods. The bar is 30 methods; this is 31 over it, 2.03\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":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b707a9727358238e9d17b1f1081f894b3865b7e6802e87a4c9843e518ab5e1d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _StringBase: TooManyMethods \u2014 61 methods. The bar is 30 methods; this is 31 over it, 2.03\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":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ee13f8cb883ccd34d23a27e768a9882fcf9e5154efdffa35cc5fc0b5226e18d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ListBase: TooManyMethods \u2014 61 methods. The bar is 30 methods; this is 31 over it, 2.03\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":"sdk/lib/collection/list.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"d181d5973dd5893b29e52cb9f6e5540e7ee66349549ade78d34072724f6d6d39"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _File: TooManyMethods \u2014 61 methods. The bar is 30 methods; this is 31 over it, 2.03\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":"sdk/lib/io/file_impl.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e4a5d837b49302ac37885b17e02de405e74b12897b3a091c3d323e9c93114c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Types: ClassTooLong \u2014 812 significant lines (blank, comment-only and punctuation-only lines excluded), 12 methods. The bar is 400 significant lines; this is 412 over it, 2.03\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":"pkg/kernel/lib/src/types.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e92d15ef48028339c097c24aea25a79e27430212a7b68f6b51829a6ee4bf3ae0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: metadata/parser.dart: FileTooLong \u2014 1011 significant lines (blank, comment-only and punctuation-only lines excluded), about 85% of them inside a single declaration: AnnotationsListener (26-1311). The bar is 500 significant lines; this is 511 over it, 2.02\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bf9696b29881bdbb3620e9c2c466064298b52d093fa6b01b26a9df0158b86d5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary2/ast_binary_writer.dart: FileTooLong \u2014 1009 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: AstBinaryWriter (15-1439). The bar is 500 significant lines; this is 509 over it, 2.02\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_writer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"438af0f9fe9471bfade84cfeef62bca6172b76abb47650a8d6ffe2375884a30e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: elements/script_inset.dart: FileTooLong \u2014 1007 significant lines (blank, comment-only and punctuation-only lines excluded), about 69% of them inside a single declaration: ScriptInsetElement (20-1028). The bar is 500 significant lines; this is 507 over it, 2.01\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7920e159cb33a23f6f3f0377eb9cdee8c43890e9e2e40f26ae4a80b260bed3f8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/delayed_expressions.dart: FileTooLong \u2014 1005 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 505 over it, 2.01\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/delayed_expressions.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"01baee8482e98cd70890b948b6924ac784c2d35b44adae27cc298e2b6a7e163f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IncrementalCompiler.compileExpression: MethodTooLong \u2014 compileExpression runs 201 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 101 over it, 2.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2002}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dde9a2a51b4e7662368b37c5c749cb52c742a3f1d85544a9b929a4637566e63"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/ast_rewrite.dart: FileTooLong \u2014 1001 significant lines (blank, comment-only and punctuation-only lines excluded), about 97% of them inside a single declaration: AstRewriter (28-1458). The bar is 500 significant lines; this is 501 over it, 2.00\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"82113961458edff30653b2e6a787521c0c72bf3bd2c364576505274941c4efaf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/types.dart: FileTooLong \u2014 1001 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 501 over it, 2.00\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac35983a3152d3dbeb6302a161bce9aa5d055ef0bc4fd9a4001882254a85d6e0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeProviderImpl: TooManyMethods \u2014 60 methods. The bar is 30 methods; this is 30 over it, 2.00\u00D7 the bar. Most of these members implement dart.TypeProvider (51 of 60 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_provider.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"c72c3f472d9b557385a1dcc3012f0d4ecbe5fe0ee55ea11b6bfa29d30b21db89"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BundleWriter: TooManyMethods \u2014 60 methods. The bar is 30 methods; this is 30 over it, 2.00\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":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"57112af8d2221f6a7b6d6f581b362c2836719764ac2d2786e53312bcdaa973b2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ImpactRegistry: TooManyMethods \u2014 60 methods. The bar is 30 methods; this is 30 over it, 2.00\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":"pkg/compiler/lib/src/ir/impact.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cc979b2d8f1b1426730a563acd65c48ec84449ff219aeaf377c4600d028014f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _TypedArrayFactoryProvider: TooManyMethods \u2014 60 methods. The bar is 30 methods; this is 30 over it, 2.00\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":"tools/dom/src/dart2js_TypedArrayFactoryProvider.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"e879ac68464049a0f4dc456bb37426a8d0fec3ffe924825fc2bc9c184af88eee"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Writer._expressionToText: MethodTooLong \u2014 _expressionToText runs 200 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 100 over it, 2.00\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":"pkg/_fe_analyzer_shared/lib/src/testing/metadata_helper.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"03bea38bc530fe9e3fd03081595e30a741e98648dad8b36bace2b70e70b0dfaa"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IsolateViewElement.render: MethodTooLong \u2014 render runs 200 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 100 over it, 2.00\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":"pkg/observatory/lib/src/elements/isolate_view.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"facc4640a82fb439a57ed1aeb1e9159e299c4a73531503e3cec3431c24669609"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: element/inheritance_manager3.dart: FileTooLong \u2014 998 significant lines (blank, comment-only and punctuation-only lines excluded), about 79% of them inside a single declaration: InheritanceManager3 (86-1395). The bar is 500 significant lines; this is 498 over it, 2.00\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3675b017c3a35bb0996306a0c38c22ac2aa0951c0f19844083d00e23e4312d32"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ClosedWorldClassHierarchy: ClassTooLong \u2014 798 significant lines (blank, comment-only and punctuation-only lines excluded), 43 methods. The bar is 400 significant lines; this is 398 over it, 2.00\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":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"306226799760c83a745081a4d3d25d42b117f39733aa0d80e89e4699747bfc81"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ElementBuilder: ClassTooLong \u2014 795 significant lines (blank, comment-only and punctuation-only lines excluded), 26 methods. The bar is 400 significant lines; this is 395 over it, 1.99\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":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"245f3604d81ea91904cc5ff67aa463432edb8620479ddb71ffac51c1b6d3c469"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FragmentBuilder: ClassTooLong \u2014 792 significant lines (blank, comment-only and punctuation-only lines excluded), 53 methods. The bar is 400 significant lines; this is 392 over it, 1.98\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":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1265}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ed3cec070cca9036ee90fafcef5c36046fdfbc2257f921ab3dc1865bfcd26ec"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InheritanceManager3: ClassTooLong \u2014 792 significant lines (blank, comment-only and punctuation-only lines excluded), 26 methods. The bar is 400 significant lines; this is 392 over it, 1.98\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":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cbfb117ffa7be703e2a0ce66d6eb9b6e5d651ba91dcd9f692ac4e5adf01e5b3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MutationRunner._runChain: MethodTooLong \u2014 _runChain runs 198 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 98 over it, 1.98\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/fine/ab_mutate.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fb828f39be29b978e6efcee526e5fd460a39b7d4e44203f49955585f2b50d81"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: builder/named_type_builder.dart: FileTooLong \u2014 986 significant lines (blank, comment-only and punctuation-only lines excluded), about 85% of them inside a single declaration: NamedTypeBuilderImpl (84-1276). The bar is 500 significant lines; this is 486 over it, 1.97\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94c7b3a15d8d3d5f5158966bb5f037e24990f4db8ad51e5211fed4f3f992fb32"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ir/ast_to_ir.dart: FileTooLong \u2014 985 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: _AstToIRVisitor (104-1413). The bar is 500 significant lines; this is 485 over it, 1.97\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"351b00f487029c42dc3cf6a7d495c8234839efde6ed5940f061ae35327d329d4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/generate_dart_common.dart: FileTooLong \u2014 984 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 484 over it, 1.97\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":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a36fee26f2e5e5e5f594521e18d87e8079f9fa4897de03a6a6e13907bf2ada"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LibraryReader: TooManyMethods \u2014 59 methods. The bar is 30 methods; this is 29 over it, 1.97\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":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b396f0f9a8e3a5ae75be30e53293965fe0541537627f315a0a69045dc3aafb8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RegularFieldDeclaration: TooManyMethods \u2014 59 methods. The bar is 30 methods; this is 29 over it, 1.97\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":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"987789ab646afac50d775c3b5c941e145bedc9f358a84506c57bc8223fadb572"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceCompilationUnitImpl: TooManyMethods \u2014 59 methods. The bar is 30 methods; this is 29 over it, 1.97\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":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e73d990cf556e833c3a8314a1258333933ecb29e2c344b0dce10a63ab63cbd5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _TreeShakerPass1: TooManyMethods \u2014 59 methods. The bar is 30 methods; this is 29 over it, 1.97\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":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":1347}}}],"partialFingerprints":{"codehealthFindingId/v1":"51480f92f53111536d7fef7d249cb04400f363af1d88db42b569ebe07533b615"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VmRecognizedMethods: ClassTooLong \u2014 786 significant lines (blank, comment-only and punctuation-only lines excluded), 1 methods. The bar is 400 significant lines; this is 386 over it, 1.97\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":"pkg/native_compiler/lib/front_end/recognized_methods.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"da67837ddca1c723de494c43effba2f848ddb59979bb4625738295e0d02e2760"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: OutlineBuilder.endFormalParameters: MethodTooLong \u2014 endFormalParameters runs 196 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 96 over it, 1.96\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":3249}}}],"partialFingerprints":{"codehealthFindingId/v1":"dee9de9230cf649fc055ac6696d5474ca2f504a8b7e94f43709dbf03271a6155"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: metadata/proto.dart: FileTooLong \u2014 976 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 476 over it, 1.95\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d37280dcf944bc6df17ddcbbf6d1cb4670abc29dd450048675b16718b6f2346d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitDotShorthandInvocation: MethodTooLong \u2014 visitDotShorthandInvocation runs 195 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 95 over it, 1.95\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13806}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d22cdc8ec7b541e95ea6aaaef8f4a20966f6b6a5b63bed0c8255fdfc931b1f3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CodeShapeDataCollector: ClassTooLong \u2014 777 significant lines (blank, comment-only and punctuation-only lines excluded), 123 methods. The bar is 400 significant lines; this is 377 over it, 1.94\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":"pkg/analysis_server/tool/code_completion/code_metrics.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1e6baba2f290ab06dcf02ed5fde87c43114c4c529bf92bdf1b3d70a43f13d58"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ConstantVerifier: ClassTooLong \u2014 777 significant lines (blank, comment-only and punctuation-only lines excluded), 40 methods. The bar is 400 significant lines; this is 377 over it, 1.94\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":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"e84001ef385539236457af02b92e3ae388726f2896fea3df255a61abe99c94b8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/macho.dart: FileTooLong \u2014 971 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 471 over it, 1.94\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2native/lib/macho.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba699f658a0aa3c90d27d95a70412b4bca33eaf55e7c7f903e02bc58c6c9067b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartDebugAdapter.variablesRequest: MethodTooLong \u2014 variablesRequest runs 194 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 94 over it, 1.94\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":2264}}}],"partialFingerprints":{"codehealthFindingId/v1":"db44a200a6471f34fe78d06439c2a9c888e2a966b4f094593f09def3b6e48803"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BuildCliSubcommand.doBuild: MethodTooLong \u2014 doBuild runs 194 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 94 over it, 1.94\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/build.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b988b3b8eb9585a69e759c6e4755a6b194467543dce0b0dd5af5d67528b576d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: commands/compile.dart: FileTooLong \u2014 968 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 468 over it, 1.94\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a8dc7809bd06a6005fb584c2dbef1e64a03b230c083ddab1aa934d19f37f7e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/feature_computer.dart: FileTooLong \u2014 967 significant lines (blank, comment-only and punctuation-only lines excluded), about 63% of them inside a single declaration: _ContextTypeVisitor (505-1432). The bar is 500 significant lines; this is 467 over it, 1.93\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"26589e4c3a7152ee1ee944fbd872e905789d2d5fd05ca67662bdb63d324cb403"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: constructor/encoding.dart: FileTooLong \u2014 967 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 467 over it, 1.93\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":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"133ebf073a0f3baaa06204891f3f5d3c99dfe5443636d58410b4981802e3865e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InlineWeeder: TooManyMethods \u2014 58 methods. The bar is 30 methods; this is 28 over it, 1.93\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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9198}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4ad075bf1105f821713d3542ece10d455457afb65b69bf7ded32913e389ec5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NullableInference: TooManyMethods \u2014 58 methods. The bar is 30 methods; this is 28 over it, 1.93\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":"pkg/dev_compiler/lib/src/kernel/nullable_inference.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"307c73976f99741942916cc7b3f24f4cfdcc4f00d78390ba830907b839ff11e7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PrimaryConstructorFieldDeclaration: TooManyMethods \u2014 58 methods. The bar is 30 methods; this is 28 over it, 1.93\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":"pkg/front_end/lib/src/fragment/primary_constructor_field.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cb22fc0df2921a86115adc269ca1b24f96c21f2a1c3a728c87fbaf2e8e3f795"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _GrowableList: TooManyMethods \u2014 58 methods. The bar is 30 methods; this is 28 over it, 1.93\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":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"66c9bc246d6b01a100b78ce024ed3e42229633d79b3f7d93c5c51c156e8f1b7d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: code_completion/code_metrics.dart: FileTooLong \u2014 966 significant lines (blank, comment-only and punctuation-only lines excluded), about 80% of them inside a single declaration: CodeShapeDataCollector (160-1264). The bar is 500 significant lines; this is 466 over it, 1.93\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/code_metrics.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6ce512c811869131f0c880bb6237109272199bafc23e90a6671e4e06a4f7c8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/diet_listener.dart: FileTooLong \u2014 966 significant lines (blank, comment-only and punctuation-only lines excluded), about 97% of them inside a single declaration: DietListener (40-1431). The bar is 500 significant lines; this is 466 over it, 1.93\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb8c1e5c65d261be82d6ac9e2b4e7b7dab00d6f6206d9f0c04420e8a049edae3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/statements.dart: FileTooLong \u2014 966 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 466 over it, 1.93\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f451f80b68c8e4a3c4068f3eb909bbed82919939535b46942deb218a7677916"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: program_builder/program_builder.dart: FileTooLong \u2014 962 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: ProgramBuilder (61-1385). The bar is 500 significant lines; this is 462 over it, 1.92\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd8ae6f6aae14e7cd20a57a476b173434065ac7e92cf1ca3e822f1cabf2ea61"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: error/unused_local_elements_verifier.dart: FileTooLong \u2014 959 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 459 over it, 1.92\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":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c78007af06aa5b94cdd3564c18ab24902fee4c7b26584fd746c4cf50631f00"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/listener.dart: FileTooLong \u2014 957 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: Listener (50-2477). The bar is 500 significant lines; this is 457 over it, 1.91\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c9caa2019b91055aa5c87fad84e96d57dc5e7a841f0b4b8674650d0c10c6289"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/transformers.dart: FileTooLong \u2014 956 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 456 over it, 1.91\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/transformers.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc5e8ee832fa672346c164d34d63886e28a05e7ff5ba4869c8676df11f8a40f8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelTarget._finishConstruction: MethodTooLong \u2014 _finishConstruction runs 191 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 91 over it, 1.91\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1542}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8d6bced8b48fd09e11d62ea721e6592adf001ac660cfbae5771272225127738"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BuilderFactory._createDeclarationFromFragment: MethodTooLong \u2014 _createDeclarationFromFragment runs 191 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 91 over it, 1.91\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c405e1ca6c6341a23a9d14fe9d6115b758441cccbc34ece30f1d87696d2c2f1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ssa/value_range_analyzer.dart: FileTooLong \u2014 952 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 452 over it, 1.90\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":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"06dda3eca408cbba0530a9dfe6f2d6f7187adb6e61572501ce8406168ebce051"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ddc/ddc_module_loader.js: FileTooLong \u2014 951 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 451 over it, 1.90\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":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3354d46a0209ee17fdf93136337d000ca455c46307f15439ea5052e18a0dadce"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LspAnalysisServer: TooManyMethods \u2014 57 methods. The bar is 30 methods; this is 27 over it, 1.90\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":"pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a5380044951750744294bbe6f070b2b0908054a49dcc72eaec5eeb077782b17"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _Double: TooManyMethods \u2014 57 methods. The bar is 30 methods; this is 27 over it, 1.90\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":"sdk/lib/_internal/vm/lib/double.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"e15d5ae50e291a8dcb000523565f18de691fd9b601e152f974353c505020cc2d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BoxedInt: TooManyMethods \u2014 57 methods. The bar is 30 methods; this is 27 over it, 1.90\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":"sdk/lib/_internal/wasm/common/boxed_int.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3e6a577ecb0d2dc459ffc5a5bd53b6471153dac466993dffcd3b4bd08899457"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LibraryManifestBuilder._buildManifests: MethodTooLong \u2014 _buildManifests runs 190 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 90 over it, 1.90\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":888}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ac9abaafec87a36c00fe04fefb40119d0b631ab580e6229b30f3addcef4f086"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _BigIntImpl._binaryGcd: MethodTooLong \u2014 _binaryGcd runs 190 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 90 over it, 1.90\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd5cf89f75e8ef017403b220fe5f83255ab07609d18a626fe4f37049065f21ca"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _BigIntImpl._binaryGcd: MethodTooLong \u2014 _binaryGcd runs 190 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 90 over it, 1.90\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/bigint_patch.dart"},"region":{"startLine":1523}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c887f96d3a4667df78a85e3868b7e0748b83a68f8932e6b091b7e87728dfe9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/elf.dart: FileTooLong \u2014 949 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 449 over it, 1.90\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":"pkg/native_stack_traces/lib/src/elf.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4809c4e123082c19ec3f926446a46a0e37ce0020aac3d123fb94e9a76c0f4045"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SourceExtensionTypeDeclarationBuilder: ClassTooLong \u2014 756 significant lines (blank, comment-only and punctuation-only lines excluded), 32 methods. The bar is 400 significant lines; this is 356 over it, 1.89\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":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"07b1c6acc6b950f899ebbb65e96cd9abbf1eb5dba7e5beecaab3f09bee782448"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FunctionViewElement._createMembers: MethodTooLong \u2014 _createMembers runs 189 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 89 over it, 1.89\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/function_view.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a9119e96f635ca155525cb459bc740ee91148cce44cf3395c4ce42c84d9503f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/flow_analysis_visitor.dart: FileTooLong \u2014 944 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 444 over it, 1.89\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":"pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"729efdd476931baf540cc8fb27672fdddf679ad734b880781cc161e70f66fb05"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/object_access_target.dart: FileTooLong \u2014 944 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 444 over it, 1.89\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":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"48da0de5265a9ce156e82906c23bf99db653ff93796eff10018c5feb8c7af2be"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MiniJsParser: ClassTooLong \u2014 755 significant lines (blank, comment-only and punctuation-only lines excluded), 56 methods. The bar is 400 significant lines; this is 355 over it, 1.89\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":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbe7d6241709b2b225fa38b35f43346f8dca5c4286379a03b7e5e2700c5ce363"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _FfiDefinitionTransformer: ClassTooLong \u2014 755 significant lines (blank, comment-only and punctuation-only lines excluded), 26 methods. The bar is 400 significant lines; this is 355 over it, 1.89\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":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"241d82a2bd0c1049eb31b82db5e59b83bba09e3388a13717f9df15d04d370eba"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Compiler: ClassTooLong \u2014 753 significant lines (blank, comment-only and punctuation-only lines excluded), 54 methods. The bar is 400 significant lines; this is 353 over it, 1.88\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":"pkg/compiler/lib/src/compiler.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"defc747e9c588ca00c916daac325f90e83a008e98ea9c43a1509f8c5acd73aca"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AssignmentExpressionResolver: ClassTooLong \u2014 753 significant lines (blank, comment-only and punctuation-only lines excluded), 21 methods. The bar is 400 significant lines; this is 353 over it, 1.88\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":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a488d6e79600f8377fc6afbf8cb7f14e185b2298a3acb993ecb7585d347d5753"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: JFieldAnalysis.from: MethodTooLong \u2014 from runs 188 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 88 over it, 1.88\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":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"86089c16f1e439125646bf0a95c2071ef1ab05f4a91b7aecb2d505f1f1c49824"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitExtensionIfNullIndexSet: MethodTooLong \u2014 visitExtensionIfNullIndexSet runs 187 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 87 over it, 1.87\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7257}}}],"partialFingerprints":{"codehealthFindingId/v1":"4499c5684649589d42bbd6d8ec8d1838f5b9bd0cb5b079fc5d8f34c8d7270608"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: HttpDate._parseCookieDate: MethodTooLong \u2014 _parseCookieDate runs 187 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 87 over it, 1.87\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":"sdk/lib/_http/http_date.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"23129d6f4a5eec55a7ae0c02a435de3cfc393bc7694f7286f1a7c232450ab5b7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/string_patch.dart: FileTooLong \u2014 934 significant lines (blank, comment-only and punctuation-only lines excluded), about 63% of them inside a single declaration: _StringBase (62-989). The bar is 500 significant lines; this is 434 over it, 1.87\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8e02d91c23132eccd83cbee66ac0f3c4fe554949b6867bb6b86b8ea681715d6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StackListener: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\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":"pkg/_fe_analyzer_shared/lib/src/parser/stack_listener.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7ff8d1185f0ebc62f1dc6dff6b84accf46c18e9123611f0ed6fbfddf9e4c6b0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ChromeProxyService: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\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":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"9099b18a577080b6155ee31f9eddccdab217a9eee0b98c433925812df0eac89b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MiniJsParser: TooManyMethods \u2014 56 methods. The bar is 30 methods; this is 26 over it, 1.87\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":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cea7cba4d93f38e7bb35c478c430f8ec52ce110e16eca52bb3114c6346eddb8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ProtocolConverter.convertVmInstanceToVariablesList: MethodTooLong \u2014 convertVmInstanceToVariablesList runs 186 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 86 over it, 1.86\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":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"682234cf82dcfdf51795421814d1f7ccb271d74adb89515546d6ff9184ae8b84"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/collection_patch.dart: FileTooLong \u2014 926 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 426 over it, 1.85\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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9b4d564a84bf710db934ff109e77942b3a7700ae38977e6e84938618d541775"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitExtensionCompoundIndexSet: MethodTooLong \u2014 visitExtensionCompoundIndexSet runs 185 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 85 over it, 1.85\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8856}}}],"partialFingerprints":{"codehealthFindingId/v1":"5170a18570ce0b19ee44b575f163ad4540b0db948db357aa1b7ecc9a3176082a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase._inferInstanceMethodInvocation: MethodTooLong \u2014 _inferInstanceMethodInvocation runs 185 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 85 over it, 1.85\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3036}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8a4635a0b320ebcc32e6d71e41330a244fb984dac73a2dcc61113a473acc10"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CodeViewElement.render: MethodTooLong \u2014 render runs 185 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 85 over it, 1.85\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/code_view.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0fba66461652707865d46ab6f0f8f963298c9e98cee40e1d878b10081a82689"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/analysis_server.dart: FileTooLong \u2014 923 significant lines (blank, comment-only and punctuation-only lines excluded), about 72% of them inside a single declaration: AnalysisServer (119-1422). The bar is 500 significant lines; this is 423 over it, 1.85\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"97e256a43ad3d1e50096c049af29e2ffb0e9c345bb82f19fa255986603b40d46"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Driver._analyzeAll: MethodTooLong \u2014 _analyzeAll runs 184 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 84 over it, 1.84\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/driver.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"a238e4f1a62335832fa3fc162b53c109b158678119bb8f69f4cd317ce17d93c1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Arm64CodeGenerator.visitAllocateArray: MethodTooLong \u2014 visitAllocateArray runs 184 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 84 over it, 1.84\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2128}}}],"partialFingerprints":{"codehealthFindingId/v1":"60689046e87e632217e0a97612a4a8d7ebd631e9cbe2ffc8422fe50521b7e0f7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _BigIntImpl._binaryGcd: MethodTooLong \u2014 _binaryGcd runs 184 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 84 over it, 1.84\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":2112}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce1d7a9842821ddb752affe47563f81bbbd13bbb80a0d0fbbfb47f37735c0262"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/kernel_front_end.dart: FileTooLong \u2014 919 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 419 over it, 1.84\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/kernel_front_end.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed7040f312edc94cac5fdeb45cb5cc8cb139d624ffb634a859bb0e809fc0d7e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: _http/http_headers.dart: FileTooLong \u2014 919 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 419 over it, 1.84\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"316b981afcf495765ef8fa254e391439fdc67a93a4522ef770a5c1ba5283b256"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: statement/statement_completion.dart: FileTooLong \u2014 917 significant lines (blank, comment-only and punctuation-only lines excluded), about 91% of them inside a single declaration: StatementCompletionProcessor (133-1315). The bar is 500 significant lines; this is 417 over it, 1.83\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ec343d488722fb5ea931f408f3eeb4fa34825e4dadf46595b91060c6d5bbd15"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: serialize/sections.dart: FileTooLong \u2014 917 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 417 over it, 1.83\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":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"abecf98814f11c18dce6c5fa819123ab6e0bdfe21436d0927b3080b12d1ca864"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _DynamicModuleValidator: TooManyMethods \u2014 55 methods. The bar is 30 methods; this is 25 over it, 1.83\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":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"667c7c967858785cd9092c36f730a8daef49024170a7aab8f8deff22319a6a97"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KernelTarget: TooManyMethods \u2014 55 methods. The bar is 30 methods; this is 25 over it, 1.83\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":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"edee073e00b76ac0f04a093c1b85e7308def9a0059316c7f22da7945cea17a7c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Target: TooManyMethods \u2014 55 methods. The bar is 30 methods; this is 25 over it, 1.83\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":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"e688b9818347d66801ac6572a70abd8c9a6d67507474035174ab840135739d87"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DevHandler: ClassTooLong \u2014 729 significant lines (blank, comment-only and punctuation-only lines excluded), 37 methods. The bar is 400 significant lines; this is 329 over it, 1.82\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":"pkg/dwds/lib/src/handlers/dev_handler.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d7d5cf24b28b3ab5f1583068919a8854464da07b751ccc0b02bd6e47b0de314"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: transformations/js_util_optimizer.dart: FileTooLong \u2014 911 significant lines (blank, comment-only and punctuation-only lines excluded), about 72% of them inside a single declaration: JsUtilOptimizer (55-1118). The bar is 500 significant lines; this is 411 over it, 1.82\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a34d1d990c1f3585fbabae67b3c46d18c5bd3625647229d28f6d085e4de4cb91"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/builder.dart: FileTooLong \u2014 910 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: MiniJsParser (461-1503). The bar is 500 significant lines; this is 410 over it, 1.82\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa6d73134ee2123d08951ad7466751e153b699d51bc3949c30e7b8536dcd3e95"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DispatchTable.build: MethodTooLong \u2014 build runs 182 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 82 over it, 1.82\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dispatch_table.dart"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"f21f0b45d2999bc0432295788b163959e122a210838e428e7d3d3235aeeeab5c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitSpreadElement: MethodTooLong \u2014 visitSpreadElement runs 182 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 82 over it, 1.82\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4554}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c933d32834700502afb095b251b8dcfcda02fc75679764895e80d3b0c1b044"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: back_end/register_allocator.dart: FileTooLong \u2014 905 significant lines (blank, comment-only and punctuation-only lines excluded), about 79% of them inside a single declaration: LinearScanRegisterAllocator (40-1108). The bar is 500 significant lines; this is 405 over it, 1.81\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3e4dbba3e14dd42b4d0b942483400260bf84384ff4b4ddd4c8a89c639d64e7d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: method/encoding.dart: FileTooLong \u2014 904 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 404 over it, 1.81\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a40d3856ffa6bd5641c44e7f477da61e685420d7ef766ebf31f8c094d7c90eb2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: rules/use_build_context_synchronously.dart: FileTooLong \u2014 902 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 402 over it, 1.80\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":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6687de497ddd414734e8cd558353983d691ab791512fb8fcb9d826943597887"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CommonMasks: ClassTooLong \u2014 721 significant lines (blank, comment-only and punctuation-only lines excluded), 112 methods. The bar is 400 significant lines; this is 321 over it, 1.80\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":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"19c32536b24c425c640498a62e07ea152d77cef90c27e0b0473a1ed99815c50d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js/size_estimator.dart: FileTooLong \u2014 901 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: SizeEstimator (29-1298). The bar is 500 significant lines; this is 401 over it, 1.80\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba29e12d78adf4f8e7131d0b887f3b06df89832ffdba4411704e03a77f9aae32"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: chrome/chrome_proxy_service.dart: FileTooLong \u2014 901 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: ChromeProxyService (38-1345). The bar is 500 significant lines; this is 401 over it, 1.80\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"27fcfe6f2a6faa598ed3693615bae7b1684de4f3807d6e46638163854907da6d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/compact_hash.dart: FileTooLong \u2014 901 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 401 over it, 1.80\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":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"998211166dc9ce4fe0eb8aa98c9897d66997a890d25187e2beabd22c6c6ae0b6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeProvider: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"pkg/analyzer/lib/dart/element/type_provider.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"a17627068c9869e9a5785361a8fb97305e5a3d4e94dab619f595064cc2b51538"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InterfaceTypeImpl: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6fabc82b5757c8c09b7de897454a667be111d32b51c5b79245e7269af201a4c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GatherUsedLocalElementsVisitor: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"e96a7e15132f71bbc3f394f19126671b512c82404f72264e6abfbfbbcd7d9541"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ReferenceResolver: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"pkg/analyzer/lib/src/summary2/reference_resolver.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"f84cd2be3f63f972bb36fa4c6064ea33d85e98034c9fac72007124f35cb1da27"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartEditBuilderImpl: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"971f9a4361126fb462806079a794470464a6e22fc76be6f5360bc3e2e3a00cc5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Compiler: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"pkg/compiler/lib/src/compiler.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"90421a93c34f44b602f6ea0bf0f39725b854e5be8852179a602c4be01891e06f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ObjectAccessTarget: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"957f6f2be6b45928ec221fb616316a1dd263f6cd511dfa9c8cefcdbb00132b85"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Arm64Constraints: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\u00D7 the bar. Most of these members implement ir.InstructionVisitor (45 of 54 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a549d48f8ec9f8747eb0c83f5eb9106cd514eb9484187484002c3d69f582c06"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSStringImpl: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"0880b0b3110a9010ffa03b17ab2b189867c87cea77b517df3fe6b5c8d2dbbb8f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Uri: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"sdk/lib/core/uri.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"64c05333fce9e08387781b8393f1d1567c592d40dc241ec95b5ecb1509cf68aa"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FileSystemEntity: TooManyMethods \u2014 54 methods. The bar is 30 methods; this is 24 over it, 1.80\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":"sdk/lib/io/file_system_entity.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d3a808b49c873af852ca7fa29016814d93f34e37ce390eb21d9917452e52ef"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ddc_runtime/operations.dart: FileTooLong \u2014 900 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 400 over it, 1.80\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":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d76c90467fdbced3a3a193eb4dd0a67d3a2b65cbe1e605a432e644dff7fc089"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ir/type.dart: FileTooLong \u2014 899 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 399 over it, 1.80\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":"pkg/wasm_builder/lib/src/ir/type.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b47cb82ae6bf02a019b6d58b08bf4e609a182766e233c51f2d336f1e0d268b92"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: PluginServer: ClassTooLong \u2014 719 significant lines (blank, comment-only and punctuation-only lines excluded), 38 methods. The bar is 400 significant lines; this is 319 over it, 1.80\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":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"34c1dd527747754ed616f9a7650fbeb6783bf017b8a6171ab09204e651928b57"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: tool/dart_doctest_impl.dart: FileTooLong \u2014 898 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 398 over it, 1.80\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":"pkg/front_end/tool/dart_doctest_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0c125da9c2eb66673fae81aa3d7d59781579d8c840f7e75c99c25e3b2449b00"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LinearScanRegisterAllocator: ClassTooLong \u2014 717 significant lines (blank, comment-only and punctuation-only lines excluded), 35 methods. The bar is 400 significant lines; this is 317 over it, 1.79\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":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8c76354b131d1a05472d327da6869d0de0d31d2befe5335aa6c7a8ab1c8ed8a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: JsInteropChecks: ClassTooLong \u2014 715 significant lines (blank, comment-only and punctuation-only lines excluded), 38 methods. The bar is 400 significant lines; this is 315 over it, 1.79\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":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"c09c5e4cf0e935a39994d81d8c2af0d0b668bfde26175409a8edcffe2f154a14"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ElementBindingVisitor: ClassTooLong \u2014 714 significant lines (blank, comment-only and punctuation-only lines excluded), 49 methods. The bar is 400 significant lines; this is 314 over it, 1.79\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":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"6945034ee0c43eee2f2f597095d5d0d96f30aba92a7a53f1a396667ec5df0919"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _SnapshotGraph: ClassTooLong \u2014 713 significant lines (blank, comment-only and punctuation-only lines excluded), 34 methods. The bar is 400 significant lines; this is 313 over it, 1.78\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":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0e6a7aabb40ba15954447fcccb5e16aa8ef120358d198d09980a51055cd584b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_compatibility/convert_patch.dart: FileTooLong \u2014 890 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 390 over it, 1.78\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b163c322d4ea47fb563e6637ff54f9a4cae449461f5dff7aa5d964c0c384aade"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MatchingExpressionVisitor: ClassTooLong \u2014 711 significant lines (blank, comment-only and punctuation-only lines excluded), 20 methods. The bar is 400 significant lines; this is 311 over it, 1.78\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":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"84be2c805354a1ae0420f4c9fb962e2f62bef8d90303d28e929197300d0854df"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ssa/codegen_helpers.dart: FileTooLong \u2014 888 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 388 over it, 1.78\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1ebe9f7c5bb4b7ae463b55021111baf8289e85c200c145030ed263eed69e5a7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _HttpParser: ClassTooLong \u2014 709 significant lines (blank, comment-only and punctuation-only lines excluded), 37 methods. The bar is 400 significant lines; this is 309 over it, 1.77\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":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e3ac145771f085d353a485d58ab50bdc742eca551a96dfafec0f0c0bce3855a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: _http/http_parser.dart: FileTooLong \u2014 886 significant lines (blank, comment-only and punctuation-only lines excluded), about 80% of them inside a single declaration: _HttpParser (269-1315). The bar is 500 significant lines; this is 386 over it, 1.77\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"97b772d3559161e1523660149c0617eb060ebf73cdef36517091c5259ab64637"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FragmentBuilder: TooManyMethods \u2014 53 methods. The bar is 30 methods; this is 23 over it, 1.77\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":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1265}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac8f15b63c48bbf4991a4908e98be37afefb0be6df5aa6c466335e460737f57"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeMask: TooManyMethods \u2014 53 methods. The bar is 30 methods; this is 23 over it, 1.77\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":"pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"c93da154c5a9f200c1f47ed5d0154b410f24c1c1c0b1cd59d60270b23c7d026f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Class: TooManyMethods \u2014 53 methods. The bar is 30 methods; this is 23 over it, 1.77\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":"pkg/kernel/lib/src/ast/declarations.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"10411030c03fbd7fbd66f755fd42842c4cd11fba142f3267e5d7311eb9ceab9d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FfiNativeTransformer: ClassTooLong \u2014 705 significant lines (blank, comment-only and punctuation-only lines excluded), 28 methods. The bar is 400 significant lines; this is 305 over it, 1.76\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":"pkg/vm/lib/modular/transformations/ffi/native.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9922f6dbb74e89d15db913b26f99fba1467cbcb21ec48cf20ff9dd55adf6b19"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/elements.dart: FileTooLong \u2014 880 significant lines (blank, comment-only and punctuation-only lines excluded), about 73% of them inside a single declaration: CommonElements (23-1209). The bar is 500 significant lines; this is 380 over it, 1.76\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"099334780fce63e2b44bc3b26f7b7c26edbfbd88433ce4e81209e667db7dbab5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase._finishFieldGetterInvocation: MethodTooLong \u2014 _finishFieldGetterInvocation runs 176 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 76 over it, 1.76\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3282}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e6e25f84a1b84b49320b840e6dbb6761a9eb49a7735e1c521bc31cb2123996"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/compiler.dart: FileTooLong \u2014 877 significant lines (blank, comment-only and punctuation-only lines excluded), about 86% of them inside a single declaration: Compiler (76-1186). The bar is 500 significant lines; this is 377 over it, 1.75\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/compiler.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb401b19186639f40994f338f9fb016a2184a4a66a8fd22e8027334bb3c8a514"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ProgramBuilder._buildClass: MethodTooLong \u2014 _buildClass runs 174 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 74 over it, 1.74\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":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea081523b400018abe4779337e6647af105dfffae672137bc0e9e5040219e6d8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StatementCompletionProcessor: TooManyMethods \u2014 52 methods. The bar is 30 methods; this is 22 over it, 1.73\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":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"364986c007a244e1e507c61b6b6bb73ddc4b58c7856598c410c62e1d3c53039a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ElementMapperV2: TooManyMethods \u2014 52 methods. The bar is 30 methods; this is 22 over it, 1.73\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":"pkg/analyzer/lib/src/dart/ast/element_locator.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"367bd5c7828ecfeb50946a02b793df5b7543f80771c5052c19165e58845d5579"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LocalDeclarationVisitor: TooManyMethods \u2014 52 methods. The bar is 30 methods; this is 22 over it, 1.73\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":"pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d2c249ce83856f8dc5806fc3447b30d51ffe262656f5335ca179be792025855"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BodyBuilderContext: TooManyMethods \u2014 52 methods. The bar is 30 methods; this is 22 over it, 1.73\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":"pkg/front_end/lib/src/kernel/body_builder_context.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"6279f3e9df89f8da8e0d0611918dce164f48b6ca123ab455e6d2fc4a80ed3cb4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSNumber: TooManyMethods \u2014 52 methods. The bar is 30 methods; this is 22 over it, 1.73\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":"sdk/lib/_internal/js_runtime/lib/js_number.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e3c5209863bae492b17286ad8167760c16c841cf1fb1fe50824eb11b2d3ea6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SharedInteropTransformer._createIsACheck: MethodTooLong \u2014 _createIsACheck runs 173 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 73 over it, 1.73\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8791a7633c1f08fdb57cf5e0e9a1a83a0aae1f72a6c9f082292322008dbc9bf"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ScriptInsetElement: ClassTooLong \u2014 690 significant lines (blank, comment-only and punctuation-only lines excluded), 46 methods. The bar is 400 significant lines; this is 290 over it, 1.73\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":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e0147a86d52d7d2aad711a12b2bc5e6dd66dc27579774330792e95a73aa961f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitIfNullIndexSet: MethodTooLong \u2014 visitIfNullIndexSet runs 172 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 72 over it, 1.72\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6821}}}],"partialFingerprints":{"codehealthFindingId/v1":"55531198272d0fbdb9de6dcf2f4d82e779a16fc5f7adeb09dbf9c3829e3f703e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitCompoundIndexSet: MethodTooLong \u2014 visitCompoundIndexSet runs 172 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 72 over it, 1.72\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8423}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa44cb713b7091b0b4719788d39b47f403e4028d9a7a95e928e86f0c5595ea03"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BinaryBuilder.readExpression: MethodTooLong \u2014 readExpression runs 172 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 72 over it, 1.72\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":2381}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4fd54d4c512eb4af5cfc7d921331720028b2d0f6fb6b89f62e1aa4eb2bb3ae"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InstanceRefElement._createValue: MethodTooLong \u2014 _createValue runs 172 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 72 over it, 1.72\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_ref.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"93643244ec6139f544fd410573319579fea53bed39c4f57cde2ffddecd6f3a9b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_backend/runtime_types_resolution.dart: FileTooLong \u2014 859 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 359 over it, 1.72\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5dbf66c62e5c3623a60c1f61dc604bd8bf9309e69ac77a4b940b4e46c835f37"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: serialization/source.dart: FileTooLong \u2014 858 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: DataSourceReader (60-1571). The bar is 500 significant lines; this is 358 over it, 1.72\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/source.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f0fa7be4ba423810b69e7f2f0b9e38e7ae50b3ddc1723bfe8088a397b82742b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LibraryAnalyzer: ClassTooLong \u2014 686 significant lines (blank, comment-only and punctuation-only lines excluded), 25 methods. The bar is 400 significant lines; this is 286 over it, 1.72\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":"pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"72cbc14caef142892df157754820be650d74e40fc8a10998c4615b5e286ac7d3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SharedInteropTransformer: ClassTooLong \u2014 686 significant lines (blank, comment-only and punctuation-only lines excluded), 15 methods. The bar is 400 significant lines; this is 286 over it, 1.72\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":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"edbb565e6241d7d0960d310a4c4a985b4708b399a363a3ac2481f8e8e7e3d4cd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/dynamic_module_validator.dart: FileTooLong \u2014 855 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 355 over it, 1.71\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":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac1d4ebd54a0d8f0d33383a7ea3221c50a9309b83cca3a2397dddb8e396746d4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: JClosedWorldBuilder.convertClosedWorld: MethodTooLong \u2014 convertClosedWorld runs 171 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 71 over it, 1.71\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_world_builder.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c6a913cc9bd5db41b78cac30db904f8532730fe2a0ebf987b05844104e4c151"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _Processor.calculate: MethodTooLong \u2014 calculate runs 171 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 71 over it, 1.71\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"387202f559d5b829ad8b9879e3a2412f9669260aa0cad83e42c0a7703f93de2b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/plugin_server.dart: FileTooLong \u2014 854 significant lines (blank, comment-only and punctuation-only lines excluded), about 84% of them inside a single declaration: PluginServer (69-1241). The bar is 500 significant lines; this is 354 over it, 1.71\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0f064924a2d27197ba1470ad35e0673e8211d35db64f5b3e422c31cab358de8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: legacy/inline_method.dart: FileTooLong \u2014 851 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 351 over it, 1.70\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3a2feed27a84ac2e250d76a116dbd3756cb5483f17e9782685638b902e67161"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SuggestionBuilder: TooManyMethods \u2014 51 methods. The bar is 30 methods; this is 21 over it, 1.70\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":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"f53c31e9f5caa849b4058bde72f90f135fa8fe14ea2540ed2e95a3924ce1a90d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Expect: TooManyMethods \u2014 51 methods. The bar is 30 methods; this is 21 over it, 1.70\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":"pkg/expect/lib/expect.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8f15916c085e936d3c8a37b33e89787292be6c660dac1848d563bdd7e70d51c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NodeCreator: TooManyMethods \u2014 51 methods. The bar is 30 methods; this is 21 over it, 1.70\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":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"0615f129f52a0218f38071c8146adeb0a424a916e2aea62e12a3664f475d5c65"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HeapSnapshotElement: TooManyMethods \u2014 51 methods. The bar is 30 methods; this is 21 over it, 1.70\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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a35d51db0630d86dbefed510652c831e265cd306ab0f4a8abd755629b497090"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: EmbedderStringImpl: TooManyMethods \u2014 51 methods. The bar is 30 methods; this is 21 over it, 1.70\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":"sdk/lib/_internal/wasm/standalone/embedder_string.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"573be687cf47383ff23bb56d07a51cb94b7d672bdc87e5109da1fd32422c0829"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _SignatureUpdater.updateDeclaration: MethodTooLong \u2014 updateDeclaration runs 170 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 70 over it, 1.70\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"7382c2d8a4a5b9090d7379387eff0a957ff11c4dcde3f587ab537bb427824d39"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartTypes._subtypeHelper: MethodTooLong \u2014 _subtypeHelper runs 170 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 70 over it, 1.70\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1949}}}],"partialFingerprints":{"codehealthFindingId/v1":"043a8aaffcaf775637c679e98be579a5351ba4d7836d893d2024cc01edf3c46c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _Tuple.sanitize: MethodTooLong \u2014 sanitize runs 170 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 70 over it, 1.70\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"61b17e6c6ceb00a5b77938e9c6403fffe74513c0f217005781567e2032dbe7b3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/native_DOMImplementation.dart: FileTooLong \u2014 846 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 346 over it, 1.69\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":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f2be6e1ee19ab5e3295b5ce75eece86a613ec2450b52d1e0c4105876464c61"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: correction/bulk_fix_processor.dart: FileTooLong \u2014 844 significant lines (blank, comment-only and punctuation-only lines excluded), about 78% of them inside a single declaration: BulkFixProcessor (74-1139). The bar is 500 significant lines; this is 344 over it, 1.69\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"66875815eb96119c4cb560e06f7b286ab873cf5598398344d00378525a952e5b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: KernelImpactConverter: ClassTooLong \u2014 673 significant lines (blank, comment-only and punctuation-only lines excluded), 76 methods. The bar is 400 significant lines; this is 273 over it, 1.68\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"53c4a1c6243f8f37869458dcfb337285b064bb3040f8e71b352c3065e3b58a75"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/import_library.dart: FileTooLong \u2014 839 significant lines (blank, comment-only and punctuation-only lines excluded), about 63% of them inside a single declaration: ImportLibrary (38-863). The bar is 500 significant lines; this is 339 over it, 1.68\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/import_library.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f623cfb6db7ab411d9f89901bcb236e092185db209bf807754c21128a9cd89c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/core_types.dart: FileTooLong \u2014 838 significant lines (blank, comment-only and punctuation-only lines excluded), about 100% of them inside a single declaration: CoreTypes (12-1275). The bar is 500 significant lines; this is 338 over it, 1.68\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/core_types.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8259d20bc9cdbd89ab11b53c2a83ffa16d62a6942e2ed50775c000a1e3fa10da"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/macho.dart: FileTooLong \u2014 837 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 337 over it, 1.67\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_stack_traces/lib/src/macho.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd1057ec35eb6d97e5a04ab581a0ff7608a0b76a7cf02bb47fedebc37b370131"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: serialize/printer.dart: FileTooLong \u2014 836 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 336 over it, 1.67\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/printer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"587f92ea55fea283327c5f52d7a798718cd4636559001708001fa6b1bfb5db59"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: io/secure_socket.dart: FileTooLong \u2014 835 significant lines (blank, comment-only and punctuation-only lines excluded), about 62% of them inside a single declaration: _RawSecureSocket (541-1299). The bar is 500 significant lines; this is 335 over it, 1.67\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/secure_socket.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde44ec00a9bd10d5923e4e81e7c50cf04771e7bd198d2d767cd7657694655de"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ModifyParameters.apply: MethodTooLong \u2014 apply runs 167 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 67 over it, 1.67\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/modify_parameters.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd87dd041fcf7e283596c3aac8ba219b1513b2fcd9e97c045e699aefddd9c5db"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AnalysisServer: ClassTooLong \u2014 667 significant lines (blank, comment-only and punctuation-only lines excluded), 62 methods. The bar is 400 significant lines; this is 267 over it, 1.67\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":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd86347f4a2eb21f32694fb571f610a09cec8618d65365986d11e28d33b24dd7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ElementDisplayStringBuilder: TooManyMethods \u2014 50 methods. The bar is 30 methods; this is 20 over it, 1.67\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":"pkg/analyzer/lib/src/dart/element/display_string_builder.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7cba42b0c444f2857d82046b6c397ac14a485f6e0480d5e94c9a422fecca069"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AstBinaryFlags: TooManyMethods \u2014 50 methods. The bar is 30 methods; this is 20 over it, 1.67\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":"pkg/analyzer/lib/src/summary2/ast_binary_flags.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2475b9753b46c556c9343daad4999daf596552c9b7bde2197af7bb1fdaf052"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _DartNavigationComputerVisitor: TooManyMethods \u2014 50 methods. The bar is 30 methods; this is 20 over it, 1.67\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":"pkg/analyzer_plugin/lib/src/utilities/navigation/navigation_dart.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb6748d8d6b807a66493697ce728cb92c3e8d52b4a6950324bfae8e532545d0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KernelSourceInformationBuilder: TooManyMethods \u2014 50 methods. The bar is 30 methods; this is 20 over it, 1.67\u00D7 the bar. Most of these members implement src.SourceInformationBuilder (40 of 50 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/kernel_source_information.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"c780a8196c75fe1b0c5e9171b937ac84edc8f51a08e822b594e8cb54a681e0b0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _Utils: TooManyMethods \u2014 50 methods. The bar is 30 methods; this is 20 over it, 1.67\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":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4bb3fdea75210fc0e36cf171c5d78c013c64d2ca85c04e53287171225112138"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: agnostic/change_method_signature.dart: FileTooLong \u2014 833 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 333 over it, 1.67\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f82d5e5a1f70184525dd137fdd1a934e13e909b8db91f020cc35e71b301be5"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TokenType: ClassTooLong \u2014 665 significant lines (blank, comment-only and punctuation-only lines excluded), 17 methods. The bar is 400 significant lines; this is 265 over it, 1.66\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":"pkg/_fe_analyzer_shared/lib/src/scanner/token.dart"},"region":{"startLine":1575}}}],"partialFingerprints":{"codehealthFindingId/v1":"d30dfde52bbfcd3e1be4304a480980889a1a023708be6b5c73c9d723dcfc7ccf"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TokenType: ClassTooLong \u2014 665 significant lines (blank, comment-only and punctuation-only lines excluded), 17 methods. The bar is 400 significant lines; this is 265 over it, 1.66\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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/token.dart"},"region":{"startLine":1826}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92301260cd33f12e4ec046ba0f1f53035b18560557edf247bad9d42704bacb2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: testing/id_testing.dart: FileTooLong \u2014 831 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 331 over it, 1.66\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":"pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"54454c6a0d433126c18ba4a78a2cf554b367d97b7882c7ee9d46bab8af57f9c4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Driver.start: MethodTooLong \u2014 start runs 166 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 66 over it, 1.66\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8c82f6a1ca01f92b62f6292555badbced6d4c07b1eb69d95dc69b2b502e8f57"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Driver.createArgParser: MethodTooLong \u2014 createArgParser runs 166 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 66 over it, 1.66\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"553e820cacbf1f7a3a4128fd183cec398ef4ba3d76ba0b837dc6add37c9cad73"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/matching_cache.dart: FileTooLong \u2014 825 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 325 over it, 1.65\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_cache.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9220df028bb46ced4c6b8db551100c6b7d1349bdc0d5b07ef0994bc38851062b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ConstantCreator.visitInstantiationConstant: MethodTooLong \u2014 visitInstantiationConstant runs 165 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 65 over it, 1.65\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":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1343}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c48ee00877bb64d27bdc401ffbe9510be8bfee82ff92a4513966c0c92592536"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BulkFixProcessor: ClassTooLong \u2014 659 significant lines (blank, comment-only and punctuation-only lines excluded), 32 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":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"345e63793b7721fe3c171094b0bce16cbb3c7dc5dd0379efe486fa6e4f48baea"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/htmldartgenerator.py: FileTooLong \u2014 821 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 321 over it, 1.64\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":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7fee61fba1b14951db7cc5f2fe7126898bde50e563b809802b1f0a56e6696eb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: universe/use.dart: FileTooLong \u2014 820 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 320 over it, 1.64\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":"pkg/compiler/lib/src/universe/use.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82624b930f022e362b68317db29071b641e75d97947d6a223d152437c7ea38a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompilerOptions.parse: MethodTooLong \u2014 parse 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":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3caeb1a422a24fa7f475730cb9b8aca6699392bd864c4e632dd511e9c6aeb76"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnalyzeCommand.run: MethodTooLong \u2014 run 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":"pkg/dartdev/lib/src/commands/analyze.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaa506216760b93200028ac8d4971515afad15f7f45c29445274f60f8c13f112"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: OutlineBuilder.endPrimaryConstructor: MethodTooLong \u2014 endPrimaryConstructor 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":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1794}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad6543a308c4f69898991251d6a9d7a9ff7a7120f64f0d9d8f7785f00591fca9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VmServiceApi.generate: MethodTooLong \u2014 generate 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":"pkg/vm_service/tool/dart/generate_dart_client.dart"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ad457fd85d6733a2ec345adc37e4f1c499f2407824d3945680e5cda3dd0c73c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/assignment_expression_resolver.dart: FileTooLong \u2014 819 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: AssignmentExpressionResolver (22-1031). The bar is 500 significant lines; this is 319 over it, 1.64\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae2ff25901a0f2dcae062ce1b1dcd0434217a1543ce1d1253c68fe98eef75feb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/types.dart: FileTooLong \u2014 819 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: Types (18-1276). The bar is 500 significant lines; this is 319 over it, 1.64\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/types.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6191edc8045e5c5940fcd4271a8741beb6316c15e538d875f4aa3645cadf0f42"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: JsUtilOptimizer: ClassTooLong \u2014 655 significant lines (blank, comment-only and punctuation-only lines excluded), 32 methods. The bar is 400 significant lines; this is 255 over it, 1.64\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":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea445c80489d7182c53f9cbc4b44d8fd373d814d180cb201f3aea984e7f1204"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/state_machine.dart: FileTooLong \u2014 818 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 318 over it, 1.64\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":"pkg/dart2wasm/lib/state_machine.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"83c22c3a5245e13e6ff08798c2a28df467f636a53e3b1d509af113fb7c878df1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/legacy_analysis_server.dart: FileTooLong \u2014 817 significant lines (blank, comment-only and punctuation-only lines excluded), about 76% of them inside a single declaration: LegacyAnalysisServer (192-1324). The bar is 500 significant lines; this is 317 over it, 1.63\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"88b2570fdd7c896a6a7ef339ca32878fa05d20b52af589cee2349ef3c3b853c5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: constants/values.dart: FileTooLong \u2014 817 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 317 over it, 1.63\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":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"891cd056dd92dd2bbf7d635d612cf15656ebe5a56f4b146746ab73cd5b32a6f4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LegacyAnalysisServer: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"d95dc10efd65bf309d53973724fb55fc836cfc941e13438cd56cced0809097fb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LibraryFragmentImpl: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":7664}}}],"partialFingerprints":{"codehealthFindingId/v1":"a69402682758108d1b02ae4461fc83e4e09e07550cbb23cee3a539a83c544138"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ElementBindingVisitor: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa9fc57211143de6882009fa1051d334724cbd2743fb22022e6c59643a5fb51"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ElementUsageDetectorV2: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc8e64a7532ad70e632b285ce050d3d0493e30ccc60cb0dcac74fe909607b50"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartFileEditBuilderImpl: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1789}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6c816c3206f0f9de6c4b7b3d46156e9a7b42bd103a401f319dbdf5544f74aa"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DateTime: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/date_patch.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf03b7791193670395e41b37a3ddf2b0ac77050ff19cdc85302b89ffa7e9838"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _Future: TooManyMethods \u2014 49 methods. The bar is 30 methods; this is 19 over it, 1.63\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/future_impl.dart"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"45543dc6157d5769217600ba2867018723b41b6f6861167fbf1b923557cc5879"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SsaCodeGenerator.visitLoopInfo: MethodTooLong \u2014 visitLoopInfo runs 163 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 63 over it, 1.63\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":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1046}}}],"partialFingerprints":{"codehealthFindingId/v1":"14062ad89497cce2fdcf8389db9b555655bde7a210b355d1da2f32e90fa1ab93"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl._computeBinaryExpression: MethodTooLong \u2014 _computeBinaryExpression runs 163 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 63 over it, 1.63\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7651}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4080af2f7cfaedbc7553c9c079de2b847d32d4ae5915f8e54f14d9516c50fb2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase.inferPropertySet: MethodTooLong \u2014 inferPropertySet runs 163 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 63 over it, 1.63\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":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":4595}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1f03bd953bdc707bbcd759089f2687795f227bfde95b9e7e8bec91b2a690455"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ffi/definitions.dart: FileTooLong \u2014 813 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: _FfiDefinitionTransformer (105-1213). The bar is 500 significant lines; this is 313 over it, 1.63\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d601f8835207d87f46b8ca1630f5a0e078c833380efa2b57afff500e807dfcb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Driver: ClassTooLong \u2014 648 significant lines (blank, comment-only and punctuation-only lines excluded), 13 methods. The bar is 400 significant lines; this is 248 over it, 1.62\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":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"235cbbe2a765e307294f06a2042155ef667506501864024a7c139aabff28080d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RelevanceComputer.computeRelevance: MethodTooLong \u2014 computeRelevance runs 162 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 62 over it, 1.62\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/relevance_computer.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"860fed9aecbfe3532508b311da9505e344887db4b7e7afe6670dc10acbc16268"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AstRewriter.parsedExpression: MethodTooLong \u2014 parsedExpression runs 162 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 62 over it, 1.62\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"77a3f783e5653370709606becefa637f54533e42f2f890093aa210914f292b23"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelSsaGraphBuilder._doTryInlineMethod: MethodTooLong \u2014 _doTryInlineMethod runs 162 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 62 over it, 1.62\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7879}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4fc28df0d39d490810db0961f8340bde2e4e15d1d208425890d9c252fed555f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MatchingExpressionVisitor.visitListPattern: MethodTooLong \u2014 visitListPattern runs 162 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 62 over it, 1.62\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa493b9aad94aed9787769b52136037a9b414b9254e9cd26a60e9554933bff14"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary/generate.dart: FileTooLong \u2014 808 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 308 over it, 1.62\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1be40e3f3e2b167bd2343a2f10adf612a058027f6558389f2efefdc5dac9394"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary2/bundle_writer.dart: FileTooLong \u2014 807 significant lines (blank, comment-only and punctuation-only lines excluded), about 69% of them inside a single declaration: BundleWriter (28-919). The bar is 500 significant lines; this is 307 over it, 1.61\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"48458128601458cd05ada2da51b6f1c32b769c175f97c2e59fad24029c4cdd13"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/isolate_manager.dart: FileTooLong \u2014 807 significant lines (blank, comment-only and punctuation-only lines excluded), about 72% of them inside a single declaration: IsolateManager (29-1312). The bar is 500 significant lines; this is 307 over it, 1.61\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc89432b94c3fb7a43a30862818d965c8f9ede99464022adb913fd604427cfe"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/compact_hash.dart: FileTooLong \u2014 807 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 307 over it, 1.61\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"265f1964be194b4a584795fbffdd2eaeb430ad4bd4f879626a2f6f8c59d3757b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/constants.dart: FileTooLong \u2014 806 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 306 over it, 1.61\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c61cfe2d2ed4d3aafa9d5e4422e39a8822e5ce42f579514c5bee81e2862078f3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/local_vars.dart: FileTooLong \u2014 805 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 305 over it, 1.61\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/local_vars.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b98a375d68d9169f0764664d6c4c313f8053063a6d12e903f0a4fc92dcee352"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: io/file_impl.dart: FileTooLong \u2014 805 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 305 over it, 1.61\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a23ce9719de7ca980f5cd7aa841fea930356f8a655b05e9dfc3d03afcd503418"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ResolvedCorrectionProducer.inferUndefinedExpressionType: MethodTooLong \u2014 inferUndefinedExpressionType runs 161 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 61 over it, 1.61\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":"pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2c5017d5ecdcb7f1297d289f935e3a046515e7a420a8c89f785373e004a16d4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LateLowering._computeBackingInstanceField: MethodTooLong \u2014 _computeBackingInstanceField runs 161 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 61 over it, 1.61\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":"pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"45411fc269b0e1d718fbfb964289f5be5320634b9c1cbe3f1cc49724c6d8948d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Resolver._finishFunction: MethodTooLong \u2014 _finishFunction runs 161 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 61 over it, 1.61\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":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":1413}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb7775c9befc49ad95a967ba43e0b00ba3fa2a823f6c52c920316f74e5b1b986"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitObjectPattern: MethodTooLong \u2014 visitObjectPattern runs 161 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 61 over it, 1.61\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12652}}}],"partialFingerprints":{"codehealthFindingId/v1":"d31c37b04fc3f1a6ed1b0249b3f650eabf760acb41f9a1b5d4ed52fa61e3f8b9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: _wasm/wasm_types.dart: FileTooLong \u2014 802 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 302 over it, 1.60\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_wasm/wasm_types.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a62d345bb0405127651d531e14c7d3f1071e00bc5aff5f8594b0f1841fe7559b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: typemasks/masks.dart: FileTooLong \u2014 801 significant lines (blank, comment-only and punctuation-only lines excluded), about 90% of them inside a single declaration: CommonMasks (46-1217). The bar is 500 significant lines; this is 301 over it, 1.60\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d58007e0c198e87fba2c3a23dbfa2c5c2d9ffda0d679edf4a1287d50717215"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ElementAnnotationImpl: TooManyMethods \u2014 48 methods. The bar is 30 methods; this is 18 over it, 1.60\u00D7 the bar. Most of these members implement dart.ElementAnnotation (38 of 48 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":1586}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ae3ab51ef95540961aff47abd01e5b5b70537870166b155646af17f02bdd46d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PropertyElementResolver: TooManyMethods \u2014 48 methods. The bar is 30 methods; this is 18 over it, 1.60\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":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b68146a9d26c0199f79aeda4ef52a447194792ec35c94d7cd5150d3642a97a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: I32x4: TooManyMethods \u2014 48 methods. The bar is 30 methods; this is 18 over it, 1.60\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":"sdk/lib/_internal/wasm/common/simd.dart"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"6460c73f284bc2f39e421143f90d6490ad09d51e8b6c84125ca3ba62e9076821"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Stream: TooManyMethods \u2014 48 methods. The bar is 30 methods; this is 18 over it, 1.60\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":"sdk/lib/async/stream.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff0e5befb982a61b75dd57250a03c0745bc3912f1c867892aa4f728de89f883d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CssClassSetImpl: TooManyMethods \u2014 48 methods. The bar is 30 methods; this is 18 over it, 1.60\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":"sdk/lib/html/html_common/css_class_set.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"3103cd968d4eb92a2a16c26c5b7d1f4669d95a112833efdf2eb38f1c43bddb03"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_model/elements.dart: FileTooLong \u2014 800 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 300 over it, 1.60\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"803588778b77a7b7f03b4e3d59d60419fe417d73d46eca1a2dae9ee8e1f9be17"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartDevelopmentServiceClient._registerJsonRpcMethods: MethodTooLong \u2014 _registerJsonRpcMethods runs 160 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 60 over it, 1.60\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":"pkg/dds/lib/src/client.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"043d36e460325978e896d3a5b2b642620bd0e3091321e3db761ff11fc473c026"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Sort._dualPivotQuicksort: MethodTooLong \u2014 _dualPivotQuicksort runs 160 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 60 over it, 1.60\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":"sdk/lib/internal/sort.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"277c2451b5f908a1d481cfe8752b04926eb2544fa6875badf5e8bdc91779512b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CommonElements: ClassTooLong \u2014 639 significant lines (blank, comment-only and punctuation-only lines excluded), 145 methods. The bar is 400 significant lines; this is 239 over it, 1.60\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":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"3533f15260640c16c3de5b8c1327918910756ed1f784d7d942fa26c05ea5b5b6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Writer: ClassTooLong \u2014 638 significant lines (blank, comment-only and punctuation-only lines excluded), 23 methods. The bar is 400 significant lines; this is 238 over it, 1.60\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":"pkg/_fe_analyzer_shared/lib/src/testing/metadata_helper.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"81e12f24a325a6b673871c2b142e68fe0c4ef37759d326b50f536142900c7266"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/dev_handler.dart: FileTooLong \u2014 797 significant lines (blank, comment-only and punctuation-only lines excluded), about 91% of them inside a single declaration: DevHandler (62-1188). The bar is 500 significant lines; this is 297 over it, 1.59\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/handlers/dev_handler.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"145c992abbefaa701f7ac79fdde40ff0f3f44d174060837542220988db10a9f7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _ConstructorInvocationEvaluator: ClassTooLong \u2014 636 significant lines (blank, comment-only and punctuation-only lines excluded), 18 methods. The bar is 400 significant lines; this is 236 over it, 1.59\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":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2938}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7f0e8e0af76a850a84790ba6f486581fc66ae3d8072d7f67c90525a40f363df"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/source_extension_type_declaration_builder.dart: FileTooLong \u2014 795 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: SourceExtensionTypeDeclarationBuilder (46-1097). The bar is 500 significant lines; this is 295 over it, 1.59\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7278e00253ec83e70cb8cad26712b0387ad2535cb4e0e085a0698c07113b26"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_common/js_interop_patch.dart: FileTooLong \u2014 795 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 295 over it, 1.59\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_interop_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"243d8db8320be13df1e06fcc89f51c1f6eb62ec54f27323d502bb796de40ef48"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/configuration.dart: FileTooLong \u2014 794 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 294 over it, 1.59\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ed4b118f7e33d8c5115338f59da7699833ac454febc545b697658a7fd84612b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ClosureLayouter: ClassTooLong \u2014 634 significant lines (blank, comment-only and punctuation-only lines excluded), 34 methods. The bar is 400 significant lines; this is 234 over it, 1.59\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":"pkg/dart2wasm/lib/closures.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"48b45f212715b5c3b62d1cad93ea956f1d7f96167202b4adad499f9d4ad3a4fb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_flow/summary.dart: FileTooLong \u2014 792 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 292 over it, 1.58\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc004a1df71b262b1c80cd12dc097813ff88b893c228605d1adf3cc9cca1551c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/type_inference_engine.dart: FileTooLong \u2014 791 significant lines (blank, comment-only and punctuation-only lines excluded), about 63% of them inside a single declaration: OperationsCfe (461-1228). The bar is 500 significant lines; this is 291 over it, 1.58\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d461fa112c1edd01a15d2337b29e7efe9b07089b1ada17f02ccde5e64e8669"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ClassMembersNodeBuilder: ClassTooLong \u2014 632 significant lines (blank, comment-only and punctuation-only lines excluded), 15 methods. The bar is 400 significant lines; this is 232 over it, 1.58\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":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a136bc7453516fc790513031fc5aa18f9fa7af352a92b0035195c39ce9b54c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: app/page.dart: FileTooLong \u2014 790 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 290 over it, 1.58\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/app/page.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"473a674213a6be67ea50471497c304b0c0836d44f14f1c210636e94b65333d8c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeCreator._createNodeFromKind: MethodTooLong \u2014 _createNodeFromKind 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":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":2297}}}],"partialFingerprints":{"codehealthFindingId/v1":"0778feb654a2590deb734e3907cce324e06f71e9f146f3e65d4f49ea17808d9a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/check_helper.dart: FileTooLong \u2014 785 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 285 over it, 1.57\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":"pkg/front_end/lib/src/source/check_helper.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bbbb321331f510be1fa8ea78183cd64d0db6a532279d93f7b4b63d02f4e6ed6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ClosureLayouter._createRepresentation: MethodTooLong \u2014 _createRepresentation 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":"pkg/dart2wasm/lib/closures.dart"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f0a6256ce5622174af7b778a0acf5364796fc21dfd6d037bb3581031e72d701"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Dart2JSBackend: TooManyMethods \u2014 47 methods. The bar is 30 methods; this is 17 over it, 1.57\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":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"728d7c4deb7d3e9711fa1204171bc30e88d31d2f3a39bea590f0e56fd13a4107"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: IsolateManager: TooManyMethods \u2014 47 methods. The bar is 30 methods; this is 17 over it, 1.57\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":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b5b2ed26c4f74ed35077ef38f94dfd97f77a158216299b0c58b3e34729610e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LocalVariables: TooManyMethods \u2014 47 methods. The bar is 30 methods; this is 17 over it, 1.57\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":"pkg/dart2bytecode/lib/local_vars.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"b86007a816051ab09be0ec6c0f90230624e39eda501f63b84605029e2075224c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceConstructorBuilder: TooManyMethods \u2014 47 methods. The bar is 30 methods; this is 17 over it, 1.57\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":"pkg/front_end/lib/src/source/source_constructor_builder.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"e715b62a748f3210e22290a56912b64c978464b18632bc9e63650e821ade9563"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _RawSecureSocket: TooManyMethods \u2014 47 methods. The bar is 30 methods; this is 17 over it, 1.57\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":"sdk/lib/io/secure_socket.dart"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ff3e73510ced4fe92b4be3fe90f8d75cd504c60e6a184e3f21bff75ab5eb014"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DevToolsServer: ClassTooLong \u2014 625 significant lines (blank, comment-only and punctuation-only lines excluded), 17 methods. The bar is 400 significant lines; this is 225 over it, 1.56\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":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"086d834cd9048539d7cca22574cfe44a414bedb52c73fa671465c58217cacbb2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitListPattern: MethodTooLong \u2014 visitListPattern runs 156 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 56 over it, 1.56\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12422}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbae113604b42f03c0ff2134285f912f92a926aead99f333d4dd30c5e3d39081"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/bounds_checks.dart: FileTooLong \u2014 778 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 278 over it, 1.56\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":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b92ace461292b20c28e41337519f2a321843270f7a0b6557546e9a98bbca00"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_model/env.dart: FileTooLong \u2014 777 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 277 over it, 1.55\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb3b2233417056216722aa5f013040425776380a5a13758830436336e572bde"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ConvertToDeclaringParameter.compute: MethodTooLong \u2014 compute runs 155 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\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":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_declaring_parameter.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b82e1a47799a6d32ec4a50a3a2bac5eff812e3bd74f8339ff9d8e7fe53d6209"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ContextsPage.generateContent: MethodTooLong \u2014 generateContent runs 155 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\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":"pkg/analysis_server/lib/src/status/pages/contexts_page.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"3769badd064531c25d155ac3ae3c16a6f540b6a47ea4e8eb7282b4fd3a1fa111"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InheritanceManager3._getInterfaceExtensionType: MethodTooLong \u2014 _getInterfaceExtensionType runs 155 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\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":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"fae08505d4c3e440834b984100a54c189042365a1cbf069300253ddb4c808565"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _InitializerBuilder._createImplicitSuperInitializer: MethodTooLong \u2014 _createImplicitSuperInitializer runs 155 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\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":"pkg/front_end/lib/src/kernel/resolver_helpers.dart"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"830724d6120330e138e700590a52684bf02168737f9aa48adfa677b0edf5fa00"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _PropertyPreBuilder.absorbFragment: MethodTooLong \u2014 absorbFragment runs 155 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 55 over it, 1.55\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":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2179}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde58e5ef462ac0a34d6fdc2e52dfe724a12eda6c56d54753bf932b592305439"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LspAnalysisServer: ClassTooLong \u2014 619 significant lines (blank, comment-only and punctuation-only lines excluded), 57 methods. The bar is 400 significant lines; this is 219 over it, 1.55\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":"pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"32eae8afc04424a5ecc87b4f65183cbe909c40cb6b49c0d06fb3a2f1d02d4e2b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LegacyAnalysisServer: ClassTooLong \u2014 619 significant lines (blank, comment-only and punctuation-only lines excluded), 49 methods. The bar is 400 significant lines; this is 219 over it, 1.55\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":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"59bf7f3db39139a1e4ec4b805b5716a067dab343a567ad6f2102adf7e4bdf061"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analysis/library_analyzer.dart: FileTooLong \u2014 773 significant lines (blank, comment-only and punctuation-only lines excluded), about 89% of them inside a single declaration: LibraryAnalyzer (75-1102). The bar is 500 significant lines; this is 273 over it, 1.55\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e11e0c79162667e91dfc27e179f7986037028c4b8d7ba3484b67c0a74f62ef40"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/textual_outline.dart: FileTooLong \u2014 773 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 273 over it, 1.55\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/textual_outline.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"01960ce3eccc14638f07de72ab808a303d55a8eb27370c3ab9b9f83e477934b2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: error/inheritance_override.dart: FileTooLong \u2014 771 significant lines (blank, comment-only and punctuation-only lines excluded), about 74% of them inside a single declaration: _ClassVerifier (252-1169). The bar is 500 significant lines; this is 271 over it, 1.54\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e1229f0d310b29c8d959b417f8e95e576a55287d4a30d459edb2b3551fb819d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _Collector.collect: MethodTooLong \u2014 collect runs 154 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 54 over it, 1.54\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"9efed50324400e909b18c556905128c14df6772b1e3ef5669c6025bbd4a959d7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fasta/doc_comment_builder.dart: FileTooLong \u2014 769 significant lines (blank, comment-only and punctuation-only lines excluded), about 63% of them inside a single declaration: DocCommentBuilder (118-858). The bar is 500 significant lines; this is 269 over it, 1.54\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ff0e71c3fac75af423a9473b06e52123d6c367a5f37171b63f572fbb39dcd1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: internal/internal.dart: FileTooLong \u2014 768 significant lines (blank, comment-only and punctuation-only lines excluded), about 63% of them inside a single declaration: SystemHash (178-732). The bar is 500 significant lines; this is 268 over it, 1.54\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e425be3a93d433e4a1a8fed9438ce403c95c97a02d7dcf83a69195a0cffa63d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/element_binding_visitor.dart: FileTooLong \u2014 767 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: ElementBindingVisitor (12-1075). The bar is 500 significant lines; this is 267 over it, 1.53\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"02419226ad793ee0695b6ae7ff9d0e53875a8b3ff0c9fed704d82c3552cf3b8c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartiumBackend: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"f814632c4af4becfacf604c9ac2004aab7ee4bb3a66884c39660f7d5cbc28f87"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JsElementEnvironment: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2392}}}],"partialFingerprints":{"codehealthFindingId/v1":"db1085616bb17400e75ca6aacca95cdc0ff49cd6a9ffb4d25c17af616b241380"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Selector: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/selector.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d2301c811889636d64e37262bb07ddd283d3b0c6a14f13079055393ade813e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _Allocator: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/local_vars.dart"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4e685ef67e60dd91c3f6c86f072d5d2a8f2ff6fc18390f81df8cc7929b3d4f2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: EnumElementDeclaration: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8b792547646b1ab2261fab8b7b4b1b7db345b12074e4a7bfe2c3e517f507785"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourcePropertyBuilder: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_property_builder.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4bee9e5855a341cd5568b813d2a6f568474fc030b3c02f5f23d12d89a525573"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: C: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/non_covariant_checks.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"364702294e4d3fd1eb49cdf29b3b935a461760b11719697ac7c4e8b488a0be70"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Procedure: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/members.dart"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"84964e630df3b0bacf46384ca6680ae943920ea688073f0fb52f8024b2769a15"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ScriptInsetElement: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b815dc08b37848169136169c898f16b4435029841ce5b09e5a3cb4840f29604"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SetBase: TooManyMethods \u2014 46 methods. The bar is 30 methods; this is 16 over it, 1.53\u00D7 the bar. Most of these members implement core.Iterable (31 of 46 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/set.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda10d534339a7f416411358cf72840d6a48ccd57d3d8263553f85ab488c737a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: universe/codegen_world_builder.dart: FileTooLong \u2014 766 significant lines (blank, comment-only and punctuation-only lines excluded), about 65% of them inside a single declaration: CodegenWorldBuilder (104-900). The bar is 500 significant lines; this is 266 over it, 1.53\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"af4f1507db0bf976a7020bee401f2dac63656d6c7a79184fcb3d122eca8389a6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnnotationsListener.endBinaryExpression: MethodTooLong \u2014 endBinaryExpression runs 153 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 53 over it, 1.53\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"93916e265e0599fff5429b3c135d0500c5a65049c9131e2e4854c141b8348df4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DevToolsServer.buildArgParser: MethodTooLong \u2014 buildArgParser runs 153 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 53 over it, 1.53\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a2dc8ece11b5e1aa1258d4d912521eff7762bb61d29e4901ad5af24c3434d9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceExtensionTypeDeclarationBuilder.build: MethodTooLong \u2014 build runs 153 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 53 over it, 1.53\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfea1fb1fed57fc6898fd079574afd6708a1d390936349624b18c527b206d7c2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/generate.dart: FileTooLong \u2014 763 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 263 over it, 1.53\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":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"65d4a09863a19176329c0f75fc594e3ecd0ae4753a6a2ae5a264ad02c271f5a6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/idlnode.py: FileTooLong \u2014 762 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 262 over it, 1.52\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"57a81934616d4ab644d153f1bd146a32c9221d5d58430b6b8f3529bd22e0917d"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _ContextTypeVisitor: ClassTooLong \u2014 608 significant lines (blank, comment-only and punctuation-only lines excluded), 76 methods. The bar is 400 significant lines; this is 208 over it, 1.52\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":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"29ad915a8a25d834db2f9f5445c1e860769ecde8b78cd871740ab9ce1a0b9240"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DevToolsServer.buildArgParser: MethodTooLong \u2014 buildArgParser 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":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"956193dd688a2937014a660b23af4a6955c9aef10124cb665261a5d8a9f4f104"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelTarget.buildOutlines: MethodTooLong \u2014 buildOutlines 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":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"627372be21e14acd66a46a7df23ab8a8d63b2fe0844690bf4dca758c183e7cc4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _IRInterpreter.run: MethodTooLong \u2014 run runs 151 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 51 over it, 1.51\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/interpreter.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"03634936a2dc5fdbd904b08a4c2fe3d318a0e89e35ebb979e4ae0940de3c72ba"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeCreator._generateBodies: MethodTooLong \u2014 _generateBodies runs 151 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 51 over it, 1.51\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf7898edec17f04f2e3f467fc0434129a60d2fead344d46d67180ab08cca046"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SubtypeTestCacheStub._generate: MethodTooLong \u2014 _generate runs 151 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 51 over it, 1.51\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stub_code_generator.dart"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"64965fae9a4148fefddcbbccb8af8bee31382554781a4dda57c4ebc80c61cc79"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: UnusedLocalElementsVerifier: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"13813ed788ee4812899ac1d71d1ecc60ed4367db13a491b8cafce6d5aba547ca"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: OptimizationTestLog: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"pkg/compiler/lib/src/ssa/logging.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe97cddbc183754ecbc5bee0fb55d83cc3e676a92ea1b712763c1c9bcebec0c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SideEffects: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"pkg/compiler/lib/src/universe/side_effects.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"b75c5ba8bd6a5df572144ce518aa3cf829184b1a6c477d370af05f0f7501be28"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceCompilationUnit: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"pkg/front_end/lib/src/builder/compilation_unit.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"99e86a70513bf5a7def0a2549e6adb6f6a8fb31e54eaed64eaba79489db05083"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Library: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"pkg/kernel/lib/src/ast/libraries.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"8761e931554ce1a13c3d6c7eef32504df513bf74fb28014380871f13f33f6717"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CodeGenerator: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"pkg/native_compiler/lib/back_end/code_generator.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a2991ab9e0b43fa9b02176d5d451555d2cb7ee3ffdee6db3d55200d41761b2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ServiceObject: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8031b044a3fe65861a412c31d660eaa2d4954271f6cf4ac449f386dcf0344c9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _HttpHeaders: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"04e510e215ded6ece9f6e8a901b9e4f605bb2bd4db3395a04202be65d9233542"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Rti: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"64e2506ea0b68fa69ff88e1b2e1d277d00c2438974c1f1427308dd1fc64d3148"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ClassMirror: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a6e02f9c8a2ba03f700873362bfd8150a8754a071246c31e41b1d37d0d484f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ByteDataBase: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96ef1b0a13d7cc22881b9c9f8708d9c9a032cf8657220357492ce4379744957"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Int32x4: TooManyMethods \u2014 45 methods. The bar is 30 methods; this is 15 over it, 1.50\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":"sdk/lib/typed_data/typed_data.dart"},"region":{"startLine":4342}}}],"partialFingerprints":{"codehealthFindingId/v1":"227c84956770c137580f1d47104c7546b27405c786d1c848d4ff3ca5e99e9661"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartCodeActionsProducer.getRefactorActions: MethodTooLong \u2014 getRefactorActions runs 150 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 50 over it, 1.50\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/dart.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e469bf8d740d396a5196a0b46bf03764040338258371ffde6682a72c223b7c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferrerEngine._runOverAllElements: MethodTooLong \u2014 _runOverAllElements runs 150 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 50 over it, 1.50\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca559e2d9b370fa5445bc65fdff84c0c56fe6124ab48d4216924d6fe2d9f734a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FragmentEmitter.emitInstallTearOffs: MethodTooLong \u2014 emitInstallTearOffs runs 150 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 50 over it, 1.50\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1422}}}],"partialFingerprints":{"codehealthFindingId/v1":"28cadd51598ae84b2ec2b2b8f083b25e69d3b32e82fd7ff8aa02a1ef5f22bffe"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Resolver.buildSingleExpression: MethodTooLong \u2014 buildSingleExpression runs 150 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 50 over it, 1.50\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ecb4637ba14cb81f72c0b44e368ec02f86c8c35898c956c4bee3d07c96e4f47"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: OutlineBuilder.endMethod: MethodTooLong \u2014 endMethod runs 150 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 50 over it, 1.50\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2373}}}],"partialFingerprints":{"codehealthFindingId/v1":"42571d9af0812cd0593c89f36536a0d11adb0db0b18472b5a7cbff381a44d5ae"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IncrementalJavaScriptBundler.compile: MethodTooLong \u2014 compile runs 150 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 50 over it, 1.50\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/javascript_bundle.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"bba82e88a545e37a0d6dcb2b5880ebfc0f7c7568320294d4386199b62585e55a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lsp/lsp_analysis_server.dart: FileTooLong \u2014 748 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: LspAnalysisServer (55-1201). The bar is 500 significant lines; this is 248 over it, 1.50\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a928c593a2e131410016811496a70333a3675ce9415579a1d648086fea2216f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CompletionQualityMetricsComputer: ClassTooLong \u2014 597 significant lines (blank, comment-only and punctuation-only lines excluded), 30 methods. The bar is 400 significant lines; this is 197 over it, 1.49\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":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d7a9f28e4d4a4c370a0f6342d7f9b0a6cb76a22788a34286434e58b1001625"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/js_interop_checks.dart: FileTooLong \u2014 745 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: JsInteropChecks (26-1160). The bar is 500 significant lines; this is 245 over it, 1.49\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"92a6321bac66bc13d056ec2209562c21e693c480d83c1132d287b10afb6469ea"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: command/command.dart: FileTooLong \u2014 745 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 245 over it, 1.49\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f73edd133cf226e41c575d2d844352d84b877c698982bea3fbb2859d78d17c40"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AssignmentExpressionResolver.resolveDirect: MethodTooLong \u2014 resolveDirect runs 149 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\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":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"22e9747716762ac79ddd566372b0005d355e3e9106d3493976367bcb1dd44496"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NamedTypeResolver.resolveConstructorTypeReference: MethodTooLong \u2014 resolveConstructorTypeReference runs 149 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\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":"pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbf4007280b369a1b966881e216fddc8f4a2dd2d3fe00a7188359abd6f63e5f9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Simplification.visitBinaryIntOp: MethodTooLong \u2014 visitBinaryIntOp runs 149 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\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":"pkg/cfg/lib/passes/simplification.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e62cf08bc21215dbc5ded27cb04819afaf836669ebcbb2f51e7f289d04fb6bb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IncrementalCompiler._initializeExperimentalInvalidation: MethodTooLong \u2014 _initializeExperimentalInvalidation runs 149 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\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":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"881fe5d41b75f5cb284b683018672b1365bb637da79237b0d888868311851c02"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ForwardingNode._createForwardingImplIfNeeded: MethodTooLong \u2014 _createForwardingImplIfNeeded runs 149 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\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":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5736d72d4b1752400726fd8c107255774d7ec4f80ad0005fe7a42f73392b18e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _Tuple.sanitize: MethodTooLong \u2014 sanitize runs 149 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\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":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1503}}}],"partialFingerprints":{"codehealthFindingId/v1":"5efb878acd77c56c247fd7ed2aa3b4c686c7e11c3fb2fb99216c1526a5dad07f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitRecordLiteral: MethodTooLong \u2014 visitRecordLiteral runs 149 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 49 over it, 1.49\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":11054}}}],"partialFingerprints":{"codehealthFindingId/v1":"79d46a932394bb2f663bcd5f47d1c670a94a6adf6d3b8423b005dc9e311c77a2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FlutterConvertToStatefulWidget.compute: MethodTooLong \u2014 compute runs 148 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 48 over it, 1.48\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5027aa4ad72b798bfc12d271cbb2e9769d8d44704deec9163dbd5b570dd211b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExtensionTypeMembersNodeBuilder.build: MethodTooLong \u2014 build runs 148 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 48 over it, 1.48\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff30c1ee52038beb766ad14419960f96e27a62467396a55c5ffc95eec000932"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FlatTypeMask: ClassTooLong \u2014 590 significant lines (blank, comment-only and punctuation-only lines excluded), 61 methods. The bar is 400 significant lines; this is 190 over it, 1.48\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":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"12cdc0fbc60641f4bb47055c63c604ef6cc1618ed42cec608698851a8e27f8d6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ExtractMethodRefactoringImpl: ClassTooLong \u2014 590 significant lines (blank, comment-only and punctuation-only lines excluded), 35 methods. The bar is 400 significant lines; this is 190 over it, 1.48\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d011ba568cf1921ffaa7f09ee0bf9f174b1a324b1c5489ea6a4d947b26e9022"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ffi/native.dart: FileTooLong \u2014 737 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: FfiNativeTransformer (51-1166). The bar is 500 significant lines; this is 237 over it, 1.47\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/native.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"581f82a42a872664a0d9e31c716f3ea5ea7b97789c84405f9a0c47bc381c0367"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DataSinkWriter: ClassTooLong \u2014 589 significant lines (blank, comment-only and punctuation-only lines excluded), 117 methods. The bar is 400 significant lines; this is 189 over it, 1.47\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":"pkg/compiler/lib/src/serialization/sink.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d55466c808591dc114311e96822502d3d153bc428b59e0cc77a1ee6628ce008"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/options.dart: FileTooLong \u2014 734 significant lines (blank, comment-only and punctuation-only lines excluded), about 63% of them inside a single declaration: CompilerOptions (318-1196). The bar is 500 significant lines; this is 234 over it, 1.47\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbffa98f81400afae87896e42905e322ee369ccd5f011eaae8995deccaa2241e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ChromeAppInstanceHelper: ClassTooLong \u2014 587 significant lines (blank, comment-only and punctuation-only lines excluded), 30 methods. The bar is 400 significant lines; this is 187 over it, 1.47\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":"pkg/dwds/lib/src/debugging/instance.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd25d16aec4d916f9e878005413bb2a179b1c7052081b1af3b6bae41885e3484"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Link: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\u00D7 the bar. Most of these members implement core.Iterable (31 of 44 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"c24f407c2c3af2015c811b8f21743847e9f62b3357a24514fd811688b0edef19"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Link: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\u00D7 the bar. Most of these members implement core.Iterable (31 of 44 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f12843e629c2ce2e6c7f0a6133b900d258f0300a19267b7ee08948865301fd4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InstanceState: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":1626}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3e4623f946079707bc9393e93ed61cb50327c99475a0ad6692c6f50b7d1913"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SdkConstraintVerifier: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"pkg/analyzer/lib/src/hint/sdk_constraint_verifier.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b3ca59ff12e39c44d5432a3a820ace8971812af747fc858632440b209f9a53"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ServerPlugin: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"pkg/analyzer_plugin/lib/plugin/plugin.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"985eb54c64d47b00e5a2c7383d84b9e24472e411bd5718d06baf88ad5b4c0002"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StaticUse: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"pkg/compiler/lib/src/universe/use.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"dafcaadfe0511a7e79d45d98b6578fd61138b2b3398fafe033492edc30c1bc0a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AstPrinter: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"pkg/kernel/lib/src/printer.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee6081b7ae9116e9e85024bdb9151f55c252e9d6682cb6832011d40f2034f43"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NativeInt32x4: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1590}}}],"partialFingerprints":{"codehealthFindingId/v1":"1798c780e1de90ec5c8a4d5d07b55fdda7dfef85c62096ddf9fd986681353d0f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NativeInt32x4: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":1880}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0fb53297a36322deebfce96620f6f15e1635786e2475c18e49e2cb588a2166d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Zone: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"sdk/lib/async/zone.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9d7446c9938f6e6b2fb55968be014f58f7cd780031683d8400a5dbae6ace671"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DateTime: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"sdk/lib/core/date_time.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ffbc8d532e1995794745b31dd5182e1d0b9afff242b764a753acfabe30bab6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _SimpleUri: TooManyMethods \u2014 44 methods. The bar is 30 methods; this is 14 over it, 1.47\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":"sdk/lib/core/uri.dart"},"region":{"startLine":4589}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ca10c30ae2a7c8e13f74ac195b1a587b28e25c0ef1bb3f845ff67810cf6a07"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _StringBase: ClassTooLong \u2014 586 significant lines (blank, comment-only and punctuation-only lines excluded), 61 methods. The bar is 400 significant lines; this is 186 over it, 1.47\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":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"90d34b17c2678799d2a533a36853c546fa98dc66f1f62da9ea3599d5c735a156"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: tools/utils.py: FileTooLong \u2014 731 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 231 over it, 1.46\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":"tools/utils.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab7b2d1df1ea1c6a3200fda7f269048e9935b22311b53c6e75a9b7eb7c8e9b1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: IsolateManager: ClassTooLong \u2014 584 significant lines (blank, comment-only and punctuation-only lines excluded), 47 methods. The bar is 400 significant lines; this is 184 over it, 1.46\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"9547fa63d4fa1626c29e2cf247dfa6618455a0fa1782ef1e4eea5de95702d630"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MethodInvocationResolver._resolveInstanceInvocation: MethodTooLong \u2014 _resolveInstanceInvocation runs 146 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 46 over it, 1.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"38f6ca2794dc9ef182230d7931d251d9c6c1fc431a43a6e964af6e6cb5c2ddbc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RuntimeTypesImpl.computeRequiredChecks: MethodTooLong \u2014 computeRequiredChecks runs 146 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 46 over it, 1.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cd3119a088f1ee84f33edb5e70d3f88d83ab79a7aa55806c3c70a052af0ab77"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InternalLateVariable._computeLateLocalLowering: MethodTooLong \u2014 _computeLateLocalLowering runs 146 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 46 over it, 1.46\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":1461}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ecd7797d0a8fd3ccb936a2964ad8194082abefa724f180c7739203e0fcb2275"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resource_provider/resource_provider_file.dart: FileTooLong \u2014 728 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 228 over it, 1.46\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":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccdfe203175021e443e7cdee6eb71f6635953d470b9ab0ba53de03cd44a1555c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/outline_extractor.dart: FileTooLong \u2014 727 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 227 over it, 1.45\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":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee3e73f52ef99c3cab23342e5f37b710c15b2f7c514b5480d8544b6b684ef870"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ProtocolConverter: ClassTooLong \u2014 580 significant lines (blank, comment-only and punctuation-only lines excluded), 16 methods. The bar is 400 significant lines; this is 180 over it, 1.45\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":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"69b9d3f5a1db8d3418686e5eb5c8b20bd211223f1e2b76fb20bc064d95fff1cb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/functions.dart: FileTooLong \u2014 725 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 225 over it, 1.45\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":"pkg/dart2wasm/lib/functions.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fb5418cd36ea36418321ed8f226a2c6c3b5193ae120fdaabeccfa05237002ef"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ChainContext.run: MethodTooLong \u2014 run runs 145 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 45 over it, 1.45\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":"pkg/testing/lib/src/chain.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e9b78cb1162d616997f3dc928aa25fad9b573264f2f0a735dbc45312c39524"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: testing/id_testing_utils.dart: FileTooLong \u2014 724 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 224 over it, 1.45\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":"pkg/front_end/lib/src/testing/id_testing_utils.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e75cd207a6af7cba0720496214eeb2a2b5f47f5d34e673197157b558f1cbfb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TypedLiteralResolver: ClassTooLong \u2014 577 significant lines (blank, comment-only and punctuation-only lines excluded), 20 methods. The bar is 400 significant lines; this is 177 over it, 1.44\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":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"e58489270ebb9a4dcac940dd435f2d7340e5102d2c64fee910aa20ecb8340f67"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FlowGraphBuilder: ClassTooLong \u2014 576 significant lines (blank, comment-only and punctuation-only lines excluded), 70 methods. The bar is 400 significant lines; this is 176 over it, 1.44\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":"pkg/cfg/lib/ir/flow_graph_builder.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9fb252e92b6771e8d198a1274bf1f93c7a7dda632ce8d69c7e4ea884aabaf03"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnalysisDriver._analyzeFileImpl: MethodTooLong \u2014 _analyzeFileImpl 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":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":1340}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc6d9b42bc2cb0137cfded8e19a728a08dc44f1cd3b8dcccb95c6856497344b6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DillClassBuilder.DillClassBuilder: MethodTooLong \u2014 DillClassBuilder 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":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"82cc0c651f215c70526bfb835c1f769dd4017ed420a41fb6740ea8e0f97b321d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelTarget._makeMixinApplicationConstructor: MethodTooLong \u2014 _makeMixinApplicationConstructor 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":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1021}}}],"partialFingerprints":{"codehealthFindingId/v1":"dea97029520b38ea56167c3eb1e4317018418d6f7ee9f212e181bc875e82a8f3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: async/stream.dart: FileTooLong \u2014 718 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 218 over it, 1.44\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"04eef6838832995476eb84e9d1195989b64f078349cdd71547bd6f1d2b117055"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/source_enum_builder.dart: FileTooLong \u2014 717 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 217 over it, 1.43\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":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f32594dd1f76643c717816234d0eb88cf943d62b9d90e4aa7ae437da9d9bffe"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/matching_expressions.dart: FileTooLong \u2014 717 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: MatchingExpressionVisitor (15-960). The bar is 500 significant lines; this is 217 over it, 1.43\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"701bb80d8e0acd52a23418a70a8c913327ece9abdec33eb04e74454a3c6e1322"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MethodInvocationImpl: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":37399}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bcef810b925c241d66891a8e0da3ad9af4f1ff0255cf5c1803f440591a3a655"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ResolutionReader: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\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":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":1478}}}],"partialFingerprints":{"codehealthFindingId/v1":"78964a817e96478a266db4c1db50d5618bc73ff751e17e8f7bad204fb22646ad"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeSystem: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\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":"pkg/compiler/lib/src/inferrer/type_system.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b19044ddff921cfca8f645801fc72fcd98cdf9ba720ea82bff30627bf5a56b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TreeNodeIndexerVisitor: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\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":"pkg/compiler/lib/src/serialization/node_indexer.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6330a072f1f41d2a056e03e1debb298950c61d784a32368592e1089d21b822f7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ClosedWorldClassHierarchy: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\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":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"36070b233d0929b675f71190a3254cc24d8e231645814f550141741f9dbdd517"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeFlowAnalysis: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\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":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":2086}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b33f1bddc01e30c4a7e5e1047691ef3ad63ade03d261f2959b3d37a53771020"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: List: TooManyMethods \u2014 43 methods. The bar is 30 methods; this is 13 over it, 1.43\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":"sdk/lib/core/list.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"9adf7e5f6098651f3f28d1094fa4ccd447df6c3dd07f39f2ff257f9b9e648a8a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitAnonymousMethodExpression: MethodTooLong \u2014 visitAnonymousMethodExpression runs 143 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 43 over it, 1.43\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":9166}}}],"partialFingerprints":{"codehealthFindingId/v1":"be927d8be60465213f98c85d072da8043773c8befc7aeee689d68ed2b8212c42"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ConstantCreator: ClassTooLong \u2014 570 significant lines (blank, comment-only and punctuation-only lines excluded), 25 methods. The bar is 400 significant lines; this is 170 over it, 1.43\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":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"8791f83bf1c25d93f95d07adb2a035b332cd92e9cbb77ad7e09108bc2a80f5cf"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ResolutionWorldBuilder: ClassTooLong \u2014 569 significant lines (blank, comment-only and punctuation-only lines excluded), 40 methods. The bar is 400 significant lines; this is 169 over it, 1.42\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":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"636dbc3b479f1ed5a52097144b9325713b2c33480860daa253b169a43971f628"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _ClassVerifier: ClassTooLong \u2014 568 significant lines (blank, comment-only and punctuation-only lines excluded), 20 methods. The bar is 400 significant lines; this is 168 over it, 1.42\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":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e1c7a61f7578bad51bc32919f5c3ec0ac7197ce83993a9b0026fbdfc935d776"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DevToolsServer: ClassTooLong \u2014 568 significant lines (blank, comment-only and punctuation-only lines excluded), 11 methods. The bar is 400 significant lines; this is 168 over it, 1.42\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":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ca0801f7de5e940976a27fcfa2a224de8f5649bbc5346ce9490496bf2ec49a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js/util.dart: FileTooLong \u2014 710 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 210 over it, 1.42\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/js/util.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"febe4161f7862bee100c26cd4c49b04aee6489cd289f3d573d42f97458e024f6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Writer._protoToText: MethodTooLong \u2014 _protoToText runs 142 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 42 over it, 1.42\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/metadata_helper.dart"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"301499b7b7ff5afc6ad6f16353448b861455d03e1f9fb0fe929a10e57aec1cb7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Translator.getClosure: MethodTooLong \u2014 getClosure runs 142 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 42 over it, 1.42\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1343}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bcadf8bebf1082d6da90b0064b0b6b27e18566fb62d23f61db7ba6b5dd402e9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MatchingExpressionVisitor.visitObjectPattern: MethodTooLong \u2014 visitObjectPattern runs 142 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 42 over it, 1.42\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e3a5316e5dd8c1f653c5ee6d345eb2bcda2a644de35a60a46d7eef4cbc74bcb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: JsNodeSerializer: ClassTooLong \u2014 567 significant lines (blank, comment-only and punctuation-only lines excluded), 73 methods. The bar is 400 significant lines; this is 167 over it, 1.42\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":"pkg/compiler/lib/src/common/codegen.dart"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"175a2f2680c26b6ad80be6d0c6492ca319d2f0bb6570ea97c963f72a558cb131"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/dbc.dart: FileTooLong \u2014 707 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 207 over it, 1.41\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":"pkg/dart2bytecode/lib/dbc.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"71bb264fb6e31e0b320db9f41d369322733857171019f400642478a72455990a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/await_transformer.dart: FileTooLong \u2014 706 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 206 over it, 1.41\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":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5b901049d05276c5392eeb0fb85ae6e17ed53c4b24428257b679fae7117fad6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FactoryEncoding: ClassTooLong \u2014 564 significant lines (blank, comment-only and punctuation-only lines excluded), 21 methods. The bar is 400 significant lines; this is 164 over it, 1.41\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":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a82674030aabc6d7b704b7568ee0a578be255454b52fbd4f9b40e0c032b427"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ConstructorInvocationEvaluator._checkInitializers: MethodTooLong \u2014 _checkInitializers 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":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3256}}}],"partialFingerprints":{"codehealthFindingId/v1":"c27056fe2a22957741c58835650246ffb61464c80e4d08315bd7e13ba83f23bf"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DuplicateDefinitionVerifier.checkUnit: MethodTooLong \u2014 checkUnit 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":"pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdd212ae87510ead1b1180911c42eacc744a1ffb149b339507ce92c1f645fb21"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _Validator.run: MethodTooLong \u2014 run 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":"pkg/analyzer/lib/src/wolf/ir/validator.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca132d09b4daa1a84d86e9812a7d32742ab3446d2ba1cc14e215fcb0666591ba"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelSsaGraphBuilder._buildParameterStub: MethodTooLong \u2014 _buildParameterStub 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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1383}}}],"partialFingerprints":{"codehealthFindingId/v1":"9302ae6514c9e0e5ab33e2688e265f71e86ff4811a2f3aaa95e8c052c3854b8c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MixinFullResolution.transformClass: MethodTooLong \u2014 transformClass 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":"pkg/vm/lib/modular/transformations/mixin_full_resolution.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca1dc2579305b66a0d67a5699fc00bd5a8d4adc49a5a120e83eebd7cbcd753ce"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: graphexplorer.showTables: FunctionTooLong \u2014 showTables 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":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1835}}}],"partialFingerprints":{"codehealthFindingId/v1":"b93aaccdb8edcdc58dbd6cda75d5ef637b07372246ed272955df9713e1ccd051"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/dartmetadata.py: FileTooLong \u2014 704 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 204 over it, 1.41\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":"tools/dom/scripts/dartmetadata.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8532492f6a898d1211b0226e0e3423b1dfcebdcea1b5c664b4705fe94b29050"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: commands/run.dart: FileTooLong \u2014 703 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 203 over it, 1.41\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":"pkg/dartdev/lib/src/commands/run.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"def134e2145ce44cf55476812a144002de11b49d70b329ba2dcfd792f07b08cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/body_inference_context.dart: FileTooLong \u2014 703 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 203 over it, 1.41\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":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"493e3f6e5b83bdb1a516c9294b4e5dbca5533a3ae4afafa57f94aa0773715c42"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/kernel_impact.dart: FileTooLong \u2014 702 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: KernelImpactConverter (38-1042). The bar is 500 significant lines; this is 202 over it, 1.40\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"11580bbf7f1781dcadaf1a9d1ff55b742a5dfe17417ccc779baac6387c6bf277"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TransformSetParser: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"52ae93b082c36b413ba09d07951e786f24eba5eb92d751df0cce50adb7ad161f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AssignmentExpressionImpl: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":2667}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a942884e77a73086fac0978de49a5c967d49fd813e7f89605d00c766c279e1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: IndexExpressionImpl: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":31000}}}],"partialFingerprints":{"codehealthFindingId/v1":"e48bcbf593423e912f72516e662ec89791bb9b647ae737cb63cfc1c860f49824"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: OnlineJavaScriptTracer: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f549d9e7af791d3fa02dc051c0c82f2a2903a58059e84c0a74812dcf6a11fd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartScopeBuilder2: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bf88aac830456db2a971787a976b9196817b2baa98edc9191abe4fd2218b68"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: VmTarget: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"pkg/vm/lib/modular/target/vm.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2a6742da6ccffb995483ddbd6d48c1e699930080667d5ef6c5c75afb96799c3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _HttpClient: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":2782}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf25d0d81306058c9cf612f8a5b78aeb96ed9f2de3976734e49c9d6dde02bf8b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NativeByteData: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"1672c5acd00c1aaf2eea93fae53618590b83b6a4bf66da7665cafee9dbeee20e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _TypedList: TooManyMethods \u2014 42 methods. The bar is 30 methods; this is 12 over it, 1.40\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":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":2143}}}],"partialFingerprints":{"codehealthFindingId/v1":"775fd2db463d45e9383c3cf0dea31167f713f400c0eee1f4abe46c19dabdcd74"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/typed_literal_resolver.dart: FileTooLong \u2014 700 significant lines (blank, comment-only and punctuation-only lines excluded), about 82% of them inside a single declaration: TypedLiteralResolver (47-907). The bar is 500 significant lines; this is 200 over it, 1.40\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcbbb16224468b9a0b2e36fd623bc3e0e3c73a5c12ca8433b81f990187d6a1f6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DillLibraryBuilder.ensureLoaded: MethodTooLong \u2014 ensureLoaded runs 140 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 40 over it, 1.40\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_library_builder.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec243b31548c85a7e438c529e8d86e364d70858e73329b83cc9ee60397e301f7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PatternConverter.dispatchPattern: MethodTooLong \u2014 dispatchPattern runs 140 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 40 over it, 1.40\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"28aec2804aca07c374219c2c2dbf9ef2eadee94a5c685f8c532807b8b967b827"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceEnumBuilder._createSynthesizedMembers: MethodTooLong \u2014 _createSynthesizedMembers runs 140 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 40 over it, 1.40\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed0a031bef0970da2b4232304c762a50344029985259db3501a21f6a663de6d1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase.inferLocalFunction: MethodTooLong \u2014 inferLocalFunction runs 140 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 40 over it, 1.40\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2225}}}],"partialFingerprints":{"codehealthFindingId/v1":"4490b272bab874a191494a8997d6469bbd78a477c94c30b65735521d2c78926e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/exhaustiveness.dart: FileTooLong \u2014 698 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 198 over it, 1.40\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"de0caad26e8b7194c8555502875f43686d9133a488c64dc8712c227ccfca8515"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BundleWriter: ClassTooLong \u2014 557 significant lines (blank, comment-only and punctuation-only lines excluded), 60 methods. The bar is 400 significant lines; this is 157 over it, 1.39\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":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea3745a1e13fb1d1f51ac4ba1213f83bf04796a931683f0310700a270f13c7a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: transformations/shared_interop_transformer.dart: FileTooLong \u2014 696 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: SharedInteropTransformer (20-1023). The bar is 500 significant lines; this is 196 over it, 1.39\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"db2923a74bedff64b330e7a88190b1e9fd340ee7d307beca6147e0eef8e5e68b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: server/driver.dart: FileTooLong \u2014 696 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: Driver (53-1055). The bar is 500 significant lines; this is 196 over it, 1.39\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8471065459d8b310ea539e2da6a9186aac14f78ede0b284bc560396e9723309a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ClassViewElement._createMembers: MethodTooLong \u2014 _createMembers runs 139 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 39 over it, 1.39\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_view.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"751acad28559c8f22c9455a530df7d7f422533519c9d1eae87e6ffbbca5eaf75"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _TreeShakerPass1: ClassTooLong \u2014 553 significant lines (blank, comment-only and punctuation-only lines excluded), 59 methods. The bar is 400 significant lines; this is 153 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":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":1347}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9520047416bd98a2fdaac4f05cba56f7e54c977dfb01186607f2b064fbd699"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: field/declaration.dart: FileTooLong \u2014 691 significant lines (blank, comment-only and punctuation-only lines excluded), about 68% of them inside a single declaration: RegularFieldDeclaration (166-814). The bar is 500 significant lines; this is 191 over it, 1.38\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d600c70a168470c524fb62ba9d70601d85cda81222f75a7fb3211031e689115"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SharedInteropTransformer._createExport: MethodTooLong \u2014 _createExport 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":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4e7f5418c01ea6af2b78346f33751c93c82c374c8487ac3c22e295f7e64edfc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MethodInvocationResolver.resolveUnqualified: MethodTooLong \u2014 resolveUnqualified 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":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3405efe0b041c33f8d0316d397462fff4f23409ead0c21ef1fc875624556bfb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl._checkElement: MethodTooLong \u2014 _checkElement 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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4153}}}],"partialFingerprints":{"codehealthFindingId/v1":"328af87ca3edb5569d0220fa8af1a360c46ca324f70eadc95802785b7e3da8f1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BytecodeAssembler: ClassTooLong \u2014 551 significant lines (blank, comment-only and punctuation-only lines excluded), 112 methods. The bar is 400 significant lines; this is 151 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":"pkg/dart2bytecode/lib/assembler.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65bfe1841292be20133746953f45eb0d810e3bc10d8cffdd14077b396c61d79"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Search: ClassTooLong \u2014 551 significant lines (blank, comment-only and punctuation-only lines excluded), 33 methods. The bar is 400 significant lines; this is 151 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":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d0d5ebc846e9ac0bc735360d39df254594a2d375c30a8e26d640a46f52397a3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/invocation_inferrer.dart: FileTooLong \u2014 686 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 186 over it, 1.37\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"45101402bb583e27fe50ae81fdb9c91801575b44da74628691864bd46b2e7d1c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ForwardingNode.finalize: MethodTooLong \u2014 finalize runs 137 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 37 over it, 1.37\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":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"8916cc386e3ee1127d4d12b62142e5192b666a70f7df18f324a11a47ca729321"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ClassViewElement.render: MethodTooLong \u2014 render runs 137 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 37 over it, 1.37\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":"pkg/observatory/lib/src/elements/class_view.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"5808ee77d0a6c5065d3970c95dee44c0f21a01cb0b2fe7948302015cabdf206f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PropertyAccessImpl: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":46142}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c5777654e471d68cce47890204e63440bd8ed1e849e90643a9d3692bb1cfa90"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ElementUsageDetector: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"271c10d26ebd3142ae062593bcc65b24328be4f55c10bd062c75cf105866e139"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TracerVisitor: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"940ec3c8ea4dc0db3854810e975bdb078a2c3909d7c23903502bea313716d3a1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NativeData: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"pkg/compiler/lib/src/js_backend/native_data.dart"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c36d5e8f07361881dbd984991bb42788597807ce74295dedc6a17475213b177"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExpressionGeneratorHelper: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"pkg/front_end/lib/src/kernel/expression_generator_helper.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fb8e9dc3ecd76abcb2ed61873274adcff76cfaea99ee542b681abd579c6bc29"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: EquivalenceVisitorStrategy: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"pkg/front_end/tool/generate_ast_equivalence.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"82a8b89628de5a1c48d1efa7adff065d37ebfacfe1b34da1ccd280b695fa680c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSString: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"sdk/lib/_internal/js_runtime/lib/js_string.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c2c873ae5616333766e687e7661df4f414ab29dafa99eb1812fde4d850299b5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _Int32x4: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":4009}}}],"partialFingerprints":{"codehealthFindingId/v1":"7750b5db6cbfa9f09cc270376d4f2a93ecf8a711a4295db994769b7e6d045ea2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BoxedDouble: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"sdk/lib/_internal/wasm/common/boxed_double.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"b81a1be73da5ab153bcfb588038781e01c8bc79227562c639e95df814ba3cc46"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BigInt: TooManyMethods \u2014 41 methods. The bar is 30 methods; this is 11 over it, 1.37\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":"sdk/lib/core/bigint.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a1bc175d5c7bb47d68364e0e4b0d6d6e3a0f49cb19b692eae870f6cbddd7d48"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VmService: ClassTooLong \u2014 546 significant lines (blank, comment-only and punctuation-only lines excluded), 94 methods. The bar is 400 significant lines; this is 146 over it, 1.37\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fde4cef3e033cb4eb002afe3fa5f83f05e515022753505e6fed162bdfe12600"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: testing/metadata_helper.dart: FileTooLong \u2014 680 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: Writer (93-830). The bar is 500 significant lines; this is 180 over it, 1.36\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/metadata_helper.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"97e40315ef6d53e17dcc209a72dd7baa018645c43f3c5170f496a87f6d583d13"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: assets/D3SymbolTreeMap.js: FileTooLong \u2014 680 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 180 over it, 1.36\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":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb831d8bcfb490881fb0b80746e8d25ddfb60e83c700e67a5f46934cb3ae1d7b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceExtensionTypeDeclarationBuilder._checkRepresentationDependency: MethodTooLong \u2014 _checkRepresentationDependency runs 136 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 36 over it, 1.36\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":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"43de6564cd5a27ce4efb132191cd8298cea443fb1c967576e401e575a1720dc3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VerifyingAnalysis.run: MethodTooLong \u2014 run runs 136 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 36 over it, 1.36\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":"pkg/front_end/lib/src/testing/verifying_analysis.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8043368d82a127be91c11f779a82a9b907cc2e7864dfbccc6b0f394baa73c35"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitExtensionPostIncDec: MethodTooLong \u2014 visitExtensionPostIncDec runs 136 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 36 over it, 1.36\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1725}}}],"partialFingerprints":{"codehealthFindingId/v1":"07e50a0bd4187042872cb895d735f9f7bb91c0aaa47bfc4e565df9166dade3fb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitExtensionIfNullSet: MethodTooLong \u2014 visitExtensionIfNullSet runs 136 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 36 over it, 1.36\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":2117}}}],"partialFingerprints":{"codehealthFindingId/v1":"c46a5369d4e2fe08e158ebc129704880f41b735ad3bca95344c53ce19080da60"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl._computeUnaryExpression: MethodTooLong \u2014 _computeUnaryExpression runs 136 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 36 over it, 1.36\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7864}}}],"partialFingerprints":{"codehealthFindingId/v1":"331dcea7f963c5b593b7dfd6ef06a5494948eb0fc5d1d8edb15c2531970175a2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitRelationalPattern: MethodTooLong \u2014 visitRelationalPattern runs 136 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 36 over it, 1.36\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12886}}}],"partialFingerprints":{"codehealthFindingId/v1":"28e9c1288210c7d6c1173b3b62e1a2e0525c58919586bd41e45cac72b02a3b14"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/class_info.dart: FileTooLong \u2014 678 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 178 over it, 1.36\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":"pkg/dart2wasm/lib/class_info.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16704158ab01ad7fd661b806b595a0105c3290e3800b1f10e46aa54e2aaa73f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LibraryElementImpl: ClassTooLong \u2014 542 significant lines (blank, comment-only and punctuation-only lines excluded), 81 methods. The bar is 400 significant lines; this is 142 over it, 1.36\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6699}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eefcdd62fb23ac2f9329675bf80e5f967681f5df3b7f092555815fe32ada9da"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _Universe: ClassTooLong \u2014 542 significant lines (blank, comment-only and punctuation-only lines excluded), 68 methods. The bar is 400 significant lines; this is 142 over it, 1.36\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":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":2101}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4da98e671dc2e969caf3672e32f12b6cc1fcdaaa3a0b40d867e0ccf934ffe6f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: factory/encoding.dart: FileTooLong \u2014 676 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: FactoryEncoding (45-895). The bar is 500 significant lines; this is 176 over it, 1.35\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae12ac8043d9bbc0312ea6c7417970b990673b3bccb98e321dcf88ca44d05da7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SubtypeHelper._isSubtypeOf: MethodTooLong \u2014 _isSubtypeOf runs 135 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 35 over it, 1.35\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/subtype.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"c48bece562c4751e875ac80f06c35b3ccbab8fc7559e834f95ce644231350a71"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AllocationProfileElement.render: MethodTooLong \u2014 render runs 135 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 35 over it, 1.35\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"09e7b2908f227facba8f40681ae75f81f3ab8e47397d81d65dd4b106f5669f90"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _BigIntImpl.modPow: MethodTooLong \u2014 modPow runs 135 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 35 over it, 1.35\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":1939}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5ef312031a9e2a57f1576428e0a1119ee88bed9fbab35f8ff1d83add8fb1e32"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/dart_io_extensions.dart: FileTooLong \u2014 672 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 172 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":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f2ace7b7b56d3c8a8edff60e9fcd8ecd48a5760da26c926c443166f703acbd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: patch/ffi_patch.dart: FileTooLong \u2014 671 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 171 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":"sdk/lib/_internal/js_dev_runtime/patch/ffi_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aed92a7fc662fe8207fc430763f974e9e2f28d6a0062ee4cfdbf9833f192b1b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InstantiatorGeneratorVisitor: ClassTooLong \u2014 536 significant lines (blank, comment-only and punctuation-only lines excluded), 91 methods. The bar is 400 significant lines; this is 136 over it, 1.34\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":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc7d009a188ffba239c87d908d4745921f590c743134ba419eabdb779cb9ecb8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/instantiation.dart: FileTooLong \u2014 670 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 170 over it, 1.34\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/instantiation.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"15d2c42f5936db76739fa25b672a8f0ea829546b3055290d5e00976266f5ef19"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelSsaGraphBuilder._pushDynamicInvocation: MethodTooLong \u2014 _pushDynamicInvocation 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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6830}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdff1613d5ab474795abcb33f7b80fc6d22ae2f7f75eb4ecd65c242a91cd5795"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: error/element_usage_detector.dart: 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":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bb8dff44677b41046dae7df8c3c7cf20dca82659d5d1f08ccf8419e4adb5bb2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/dart_scope_calculator.dart: 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":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e66c01e4f9f0bbf85c891c5ac8fd2fd3628131e562759cde80064cc016853130"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstantVerifier: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a2d5a4a5eab57cc0e32136ed33915d483d02b215d3353add0d8ca4d33278e3a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FragmentEmitter: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc58506bfa112b9f5fdfb009abb3e3a0ace720feb28bab0ae27e850ada29db86"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SsaTypePropagator: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/types_propagation.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad84c1aeb65abb649eef142ff6fcaf8fbf372d7a7ac8fa6564f82a56e7abba27"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ResolutionWorldBuilder: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6a119e423a482a28401cd9c1447061852c7c7cd4e4a7f2e3a59ea377209d4bb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeLabeler: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"08b3f969eb2e4eab6e63335f8e24a574d3ddada5b20f8d11e2f17f9c4c5e0b5d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSString: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_string.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc017107e3a52b91658f92855940ef52faa0c09f7339a323ec8e151a455a97c9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NativeByteData: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"10152f904c81acd484e9cb086ee574109bd25ec30ba85725bd71552ef15b423a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Primitives: TooManyMethods \u2014 40 methods. The bar is 30 methods; this is 10 over it, 1.33\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"de848542ecc185c63d2926029c9318c119c74438864de3f4eccbdca250969274"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CompletionHandler: ClassTooLong \u2014 533 significant lines (blank, comment-only and punctuation-only lines excluded), 15 methods. The bar is 400 significant lines; this is 133 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":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"a087425f8dac75b4acbc3d33ba798c4cd203ed0c6f47cc2a5ad61b2af3e791f7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: universe/resolution_world_builder.dart: FileTooLong \u2014 666 significant lines (blank, comment-only and punctuation-only lines excluded), about 85% of them inside a single declaration: ResolutionWorldBuilder (196-1140). The bar is 500 significant lines; this is 166 over it, 1.33\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aff72241dadd0018c5dc4997e39d7472d8a5fe5e8011272b730263ebdd4622e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CommandLineOptions._parse: MethodTooLong \u2014 _parse 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":"pkg/analyzer_cli/lib/src/options.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcf67e6ad9798250c78051b2701e96f6e95fc044c0759fb3808e5fad16738150"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelSsaGraphBuilder._buildConstructor: MethodTooLong \u2014 _buildConstructor 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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2eec0a2f5c241d53cd7da66c98b2ffbfd472d442a73fcc3d6c5bbf6ae916f47"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DillExtensionBuilder.DillExtensionBuilder: MethodTooLong \u2014 DillExtensionBuilder 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":"pkg/front_end/lib/src/dill/dill_extension_builder.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"f777dae5670b3b77c89ee80179f644337a1d7a5f58128eff07a689b5e2a263e1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitIfNullSuperIndexSet: MethodTooLong \u2014 visitIfNullSuperIndexSet 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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7066}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f47ce331d9f43826a58726d0c32850489cae87b54c87e1d02ba215bbe2e3a3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LateLowering: ClassTooLong \u2014 529 significant lines (blank, comment-only and punctuation-only lines excluded), 38 methods. The bar is 400 significant lines; this is 129 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":"pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"31dfc67519ac838dd65d1749c63db07ca459cbaeb931388c146939b564fb23b3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AllocationProfileElement: ClassTooLong \u2014 529 significant lines (blank, comment-only and punctuation-only lines excluded), 33 methods. The bar is 400 significant lines; this is 129 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":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aa1c8f50ebabe13f0d4248be31217b2f9b78aa3bbbd72925a509ecb09b61c2a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RelevanceComputer: ClassTooLong \u2014 528 significant lines (blank, comment-only and punctuation-only lines excluded), 24 methods. The bar is 400 significant lines; this is 128 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":"pkg/analysis_server/lib/src/services/completion/dart/relevance_computer.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"da7a071f4f6b54c6b4ef4d7d5e1b4dba01fe81f6c589226a6e82d3b69b1abc6e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitInstantiation: MethodTooLong \u2014 visitInstantiation runs 132 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 32 over it, 1.32\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"166fa209fc4f6e049d3f126fd5b9ba02c629fe278a8cd0c6ba4cf4a489edd6d7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: legacy/completion_utils.dart: FileTooLong \u2014 659 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 159 over it, 1.32\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/completion_utils.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"196c0814724aad8a3f8186b505e8f76585b7421ee7549cb7423885696703e832"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_ast/template.dart: FileTooLong \u2014 659 significant lines (blank, comment-only and punctuation-only lines excluded), about 81% of them inside a single declaration: InstantiatorGeneratorVisitor (172-945). The bar is 500 significant lines; this is 159 over it, 1.32\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7afd2492edce3bc09995ef09225d91e30eedda1c67b1a992edc39901b41b7afc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: typemasks/flat_type_mask.dart: FileTooLong \u2014 658 significant lines (blank, comment-only and punctuation-only lines excluded), about 90% of them inside a single declaration: FlatTypeMask (17-870). The bar is 500 significant lines; this is 158 over it, 1.32\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43fe8a37059b1fe41a379a58a361aa7151e221eb388e2ce1a3f119ff4bc5ed6e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ImportLibrary: ClassTooLong \u2014 526 significant lines (blank, comment-only and punctuation-only lines excluded), 26 methods. The bar is 400 significant lines; this is 126 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":"pkg/analysis_server/lib/src/services/correction/dart/import_library.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"7064980ebb0fa5ed7c17ad5d5645889e820a53367e73054e191bb1dbb0642385"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: handlers/handler_completion.dart: FileTooLong \u2014 656 significant lines (blank, comment-only and punctuation-only lines excluded), about 81% of them inside a single declaration: CompletionHandler (45-921). The bar is 500 significant lines; this is 156 over it, 1.31\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a6b5a35bce4554cafff7fd9eaccad8da4553532768b33df38aa57efe53f30a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/kernel_nodes.dart: FileTooLong \u2014 656 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 156 over it, 1.31\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":"pkg/dart2wasm/lib/kernel_nodes.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a64002f36c26d2ee8ec35e09e1fa14fc791eb6aa143199da5d5c1fc126b7b7f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: hierarchy/extension_type_members.dart: FileTooLong \u2014 656 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 156 over it, 1.31\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":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8737f12060d8e9b559508c7302deada0a00942ef424a234ebc5828437969545c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ffi/native_type_cfe.dart: FileTooLong \u2014 656 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 156 over it, 1.31\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":"pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b342f096b7e075bd6316af4989ab42c47f38bf61a836e9341abd5283e67ead0a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/collection_patch.dart: FileTooLong \u2014 656 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 156 over it, 1.31\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":"sdk/lib/_internal/vm_shared/lib/collection_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"276e04c9a9375dfc2b834aeb2111aa1ab42e926aaf65fd1a4bc750f5c77bcb30"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TypePropertyResolver.resolve: MethodTooLong \u2014 resolve runs 131 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 31 over it, 1.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/type_property_resolver.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"569261e426ded6d12bed11823f2e35f51e8f0ae9a847665c7f84d791f03f602a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DevToolsServer.serveDevTools: MethodTooLong \u2014 serveDevTools runs 131 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 31 over it, 1.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ddc1181e6dd8368a54e13cce448cb237e57d4f52c83dd73c76f70904789cdd2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LinearScanRegisterAllocator.resolveDataFlow: MethodTooLong \u2014 resolveDataFlow runs 131 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 31 over it, 1.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c057e2db84d096b9afa52ffc9d27821629472856fa66749fe60a0104e6e6f7b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _FfiUseSiteTransformer._replaceNativeCallParameterAndArgument: MethodTooLong \u2014 _replaceNativeCallParameterAndArgument runs 131 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 31 over it, 1.31\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":2195}}}],"partialFingerprints":{"codehealthFindingId/v1":"29830b31005ba5409cfa7b03914d96b6873cdcc01b8cabac317dd7865717db8b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _RawSecureSocket: ClassTooLong \u2014 521 significant lines (blank, comment-only and punctuation-only lines excluded), 47 methods. The bar is 400 significant lines; this is 121 over it, 1.30\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":"sdk/lib/io/secure_socket.dart"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"741562af67b8c1a1c794e9c8bb7691839106a9fa3e799fe987c36ecb7a66634d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/correction_producer.dart: FileTooLong \u2014 651 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 151 over it, 1.30\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea886200c6e8e939a6b7a57a1826bf6be6c73c7bb0b29b6d7ef7e54c87013d63"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Namer: ClassTooLong \u2014 520 significant lines (blank, comment-only and punctuation-only lines excluded), 69 methods. The bar is 400 significant lines; this is 120 over it, 1.30\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":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"c03d436d849f46fa90e2459e4d6ab54b96f89092893232a03d5c0708fe056688"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _DartUnitFoldingComputerVisitor: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\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":"pkg/analysis_server/lib/src/computer/computer_folding.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"f157a060179b7003148c7cc504ea0dc79b6d25f6fd1433a50b2e8ce532b390b2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ElementAnnotation: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\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":"pkg/analyzer/lib/dart/element/element.dart"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc06a2a28e15d26bb7c88b1774aa1187c9bd7fce9efcbbfbaddb9785f6994c7d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LibraryElement: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\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":"pkg/analyzer/lib/dart/element/element.dart"},"region":{"startLine":2142}}}],"partialFingerprints":{"codehealthFindingId/v1":"7957fe23c8a944b79a307062f50df2dbbf06eb518a2c416a380fff58307f8cf0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ReferencedNamesComputer: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\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":"pkg/analyzer/lib/src/dart/analysis/referenced_names.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b306b3d1f91652a3965616e8db3af107c48f672fab396b0c85770d816bf8d46"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AstDataExtractor: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\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":"pkg/analyzer/lib/src/util/ast_data_extractor.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"035c6e5a916b1582f42d9fead9ab1550a9c6486426d1ecbf048c235cb21b0a9e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KernelElementEnvironment: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\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":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1913}}}],"partialFingerprints":{"codehealthFindingId/v1":"f675c7e4137ca6df1de0f32d2c558240a08512527e95c2e912ccbe67a2e12d6b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WasmTarget: TooManyMethods \u2014 39 methods. The bar is 30 methods; this is 9 over it, 1.30\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":"pkg/dart2wasm/lib/target.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"725edace71b6390d956bc595433965df6f293aaf45d8a0c00783bd92e72ecb76"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LeastUpperBoundHelper._computeLeastUpperBound: MethodTooLong \u2014 _computeLeastUpperBound runs 130 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 30 over it, 1.30\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":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c8b93c4f8e63401c2871ea14d4b2cea1eb9f2a61db58b372fd4ab4684e03e43"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RecordTypeBuilderImpl.buildAliased: MethodTooLong \u2014 buildAliased runs 130 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 30 over it, 1.30\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":"pkg/front_end/lib/src/builder/record_type_builder.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"6220f41d5caa7feab40aa2cec9a99737808c3065c2808f8697bd7f91553b82d3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl._computeIndexGet: MethodTooLong \u2014 _computeIndexGet runs 130 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 30 over it, 1.30\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8041}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba10f2dc4c6bea8fe4267f48fab540220ad26beb1961f9755f6ce306cab6b5ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_backend/native_data.dart: FileTooLong \u2014 647 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 147 over it, 1.29\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/native_data.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e9060f10cf92c6ce6d16eac5f937f9ac14b97ec184c186da213966b2454d6cb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InstanceMemberInferrer._inferAccessorOrField: MethodTooLong \u2014 _inferAccessorOrField runs 129 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 29 over it, 1.29\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/instance_member_inferrer.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e5f028e1357f79947659c57251fe3ce60dfb9919429a03a0a3a5c76a5bf4d25"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl._computeIndexSet: MethodTooLong \u2014 _computeIndexSet runs 129 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 29 over it, 1.29\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8200}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8fc663679a2c10c5e38872fd9ca4fe04dc81bbc4ac36f228e125f75df0eb02f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NoSuchMethodError.toString: MethodTooLong \u2014 toString runs 129 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 29 over it, 1.29\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/errors_patch.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae25f44151530a3de82d67259b4e714a712f82b81184f1a80abcda16367728e5"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartObjectImpl: ClassTooLong \u2014 512 significant lines (blank, comment-only and punctuation-only lines excluded), 64 methods. The bar is 400 significant lines; this is 112 over it, 1.28\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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70ba0bcc6c1db6c1093c24526f72fe6cff2c20b05dfa54c80a26ed370332151"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/devtools_server.dart: FileTooLong \u2014 640 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: DevToolsServer (23-910). The bar is 500 significant lines; this is 140 over it, 1.28\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a30cd5e62f3b64184ca04891205f8546afa1258a0c60d798691acad3421037a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TypeAnalyzer.analyzeSwitchStatement: MethodTooLong \u2014 analyzeSwitchStatement runs 128 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":2511}}}],"partialFingerprints":{"codehealthFindingId/v1":"5909e384fd0b3cf904ef7bc3a60611b562c0f3348a5f91c81eb2c653ef3f7e4a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LibrariesSpecification.parse: MethodTooLong \u2014 parse runs 128 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/libraries_specification.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"62fbd93acbf3253bfb08b530bccc5656e69d9471453b23cb53cbb472959ff917"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FullInvocationInferrer.resolveInvocation: MethodTooLong \u2014 resolveInvocation runs 128 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"39dad5bea1c3ec6829073f4f12ef2f10d8e4d86fe6625ad1c26d65d06acc0569"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TypeArgumentsVerifier._checkForTypeArgumentNotMatchingBounds: MethodTooLong \u2014 _checkForTypeArgumentNotMatchingBounds runs 128 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 28 over it, 1.28\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/type_arguments_verifier.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61ae54b6267056c51121003755f602def891c51bfbcaeed95cb0b3fcb9a99ac"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: element/member.dart: FileTooLong \u2014 639 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 139 over it, 1.28\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":"pkg/analyzer/lib/src/dart/element/member.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b27a3893e70bafb3b66fd55303f524a003a365be6b10f47b9936deef27af624"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/members.dart: FileTooLong \u2014 639 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 139 over it, 1.28\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":"pkg/kernel/lib/src/ast/members.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a78ae3a38aa5cd66f401d6db64978b8e6c8c9d46d124bc7046feeb732458d94"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: macho/macho_image_writer.dart: FileTooLong \u2014 639 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 139 over it, 1.28\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":"pkg/native_compiler/lib/snapshot/macho/macho_image_writer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"212e948a2e993e544fef2235d92c082e3744004afeb1713be6a8116d4d538b7e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: internal/iterable.dart: FileTooLong \u2014 639 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 139 over it, 1.28\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":"sdk/lib/internal/iterable.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaf552ac7a8dee7c8528bfd9a1abb01199b94ffd511b9f84c4186e54a369480b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitCompoundSuperIndexSet: MethodTooLong \u2014 visitCompoundSuperIndexSet runs 127 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 27 over it, 1.27\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8671}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f05066c7605bb24a69184a4188f812703c289f195298fded922c9394ef3e1f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SummaryCollector._visitCondition: MethodTooLong \u2014 _visitCondition runs 127 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 27 over it, 1.27\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":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":1619}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fb0e79aae720a5e9bb14506a0206ed63ab9442c0e2c098617a0d5d0284af9c7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ConstantPropagation: ClassTooLong \u2014 507 significant lines (blank, comment-only and punctuation-only lines excluded), 82 methods. The bar is 400 significant lines; this is 107 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/constant_propagation.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ffdf841c762384b0e0f58028669b8ef0f2c266b03d4ce5aea55d6507149e1bb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JsInteropChecks: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a07313ba7e2d932c5a9f3d6fa8404571c72504799f7f2e35bb2ea12dff920b3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PluginServer: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"1377f9cc91c92f181e7d42fe4447e64e00608349c951c5338d3eb0efb2288b5d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MethodInvocationResolver: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b620f57be489fc1f610df4ea9644fe5e0764c2e5b8204d70d3b12068bfb3d34"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MetadataResolver: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/metadata_resolver.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c5c37857a6493a48a51631d50e4011c8b92384c94f150c60ff6be33d874df8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstantTransformer: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/global/constant_transformer.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"451a51c9e7dbb65faa5bbee8ad5b8fbea198f6d8709c659a693aad6bdbd1df68"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LateLowering: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a3df4ea2ad9890d991a2ee217f7d8be9322514209fb8a3ebf5eb18b57626928"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ScopeBuilder: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/local_vars.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4e05f14ba577e5c4003fec07203ba8ab1befa9b2edcbd6da34dbdbbc079b644"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _EnumValuesFieldDeclaration: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"7159986b19145d8521145513fa3be358d4223242eff04329ba3c363967440028"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: A: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/closure_context_lowering/this_variable.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0a5284bddc8b1beb5135d21dc5991fc5e0c141b985c837268eede9f38efc109"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CanonicalName: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/canonical_name.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf960b16b4d6d93e2ce8afa2cfc151cd6fb2107aa97593860d15de0ac11132ff"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TargetWrapper: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":903}}}],"partialFingerprints":{"codehealthFindingId/v1":"636cbe53c2bd0550ccef1d132eed4d44f8d43852d5eda65be8be2e3d720dfc58"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _RecursiveVisitor: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/deprecated_member_use_from_same_package.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"85392d6b0bea2c3d2ea03d0af0e4cea0fac18454b57bec67d839cec1ca239763"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Assembler: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/assembler.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"143cfb9821d7d95c997afab5d77d07d0a3e309654865e197cb22093b5829ced1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FfiTransformer: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/common.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"087d84c6787145df28e53592db72775620cc2fe35c0cea6149009227a46d3f9d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _BufferingStreamSubscription: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream_impl.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b820c83d385d7264a43ce8f8ec52601513452dcd937a40be948182d81120307"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Iterable: TooManyMethods \u2014 38 methods. The bar is 30 methods; this is 8 over it, 1.27\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/iterable.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1768238e5ce34d1bed229348369ba4f137fe44f174a1a896d64844a91c979d0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/analysis.dart: FileTooLong \u2014 632 significant lines (blank, comment-only and punctuation-only lines excluded), about 74% of them inside a single declaration: Analysis (22-768). The bar is 500 significant lines; this is 132 over it, 1.26\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba8d12456bb6a5310048ad7fd4b27d3819965aa82fcb965e9754b9fdf960a1a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Evaluator: ClassTooLong \u2014 505 significant lines (blank, comment-only and punctuation-only lines excluded), 16 methods. The bar is 400 significant lines; this is 105 over it, 1.26\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cbf80b0415104c1227335d5aa05223dd8ae50761024b2e44e7e985afcb6a1f4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/type_algorithms.dart: FileTooLong \u2014 631 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 131 over it, 1.26\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":"pkg/front_end/lib/src/kernel/type_algorithms.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"66210bfc8bf0860febb64b5948b588facec1c0a9b80107e68e54416356e1be1d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: async/stream_impl.dart: FileTooLong \u2014 631 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 131 over it, 1.26\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":"sdk/lib/async/stream_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d04ae4d1df7bd3bcd354652f085e69f57d0ff39639838b28118f385361fbcc47"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ContextManagerImpl: ClassTooLong \u2014 504 significant lines (blank, comment-only and punctuation-only lines excluded), 30 methods. The bar is 400 significant lines; this is 104 over it, 1.26\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"0521bf7235f4ee3cf137e4fd856a70d5a78398f19b2680265b5b66c48f522c04"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary2/library_builder.dart: FileTooLong \u2014 630 significant lines (blank, comment-only and punctuation-only lines excluded), about 78% of them inside a single declaration: LibraryBuilder (60-803). The bar is 500 significant lines; this is 130 over it, 1.26\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/library_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"47a74ded680400faf4bf35836af2b98f7a3410c021ae17bb2f712ca9381eb815"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AssignmentExpressionResolver.resolveCompound: MethodTooLong \u2014 resolveCompound runs 126 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 26 over it, 1.26\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4c8a172ebe9d674773cd0cecd9ae217648a4876042e5f085004ce2a95065c5f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Arm64CodeGenerator.visitBinaryIntOp: MethodTooLong \u2014 visitBinaryIntOp runs 126 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 26 over it, 1.26\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2536}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e9e711cda48996f9647fbc5f36d058930b62e07145599e3ae163302c55d3ac2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: EntryPointShimWriter.write: MethodTooLong \u2014 write runs 126 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 26 over it, 1.26\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/embedder/writer.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"629bae6691cdb6899cee8031abc2f1fc8d9814065edb4694e8004d25dd29c7a1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TypeUseGenerator: ClassTooLong \u2014 503 significant lines (blank, comment-only and punctuation-only lines excluded), 11 methods. The bar is 400 significant lines; this is 103 over it, 1.26\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":4542}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a0cc6c28ccde66bf5bc8be546493cc93f18a5009ffedfce3b96a6248b87fed"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/compile.dart: FileTooLong \u2014 628 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 128 over it, 1.26\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":"pkg/dart2wasm/lib/compile.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1872511d880ea473dd7babd99541175049ce7d4b69e0a2a9e05e0873305ba18"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: OperationsCfe: ClassTooLong \u2014 502 significant lines (blank, comment-only and punctuation-only lines excluded), 67 methods. The bar is 400 significant lines; this is 102 over it, 1.26\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e4013506a7716a48cb907558d7743a5eea0c4f3ad9a77c7d4093fa1ab8ece6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ResultMerger: ClassTooLong \u2014 502 significant lines (blank, comment-only and punctuation-only lines excluded), 15 methods. The bar is 400 significant lines; this is 102 over it, 1.26\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"50dcdd7df451105bc2c786ab25b944d62ef2f6660b923660d92168756b5d3638"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TypeSystem: ClassTooLong \u2014 501 significant lines (blank, comment-only and punctuation-only lines excluded), 43 methods. The bar is 400 significant lines; this is 101 over it, 1.25\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":"pkg/compiler/lib/src/inferrer/type_system.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bba5d3940f275f677b9472da66b3c8271ed7330010ee98aa750bf5a9bc99516"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CreateExtensionMethod.compute: MethodTooLong \u2014 compute runs 125 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"24eabcef2861fcafdcde0b38adeb367c4c4cbf0af1349bfd0d449d40fd4ca121"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LoopHandler.handleLoop: MethodTooLong \u2014 handleLoop runs 125 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/loop_handler.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc351d4a9211b8e0996952986892ca307227c675ad84b6a0f052fd57dbfed8a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BytecodeGenerator.getFunctionDeclaration: MethodTooLong \u2014 getFunctionDeclaration runs 125 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"92dc1870b38f32c07c9154bec452bc90bd168a6e94ceab27f86d19ee6d2d8752"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DevToolsServer.serveDevTools: MethodTooLong \u2014 serveDevTools runs 125 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd519eb62deb4230dd7583a4056abd0db4a6bbc854075a62c0e29a2c477dce7e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase._findExtensionMember: MethodTooLong \u2014 _findExtensionMember runs 125 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 25 over it, 1.25\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aa029512272598e26522e06cc07b88f1fdd123482ec233aeb3684f7e13e9ffc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: tools/gn.py: FileTooLong \u2014 623 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 123 over it, 1.25\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/gn.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee93b18ebb96eced3960ccf586df79af4460188e309d4259bf18f3ace22f8606"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: constants/constant_system.dart: FileTooLong \u2014 622 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 122 over it, 1.24\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/constant_system.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6bf494b9e66ac6b4f6eb44b726c0f17ec81c441649bec1b475c37ed123bda17"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: target/targets.dart: FileTooLong \u2014 622 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 122 over it, 1.24\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f30f5f08a68b6997c77b672789a6c3b37ef71d726a9e7538b8b55bc05e2a0a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartUnitOutlineComputer: ClassTooLong \u2014 497 significant lines (blank, comment-only and punctuation-only lines excluded), 29 methods. The bar is 400 significant lines; this is 97 over it, 1.24\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":"pkg/analysis_server/lib/src/computer/computer_outline.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c96d73f927b715e14ba6edbd49c7c7f8b507afe52c94b1a5b88b3ae323f065"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/context_manager.dart: FileTooLong \u2014 621 significant lines (blank, comment-only and punctuation-only lines excluded), about 81% of them inside a single declaration: ContextManagerImpl (174-1092). The bar is 500 significant lines; this is 121 over it, 1.24\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a85371d3dfa3022d2eadd17edc6b8fda7c37896df7732ad318eff63a74652e2c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/constant_pool.dart: FileTooLong \u2014 621 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 121 over it, 1.24\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/constant_pool.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2372a1f29f96ac98435ac274678b8cfbb965f4af42cde034d74a855a4356e189"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _ContextLocator: ClassTooLong \u2014 496 significant lines (blank, comment-only and punctuation-only lines excluded), 25 methods. The bar is 400 significant lines; this is 96 over it, 1.24\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":"pkg/analyzer/lib/src/dart/analysis/context_locator.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff705d45b8ea3da4793371f9484a11fdfc7156b16df25dfc8fb61076dda099fb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: GenericInferrer: ClassTooLong \u2014 496 significant lines (blank, comment-only and punctuation-only lines excluded), 21 methods. The bar is 400 significant lines; this is 96 over it, 1.24\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":"pkg/analyzer/lib/src/dart/element/generic_inferrer.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"555bcbf0a4e69a613c0cb4092d9a57f08401af96a9310b733f04111ef0914615"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CallInvocationResolver.resolve: MethodTooLong \u2014 resolve runs 124 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 24 over it, 1.24\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"630f8729fb31196be688cb22579b753f4c054700a06d2bdd8c8f7c56c5b102e1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: PropertyElementResolver._resolve: MethodTooLong \u2014 _resolve runs 124 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 24 over it, 1.24\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":1857}}}],"partialFingerprints":{"codehealthFindingId/v1":"27df5de074e60d16bab854ec3e241cdf9e4df7aa1375e223c70b939af744b52c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ClosureArgumentsToVtableEntryDispatcherGenerator._handleOptionalNamedCase: MethodTooLong \u2014 _handleOptionalNamedCase runs 124 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 24 over it, 1.24\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":3271}}}],"partialFingerprints":{"codehealthFindingId/v1":"afe8a429a27ea14957ca26940e8f7038c4ee40913d281b7d3a4147ecbc1d544e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Module.deserialize: MethodTooLong \u2014 deserialize runs 124 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 24 over it, 1.24\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/module.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"37deaf7d261ce15c81767ccdf379a2454aea57412b6595ff4b8d804e3bc12bef"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CodegenWorldBuilder: ClassTooLong \u2014 495 significant lines (blank, comment-only and punctuation-only lines excluded), 35 methods. The bar is 400 significant lines; this is 95 over it, 1.24\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":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"754e592a110524309bd8a4d5a82db19e0cf225a92e1d2fd6a6f3ae25cf1a8498"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DatabaseBuilder: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bda85fd190b8140e71bf0414186456105a998f9747877f952703a4697b4a7bd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _DartDocumentHighlightsVisitor: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_document_highlights.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5edaabfba63152d23820e263bf236760acdf9dd812948ab1b442cdbe068de04"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _GraphGenerator: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_dump.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"4647dcb59668712b8b79ed0efa9c5b4d4d4534710bff2e4169476e48f06b316c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartDevelopmentServiceImpl: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/dds_impl.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"c96c0348a639d036171d787192c3bbcd26634d9ed5f82788d915a3c831a77e2c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DevHandler: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/handlers/dev_handler.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"34a16e68e70974ceff730e2dde029703f3a92dccf7539b24161efacd424bacdb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExtensionDebugger: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/servers/extension_debugger.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4d4726c72d5ec90d871c799634d1af0b4c7c4c33e8ce5bf19986a6745d0fa6b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ObservatoryDebugger: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1407}}}],"partialFingerprints":{"codehealthFindingId/v1":"d87e763226d5876447769cfc4dc0e088d0d45dd01cae7d96d4c1a61854b6bed1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _HttpParser: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"f70fe48b417ac64ed60041f6faefbab8108ff29fc89848619dde14cb3ee84c86"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _LinkedHashSet: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"730705c4dad2ababb7bf443dd49855b01cda651adb505e723224e8e2db46a49a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JsLinkedHashMap: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e3b40e79a3fe34e912dee2ad65c8154bd15a2ae5922eff5a4e79fad361c7a94"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _Utils: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":3953}}}],"partialFingerprints":{"codehealthFindingId/v1":"b576a79c2500f88a44a6705107a77a2b2ffb4732e68d09c09ee938c650440d3a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ChunkedJsonParser: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c39958c1e9cbba303dc2ba56bb70b006ee80bcdcc336c4e836ba2626428cf91"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: File: TooManyMethods \u2014 37 methods. The bar is 30 methods; this is 7 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5d1e8b6ece98f11367ed57cc3365ff9575c28acb6e20e06e64e8eb468a5b2cd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: universe/member_usage.dart: FileTooLong \u2014 616 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 116 over it, 1.23\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf9975b167bcca26726c20851de404f68bc59fb493b982aa754d9d94a86152b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/template.dart: FileTooLong \u2014 616 significant lines (blank, comment-only and punctuation-only lines excluded), about 79% of them inside a single declaration: InstantiatorGeneratorVisitor (182-901). The bar is 500 significant lines; this is 116 over it, 1.23\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec67e6fa1344c23b49464ac7c35eb76ca801e6ddce0b80b14768986c87ae74be"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AsyncStateVisitor: ClassTooLong \u2014 492 significant lines (blank, comment-only and punctuation-only lines excluded), 64 methods. The bar is 400 significant lines; this is 92 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"c636dbf3760fb1b0f890294832959d323e6202ed3db4040f6bd9c2b35a2300fd"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompletionHandler.handle: MethodTooLong \u2014 handle runs 123 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"b80f1be011a1b1344de577ca7e00986453744f4260b669a72650964d9ced3fec"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ConvertToSuperParameters.compute: MethodTooLong \u2014 compute runs 123 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf75f6f98f28bb8fdeb3fed55b77079a9647248115d3aaaee4a1204e666e6357"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FragmentBuilder.visitEnumDeclaration: MethodTooLong \u2014 visitEnumDeclaration runs 123 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1447}}}],"partialFingerprints":{"codehealthFindingId/v1":"f023fc76fa1e87c0de11ebd98ca84498a449681b53b760c7a26ab44f4da3e911"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LateLowering._fieldCell: MethodTooLong \u2014 _fieldCell runs 123 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dd3c131bb995f9cdd257b7fd2cbb4121695e3f07ba6ae7408f6850a686d7f1b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BaseDebugAdapter.handleIncomingRequest: MethodTooLong \u2014 handleIncomingRequest runs 123 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/base_debug_adapter.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e154e503494131032070adabb03929facc9a52094097b822d1d28feea075722"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: WasmTarget.performModularTransformationsOnLibraries: MethodTooLong \u2014 performModularTransformationsOnLibraries runs 123 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/target.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fdd0c0c6d8871d773d4561b4ebb49f33b81e2f3556a90a6fdb2e9e88c7fc12a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AbstractOrExternalFieldEncoding.buildOutlineNode: MethodTooLong \u2014 buildOutlineNode runs 123 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 23 over it, 1.23\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc631d0a7aad54227c823bf0be714af4a44539c89a9a83123047dbf7b1f74a81"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_common/js_string.dart: FileTooLong \u2014 614 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 114 over it, 1.23\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fa6b0e7a7a178714d32d2653af61efc4afc64e9e1e15313d02536a0b702e7cf"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AnnotationVerifier: ClassTooLong \u2014 491 significant lines (blank, comment-only and punctuation-only lines excluded), 23 methods. The bar is 400 significant lines; this is 91 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06983da2cbed509451a510ad176080845f92d53390844cd2538a12cdf5e5732"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: HInstructionStringifier: ClassTooLong \u2014 490 significant lines (blank, comment-only and punctuation-only lines excluded), 102 methods. The bar is 400 significant lines; this is 90 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/tracer.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c09ab0b3eebe3ed227187c7bc3fda26184b1c249a459683e7b37a8a45c0f14"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: LibraryBuilder: ClassTooLong \u2014 490 significant lines (blank, comment-only and punctuation-only lines excluded), 29 methods. The bar is 400 significant lines; this is 90 over it, 1.23\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/library_builder.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"19017a591a72561ba82fb090ce58305523fcc1cf4e761c3d109af2dff054a80b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InstantiatorGeneratorVisitor: ClassTooLong \u2014 488 significant lines (blank, comment-only and punctuation-only lines excluded), 86 methods. The bar is 400 significant lines; this is 88 over it, 1.22\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"84bc436215ca2f090bc048c7b5ac198884a87d1524d31f458db26fbb07772398"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ModifierContext: ClassTooLong \u2014 488 significant lines (blank, comment-only and punctuation-only lines excluded), 33 methods. The bar is 400 significant lines; this is 88 over it, 1.22\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4fa575a52de579b72b3a81fc1b97f70581d76d3978e9d85531ada44c72af102"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ImportLibrary._importLibraryForElement: MethodTooLong \u2014 _importLibraryForElement 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":"pkg/analysis_server/lib/src/services/correction/dart/import_library.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1bd778b376a05256bb5e56b8ff3e2b17be19b0d86748e89e7237d5086e557d4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CodegenImpactTransformer.transformCodegenImpact: MethodTooLong \u2014 transformCodegenImpact 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":"pkg/compiler/lib/src/js_backend/impact_transformer.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"019b1d5c1eb78b7380d9732d01bb8229847db674f70b392cd5cc41fea902310e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: OutlineBuilder.endTypedef: MethodTooLong \u2014 endTypedef 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":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":3897}}}],"partialFingerprints":{"codehealthFindingId/v1":"41c87c193dfc6a21571dcea975fea76aeeee10f60b188c1922834199709f292b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitExtensionCompoundSet: MethodTooLong \u2014 visitExtensionCompoundSet 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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":2309}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c010d7e0742569de07983cf161496e979e6f060755c39744c100d072b10ccd9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitDotShorthandPropertyGet: MethodTooLong \u2014 visitDotShorthandPropertyGet 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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":14092}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6c8932509271cc02e5f2c9065c5b502355d09f0015f2aad3c66d48091f07c1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: source/source_property_builder.dart: FileTooLong \u2014 609 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 109 over it, 1.22\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_property_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"02aafb0940a2fdfde674cc9c8c59d421f1a44e2196e4367a0683235fc35e8afa"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ComputableAbstractValueDomain: ClassTooLong \u2014 487 significant lines (blank, comment-only and punctuation-only lines excluded), 123 methods. The bar is 400 significant lines; this is 87 over it, 1.22\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/computable.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d3ce8bcb9cedf0a1690323b07156da738e3039e6d088b6d035d42e5a5ce5cf"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Arm64Constraints: ClassTooLong \u2014 486 significant lines (blank, comment-only and punctuation-only lines excluded), 54 methods. The bar is 400 significant lines; this is 86 over it, 1.22\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"d09b786c075adb5fc348e0ae386ea4242e5ff4e89894ede695d2ed954e0aaf58"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: resolver/named_type_resolver.dart: FileTooLong \u2014 607 significant lines (blank, comment-only and punctuation-only lines excluded), about 77% of them inside a single declaration: NamedTypeResolver (30-701). The bar is 500 significant lines; this is 107 over it, 1.21\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab334c222e63076e5b188f0fcd0766538b5655c7b25c367bc4b4e487f31e1ffd"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartUnitHighlightsComputer: ClassTooLong \u2014 485 significant lines (blank, comment-only and punctuation-only lines excluded), 31 methods. The bar is 400 significant lines; this is 85 over it, 1.21\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":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a043795cb02d5743027b25bfe43384ddc99f542f1a366687447ff549642644"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SystemHash: ClassTooLong \u2014 485 significant lines (blank, comment-only and punctuation-only lines excluded), 22 methods. The bar is 400 significant lines; this is 85 over it, 1.21\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":"sdk/lib/internal/internal.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"499a517b483041737d91899956bfd8c3d32102c613664669f902c22b6c6636c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/dispatch_table.dart: FileTooLong \u2014 605 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 105 over it, 1.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dispatch_table.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e445c4081d75cd19fc226541d3d741d64bf3228fb10ea2ae12f6cfc34ae94df4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AssignmentExpressionResolver.resolveIfNull: MethodTooLong \u2014 resolveIfNull 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":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"b253b30e8a35f538872aabc7b89bae85c2dbd2a348f77f451d53919512241fb3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AstBuilder.endFormalParameter: MethodTooLong \u2014 endFormalParameter 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":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":1877}}}],"partialFingerprints":{"codehealthFindingId/v1":"cff082c6c7f8cddb4b12f4b27d7d84f715ba364620531c9b3ecc070f12191348"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Component.read: MethodTooLong \u2014 read 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":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":1564}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5bdf24cd3abc467a560fdb00c0f4f5604d73e83fee535b51167cdcabe93ba55"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ClassIdNumbering._number: MethodTooLong \u2014 _number 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":"pkg/dart2wasm/lib/class_info.dart"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"59377dec05ce80c247e63b422b213e9d47d42daa12b081cec690b95e23889998"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AnalyticsManager: ClassTooLong \u2014 483 significant lines (blank, comment-only and punctuation-only lines excluded), 36 methods. The bar is 400 significant lines; this is 83 over it, 1.21\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":"pkg/analysis_server/lib/src/analytics/analytics_manager.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09a16d17eca720dc39661fb38e391651cc083a0f0a1f2762d639a1e63f7f0e6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/resident_frontend_server.dart: FileTooLong \u2014 603 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 103 over it, 1.21\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/resident_frontend_server.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d53ea2c39d1414eade26b81e488388d584c4bc14be64f3705d2127a4f8f5dab"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DocCommentBuilder: ClassTooLong \u2014 482 significant lines (blank, comment-only and punctuation-only lines excluded), 16 methods. The bar is 400 significant lines; this is 82 over it, 1.21\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":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fcb75f5637f2931317abfedf5ab0f367f35550d8a7451458653b2a1e4802592"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/databasebuilder.py: FileTooLong \u2014 602 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 102 over it, 1.20\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5848edcb8472b82ef3a1cc8eded9bc753cc6f0f326de76b2578a3446d691a335"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: serialization/sink.dart: FileTooLong \u2014 602 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: DataSinkWriter (57-1239). The bar is 500 significant lines; this is 102 over it, 1.20\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/sink.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f6d9c2a32e87f999dbba129667e0812c8c9002d02cdb3972cf52d433e36b4ed"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HtmlDartGenerator: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4687ed92c1acba4f5fed1abd4098e7a393c01f60590d8df80d4c32b02400b01"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SharedInferenceLogWriterImpl: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/shared_inference_log.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9b50ece7d6de22526764209383a3edffc64ad415ce1f7676e93371a9515292"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AnalyticsManager: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analytics/analytics_manager.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"26e9ba079e9c00e374e29b8cf1cd31332b5e13d4a645b1b7eb089215e389d311"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BinaryReader: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/binary/binary_reader.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff148b94f9fc8b0871839e856af019642dbe370091f1d52e0f823be2b6b97f87"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BinaryWriter: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/binary/binary_writer.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ce6d6dcb7683008c1d5ca5cd64411384c6866c7e8c34a0e48dd9933f735a282"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ElementEnvironment: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":1426}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac014e94d1b04afc97f0f38d9fbd514e109c031f612816599e1905d4f5a2a23d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartTypes: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1758}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d4fd75e8bd79f9b5cac8ffa5baa5e08650b7ba0b3ce26be12b3d68a0910a42"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeInformation: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6be2c9a3b3dc17d0f4a48207be9b120ac53c6177a1ee1b648d87615a0a702bd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JsToElementMap: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d79ed2f7278dfeb373ee47c0ff0bcfeadbad3b76a8d707e604d0eadcbe5969"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BaseDebugAdapter: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/base_debug_adapter.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"6daf5cdb33ff7c71c0f2bf964121e4a18cbc8d93b6d0d02ce1476c4f058cbf35"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StatementConstantEvaluator: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":6157}}}],"partialFingerprints":{"codehealthFindingId/v1":"568b2a5e60722b960fbbbdb5693ccb4e4137ba435fdf46b889f40a9305844ff4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: A: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/override_inference.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"a977195620611f7d7c1bcae0e0b8aa2bbafcb33eae56dea5e10b12636078b905"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: B: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/override_inference.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc1421c1d58bd5c91308144a48388b77b1e273f44efc3675e8b7b1d7903e1c75"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: F32x4: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/simd.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"cce46e850378717c0eb61a06172834950f77f4bc8220f7bafea5beeaef71d2d5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _RandomAccessFile: TooManyMethods \u2014 36 methods. The bar is 30 methods; this is 6 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file_impl.dart"},"region":{"startLine":803}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9215511a9c28f3cee833f030d1a20cc58bf31d0bdeb357f124a7405c8f78990"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Evaluator._visitExpression: MethodTooLong \u2014 _visitExpression runs 120 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 20 over it, 1.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d14748217fa7fa909186dc77e4ce6a3b2d8c69816f0855ad6d4300b69dd9fb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CallbackSpecializer._createFunctionTrampoline: MethodTooLong \u2014 _createFunctionTrampoline runs 120 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 20 over it, 1.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/js/callback_specializer.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"b99b9462f33b42e5d643bf989aa21e29a2314add313f902a457c4f36a3dd0015"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ClosureDynamicEntryGenerator.generate: MethodTooLong \u2014 generate runs 120 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 20 over it, 1.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":2955}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f26035ed59852b4411d82ec618ec4fff2b40c3ece8282f81124e5ba7fb713c3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceLoader._createSourceCompilationUnit: MethodTooLong \u2014 _createSourceCompilationUnit runs 120 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 20 over it, 1.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"28dba07333c94c2172ce37d29d2e4f255eff48b530a2fcf22c9f390d0687b29e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase._inferExtensionInvocation: MethodTooLong \u2014 _inferExtensionInvocation runs 120 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 20 over it, 1.20\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2667}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ba6c89c8295fe3487f3d775fa9e1ea50a13a2f5a605f04b59cf014bb284250"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: exhaustiveness/shared.dart: FileTooLong \u2014 599 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 99 over it, 1.20\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/shared.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0810273b4417f8b67ea8f1ced42066e8069679cb314caffeb419df5ecd38779"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: GatherUsedLocalElementsVisitor: ClassTooLong \u2014 479 significant lines (blank, comment-only and punctuation-only lines excluded), 54 methods. The bar is 400 significant lines; this is 79 over it, 1.20\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c9277292bc1bf5c10860216ea83ddefa482734186b14b8af4a6d87f62e8477"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_backend/runtime_types.dart: FileTooLong \u2014 598 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 98 over it, 1.20\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9648bf5d3a9ad959dd6bba81f9499a1ae1ba9d7d01acaf0e7466f81ac95900e7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: debugging/instance.dart: FileTooLong \u2014 598 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: ChromeAppInstanceHelper (19-930). The bar is 500 significant lines; this is 98 over it, 1.20\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/instance.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"527ea30018cfac355e56f36f48ce6640cfd7917f02d197582735edf712c1dbc5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MethodInvocationResolver.resolve: MethodTooLong \u2014 resolve runs 119 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 19 over it, 1.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c2ad7ce6f720d03725205efa4f0282ed8110d3364e1ca4ad319e44edd8b33e9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitAnonymousMethodBlock: MethodTooLong \u2014 visitAnonymousMethodBlock runs 119 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 19 over it, 1.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":9366}}}],"partialFingerprints":{"codehealthFindingId/v1":"237c2ee51be1d8c9eb8abe5341dce2bb64de49d34859de6ed6aa4b2258b2dcfa"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TypeEnvironment.computeTypeShapeCheckSufficiency: MethodTooLong \u2014 computeTypeShapeCheckSufficiency runs 119 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 19 over it, 1.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b34de249adf5036f2423c7b77fc755b521af6b9726e395445bb1d272b1161d4"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FfiNativeTransformer.visitProcedure: MethodTooLong \u2014 visitProcedure runs 119 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 19 over it, 1.19\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/native.dart"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"5906da566760bca357214f058d6bc3e674218d995088cd57e8afd547d6588a4a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: native/behavior.dart: FileTooLong \u2014 594 significant lines (blank, comment-only and punctuation-only lines excluded), about 70% of them inside a single declaration: NativeBehavior (81-770). The bar is 500 significant lines; this is 94 over it, 1.19\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1cb393dbe2e86ce01d2ab978457274c3be6684edf2b791202df2a6e4f5db9e6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/protocol_converter.dart: FileTooLong \u2014 594 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: ProtocolConverter (24-896). The bar is 500 significant lines; this is 94 over it, 1.19\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"869990a6f9deee62011c599c0fd9b86aab169c7f58b40b9771997cc8f92bd4f1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: deferred_load/dependencies.dart: FileTooLong \u2014 594 significant lines (blank, comment-only and punctuation-only lines excluded), about 69% of them inside a single declaration: _ReferenceDependenciesCollector (205-849). The bar is 500 significant lines; this is 94 over it, 1.19\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/deferred_load/dependencies.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"745c17b80acfe818365c333ae2b827845e3aba503f985b2f6b69120c86f91b1a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: async/future_impl.dart: FileTooLong \u2014 593 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 93 over it, 1.19\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/future_impl.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"97a92c0292f6af4fcb2c4009f724b022f2b25255d2552338aaa6ebc5fe85817f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ssa/tracer.dart: FileTooLong \u2014 592 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: HInstructionStringifier (150-832). The bar is 500 significant lines; this is 92 over it, 1.18\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/tracer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b06fb30c2585c28ec0c5fa7e367bffa025cec3e3dd7068eba2da6d0962f8be7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: src/vm_service_interface.dart: FileTooLong \u2014 592 significant lines (blank, comment-only and punctuation-only lines excluded), about 72% of them inside a single declaration: VmServerConnection (1355-1883). The bar is 500 significant lines; this is 92 over it, 1.18\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service_interface/lib/src/vm_service_interface.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"97f80b6f9271fda9240de39f50a7b500244a3b6c1d0fd8486e730865ae3d06ec"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: private/debugger.dart: FileTooLong \u2014 592 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 92 over it, 1.18\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"96681241efbc8ef84b71ccfb130ef5b4aac1cc0bfbeb6d2de0803e3a9ffdccd7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: RegularFieldDeclaration: ClassTooLong \u2014 473 significant lines (blank, comment-only and punctuation-only lines excluded), 59 methods. The bar is 400 significant lines; this is 73 over it, 1.18\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":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"fecaab2c8430b978cc2700cbe05aa9cfb4f9d38bd6c80a8b5c0164afab83c42e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ffi/finalizable.dart: FileTooLong \u2014 591 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 91 over it, 1.18\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/finalizable.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be15609d01ecdb530b27046224f37936e6f810c70e05c150ed7dc55acf216743"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: computer/computer_outline.dart: FileTooLong \u2014 590 significant lines (blank, comment-only and punctuation-only lines excluded), about 84% of them inside a single declaration: DartUnitOutlineComputer (15-668). The bar is 500 significant lines; this is 90 over it, 1.18\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_outline.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2280ad4487fb43211a28b2b736886be9e4a132346dec39eeb522269f591482c1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _InitializerBuilder.processInitializers: MethodTooLong \u2014 processInitializers 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":"pkg/front_end/lib/src/kernel/resolver_helpers.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"533f74c218ca3f012a7b68b4e6ac83cac38dae90d883645a621ea2286aa612ef"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: testing/type_parser_environment.dart: FileTooLong \u2014 589 significant lines (blank, comment-only and punctuation-only lines excluded), about 62% of them inside a single declaration: _KernelFromParsedType (340-856). The bar is 500 significant lines; this is 89 over it, 1.18\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/testing/type_parser_environment.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d628a5ef667ea83f1ef2895708b6189f96ffeed97120b1201c756357d951871e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ir/flow_graph_builder.dart: FileTooLong \u2014 587 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: FlowGraphBuilder (33-902). The bar is 500 significant lines; this is 87 over it, 1.17\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/flow_graph_builder.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3867745332483c1e0d9c2f7353b8dc933d4777cd7d4028c3e30d804cf39c886a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: NamedTypeResolver: ClassTooLong \u2014 468 significant lines (blank, comment-only and punctuation-only lines excluded), 19 methods. The bar is 400 significant lines; this is 68 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bfd4039210fec1dc5b41894b7772fbb5407b98228372a8989aecbe8e9ed0cad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/devtools_server.dart: FileTooLong \u2014 585 significant lines (blank, comment-only and punctuation-only lines excluded), about 97% of them inside a single declaration: DevToolsServer (25-845). The bar is 500 significant lines; this is 85 over it, 1.17\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d5fea02da3ac00b9c2eecf38711437d04c434f2d00ae9dee24830f3df46458"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: debugging/debugger.dart: FileTooLong \u2014 585 significant lines (blank, comment-only and punctuation-only lines excluded), about 68% of them inside a single declaration: Debugger (50-751). The bar is 500 significant lines; this is 85 over it, 1.17\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d509f4fcc93763279553ee342ab8e65a379b847650fe4a390fd6b65ce8ace3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LspClientCapabilities.LspClientCapabilities: MethodTooLong \u2014 LspClientCapabilities runs 117 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/client_capabilities.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"90629ac2c3c5940fc058a94f9be8f95145ae5187976aa1bf6d7d2132d71f1db5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GenericInferrer.tryChooseFinalTypes: MethodTooLong \u2014 tryChooseFinalTypes runs 117 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/generic_inferrer.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbc5a27e2accb7db7df3b4c2061725476dfa7b5c2c47b2cd2485427ad5247821"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartdevRunner.runCommand: MethodTooLong \u2014 runCommand runs 117 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 17 over it, 1.17\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/dartdev.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"68edb4a32bb7e1fd9a86e3a828197b7873dd90af83e9d50694009743e0c28cdb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ExtractMethodRefactoringImpl: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c1410a1975a18f5e9ba1b394d767e84eb4b07c6c9dcb9cc86aa7775f7bfd897"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FileState: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"c840b323515ad29e756de11f041ea54d891b1191eab72826b9ac1a6f770bfe51"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ElementImpl: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":2067}}}],"partialFingerprints":{"codehealthFindingId/v1":"799ced0463120660d6fad4499e4d17b1a76a37c4ec60c62a5157b6f44b7ca27b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ScopeBuilder: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/computed_scopes.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"f84ab04f146e71ff7fc22975d4fda0f41fe315e1da784f97406bf95efe0c76ab"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: UnionTypeMask: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5978308ac656b09dd4409527b66aa8222eec3c81ad1b1662b6bba047f427c8a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ProgramBuilder: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"d295a26b45e8609ad42f2784621b8a3d1c42939b41ed16b2fc03ef3658772a3a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CodegenWorldBuilder: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fd1cb83d04a8072980322b8bdfd8bf5f4ddec2d1d0bf0825b8c98d25c12e13b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RemovingTransformer: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/visitor.dart"},"region":{"startLine":1952}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d4897b93dc2cf5b1bddd90ba19505c5d1388558219c2361b3e1159f82966a1f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LinearScanRegisterAllocator: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"431de3cceffcbe3ab8d4bc907c1373efbdeb71749336e5d8f61f1e0c9490325c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: String: TooManyMethods \u2014 35 methods. The bar is 30 methods; this is 5 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/string.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"c24bd4691c1ecd3467955d1e5d5f03187c3b54333fc974b81fed276db77adc29"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: base/processed_options.dart: FileTooLong \u2014 583 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 83 over it, 1.17\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dcb1c98f102fc545f1a0475ad483c24fbbbf30372ec5a22e037253d0e913778"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: testing/type_parser.dart: FileTooLong \u2014 583 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 83 over it, 1.17\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/testing/type_parser.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e15c97332f51118bf3f74b6834dc39009082119bf70e0c413ac14cd7c44cf8f1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CompilerOptions: ClassTooLong \u2014 466 significant lines (blank, comment-only and punctuation-only lines excluded), 22 methods. The bar is 400 significant lines; this is 66 over it, 1.17\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"2acd91277208ec2b774b9707e74902d01b9f60d43d3524c9cd566e34dac82db5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_interop/js_interop.dart: FileTooLong \u2014 582 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 82 over it, 1.16\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":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f673da3f1b2abb2e5a4c8ed02d33e3dc1c51fbbbf94c40856e6164922701636"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: StaticUse: ClassTooLong \u2014 465 significant lines (blank, comment-only and punctuation-only lines excluded), 44 methods. The bar is 400 significant lines; this is 65 over it, 1.16\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":"pkg/compiler/lib/src/universe/use.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b7b97cf705382bf7e3314408a5db5a269fae671f76c06dd4ccd44cdeb0dc81"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Analysis: ClassTooLong \u2014 465 significant lines (blank, comment-only and punctuation-only lines excluded), 21 methods. The bar is 400 significant lines; this is 65 over it, 1.16\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":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"691131b27eb783af36dba8e90b9bb33b18187bf68b603ba1c868b065e764439d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: setter/encoding.dart: FileTooLong \u2014 580 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 80 over it, 1.16\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":"pkg/front_end/lib/src/fragment/setter/encoding.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da97791b4e0dfc43cb04374a05d3f468bd47bad7a8b4a23a18179b29e8747fa"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InheritanceManager3._getInterfaceClass: MethodTooLong \u2014 _getInterfaceClass 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":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d41aa0f1c0d7f62937cde2e9abee73ac556eb04f98536a057209614995239f7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _InitializationFromExperimentalCache.loadLibrariesFromCache: MethodTooLong \u2014 loadLibrariesFromCache 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":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3663}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3d34ebfe8e208614c84ec1012e9b5688eace2d328c6944ef33043d80d09c8ca"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/expression_compiler_worker.dart: FileTooLong \u2014 579 significant lines (blank, comment-only and punctuation-only lines excluded), about 74% of them inside a single declaration: ExpressionCompilerWorker (77-743). The bar is 500 significant lines; this is 79 over it, 1.16\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler_worker.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e74b7828d312985c5b22ea362006e2d938245de5fb2be8d10b6145be230cca91"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ExpectedCompletionsVisitor: ClassTooLong \u2014 463 significant lines (blank, comment-only and punctuation-only lines excluded), 75 methods. The bar is 400 significant lines; this is 63 over it, 1.16\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":"pkg/analysis_server/tool/code_completion/visitors.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"27ef0fb796664ecc0d340f115f68598057f8e58badc6d531def4aeb8af10764f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CodeViewElement: ClassTooLong \u2014 463 significant lines (blank, comment-only and punctuation-only lines excluded), 29 methods. The bar is 400 significant lines; this is 63 over it, 1.16\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":"pkg/observatory/lib/src/elements/code_view.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d21371bc92e8bfe13309e572981669471c138cc91184ecaf3b76309ea070d4"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: WebSocketProxyService: ClassTooLong \u2014 463 significant lines (blank, comment-only and punctuation-only lines excluded), 24 methods. The bar is 400 significant lines; this is 63 over it, 1.16\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":"pkg/dwds/lib/src/services/web_socket/web_socket_proxy_service.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"252490d8e3725f9a0fe3406c2bee703b797f3fa579cdbb61745f50076c273f0e"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TypeArgumentsVerifier: ClassTooLong \u2014 463 significant lines (blank, comment-only and punctuation-only lines excluded), 22 methods. The bar is 400 significant lines; this is 63 over it, 1.16\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":"pkg/analyzer/lib/src/error/type_arguments_verifier.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b91837bc4ba7c0fe1f0ebc03cf88163dcb1e77c09a88f90e09fbf26a9a4cecf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/messages.dart: FileTooLong \u2014 578 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 78 over it, 1.16\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":"pkg/analyzer_utilities/lib/messages.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9be043ceb7bf40630bfffdad26e97a21bc221d65f2c7b04b1db0727e7a30479d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/assembler.dart: FileTooLong \u2014 578 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: BytecodeAssembler (46-864). The bar is 500 significant lines; this is 78 over it, 1.16\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/assembler.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"26d4747b07018b935aa6db7e54f4e4c96d59d294afa3af57ae23c3e4905898b7"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ExitDetector: ClassTooLong \u2014 462 significant lines (blank, comment-only and punctuation-only lines excluded), 79 methods. The bar is 400 significant lines; this is 62 over it, 1.16\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":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"3524b36e274bf10cee23b6bd42a7be72064d91fd8de9feff35e2ce90d50f3d72"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: OnlineJavaScriptTracer: ClassTooLong \u2014 462 significant lines (blank, comment-only and punctuation-only lines excluded), 42 methods. The bar is 400 significant lines; this is 62 over it, 1.16\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":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"02ff93fe4e03da6715cf12c1ff672e7e53cef2ea30a117115b182ab20216c708"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/resolver_helpers.dart: FileTooLong \u2014 576 significant lines (blank, comment-only and punctuation-only lines excluded), about 77% of them inside a single declaration: _InitializerBuilder (175-788). The bar is 500 significant lines; this is 76 over it, 1.15\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver_helpers.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e0f61bf81d43527ff4da87594148489d89aaa02c5a43419c9a671f8c443d85"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ffi/ffi.dart: FileTooLong \u2014 576 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 76 over it, 1.15\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":"sdk/lib/ffi/ffi.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f79ea8367c4175b53a548e1e91faad23bdfbaef0c7a2c7ec4c20f4357658290b"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _InfoBuilder: ClassTooLong \u2014 460 significant lines (blank, comment-only and punctuation-only lines excluded), 33 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":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe7cbe1b0c20c8d115280820aad268622a211fe2b79f90eb1ef21876e58397c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inferrer/computable.dart: FileTooLong \u2014 575 significant lines (blank, comment-only and punctuation-only lines excluded), about 85% of them inside a single declaration: ComputableAbstractValueDomain (51-698). The bar is 500 significant lines; this is 75 over it, 1.15\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/computable.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"774249c25d3cd43b98984b28805e24b6f2d535defe4b541f17bb8b749906135b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dartfuzz/gen_api_table.dart: FileTooLong \u2014 575 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 75 over it, 1.15\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":"runtime/tools/dartfuzz/gen_api_table.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"37abc72d6010918952ddbfcf90b0d742af934a04a0c78a86b64170f31718ec54"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FileState: ClassTooLong \u2014 459 significant lines (blank, comment-only and punctuation-only lines excluded), 35 methods. The bar is 400 significant lines; this is 59 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":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"b014cc0de7ef86f96cd31bc37c37995533d1f9fe1b9477c8f7823b103a575aa4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/create_extension_member.dart: FileTooLong \u2014 573 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 73 over it, 1.15\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":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"64828921881b4c830f7b27401322c51628f64717b4bf0e32c31d33a541af725e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: testing/il_matchers.dart: FileTooLong \u2014 573 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 73 over it, 1.15\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":"pkg/vm/lib/testing/il_matchers.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"64943b044d2c92524d8293d27614a3cf0c55dd80db7b440adeb3e1b3e9309b9f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CombinedMemberSignatureBase: ClassTooLong \u2014 457 significant lines (blank, comment-only and punctuation-only lines excluded), 29 methods. The bar is 400 significant lines; this is 57 over it, 1.14\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":"pkg/front_end/lib/src/kernel/combined_member_signature.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"d81f012acf9b95dd790086b42bab1d26e800e0771f78b7e7841edb98c294343e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/systemnative.py: FileTooLong \u2014 571 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 71 over it, 1.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a79e145badc50545d27e823c93f5ec061d61aa1a64c23e690e6712e6e2bf02"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: micro/resolve_file.dart: FileTooLong \u2014 571 significant lines (blank, comment-only and punctuation-only lines excluded), about 78% of them inside a single declaration: FileResolver (159-916). The bar is 500 significant lines; this is 71 over it, 1.14\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/micro/resolve_file.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef8690cc9147f10a217474b32d1677beaf22e7ef8440a38fba588e98ef70ba3f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary2/reference.dart: FileTooLong \u2014 571 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 71 over it, 1.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/reference.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5617af9f51d0941dfc99960515d57270ccb0e1d26d10114f6be99a6bf5817b4"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analysis/context_locator.dart: FileTooLong \u2014 570 significant lines (blank, comment-only and punctuation-only lines excluded), about 87% of them inside a single declaration: _ContextLocator (106-998). The bar is 500 significant lines; this is 70 over it, 1.14\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_locator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a5cc7dd68bb335e34f0a2475946a29436621265b27824e0234eb2f3fc76262"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ConvertToInitializingFormal.compute: MethodTooLong \u2014 compute runs 114 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_initializing_formal.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"c09b7710d127ce89542db1f93517e1e1c6cc5b8b0b98df75a921c9362f83f9d2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AstBinaryFlags.encode: MethodTooLong \u2014 encode runs 114 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_flags.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c234a07a105c5836f0ea95b0ca6ff2b5b97c8e7e438ad078c51e6bdaa1398ff"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceClassBuilder._computeInterfaceSubstitution: MethodTooLong \u2014 _computeInterfaceSubstitution runs 114 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1627}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d13e40df243c5b24be384d1ece70f44a0164aa3d2744bbbf0285ce12fe59ce"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceTypeAliasBuilder._checkCyclicTypedefDependency: MethodTooLong \u2014 _checkCyclicTypedefDependency runs 114 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 14 over it, 1.14\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"52ab0820f1c5756f2e494dfaae7166783316ddc207031d22feee0680e130fcfa"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/type_environment.dart: FileTooLong \u2014 569 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 69 over it, 1.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"be9fa5bfffb48416c7638f8e70ebf059ce46a9040bf1ca7f7e10bd92bae1c801"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: hierarchy/class_member.dart: FileTooLong \u2014 568 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 68 over it, 1.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf84d63474cd3080e33bf36b9ee36ed1865b24791c70316b08cb535585ddc7ca"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: transformations/dynamic_interface_annotator.dart: FileTooLong \u2014 568 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 68 over it, 1.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/dynamic_interface_annotator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e9a413b928f6879af3c45a795ac4e7c38e4ccd8ede785c95e01fd9549130fd0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: collection/splay_tree.dart: FileTooLong \u2014 568 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 68 over it, 1.14\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/splay_tree.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0705051090c6f978880f3eb5f375e800bc94f56ecf212212a8fb0887b1e4d27c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _Utils: ClassTooLong \u2014 454 significant lines (blank, comment-only and punctuation-only lines excluded), 50 methods. The bar is 400 significant lines; this is 54 over it, 1.14\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":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3aaef7a822e5f6c7dbd9b989a1c4ddd47b0cd7a4a09acd358600a9d342a4234"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Token: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/_fe_analyzer_shared/lib/src/scanner/token.dart"},"region":{"startLine":1146}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aca47673a187e0a167d7e8a6eb1ed236bca0ba3fa30111566040c826872ce63"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Token: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/token.dart"},"region":{"startLine":1398}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca873783b70744a5999b0820df83f51bd71b9be7bb23efde74d412bd4ad3078f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MetadataImpl: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\u00D7 the bar. Most of these members implement dart.Metadata (30 of 34 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":8443}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc6d40983ede450996e003d2d98963462d11d3862176878b3e8fc9cfa44320dd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeImpl: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":1480}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca51d8203ff0f41f7efb4587c96bbf34c8cd3043e54f8ef9885ee12c7dc374b3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ScopeContext: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/analyzer/lib/src/dart/resolver/scope_context.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"348e8f85ff691e1b1d9e8a8a3efa33da7cccf57f687889c0d45db301517674a6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LibraryManifestBuilder: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"0529ec5547007fee1f686b29b5416d252d3807308342313ae1f47d714aae042b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Linker: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/analyzer/lib/src/summary2/link.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ebc26105a5844865664c3d50f47efdc14a13d275317cc25a217ba4c8486aaca"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RecordTypeMask: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d835662b949d6f95e404c1b805ef2349cfc39a60f584ca19ba68d383c2464ff"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ModularNamer: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1807}}}],"partialFingerprints":{"codehealthFindingId/v1":"367ab7329d7cb402694e2165efc530cbb7c245713fd8aae6d74d456f0930d58f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LocalsHandler: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/compiler/lib/src/ssa/locals_handler.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"95ee19495e12121bd533e547346ec2ebdf1635436af784385ce66c0e354703f2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HBasicBlock: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf92c3a10e42c4bb84385f8a5fe69920796cb9484661ee1b545bd4ef0562ba94"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _NodeVisitor: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/dart2bytecode/lib/object_table.dart"},"region":{"startLine":2145}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce3bc35243f1c128738367e1a081e2c679f4dc1a533e09307b3d06fb4e4205f3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ClosureLayouter: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/dart2wasm/lib/closures.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4b29839259f8f2ad537135097c82e48b1812b02e1c43d135b08caaa9300e7a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ResourceProviderFile: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0c7586f6101afe2b8206a45751e23627ed3877f07b697eedde5697d94196df2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ChromeAppInspector: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/dwds/lib/src/debugging/chrome_inspector.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"c402890cd17e24e31025afc931a4fba2365f728259b2bf2ae30a2483808fbb4f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _SnapshotGraph: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a94c42b102ccf0b5d7e5acf9e789803cd276ccce3a58271dec7d3af0b2e6df"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: VM: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c8d9eeb741680f3fb5ed0e0b03fe03eff94cde32c4c10595fb7e6dc677ece2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NativeFloat32x4: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1228}}}],"partialFingerprints":{"codehealthFindingId/v1":"39db270fc88e9a4666fbe84861e779abdd08395a40f3827093965e9f89d7f582"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NativeFloat32x4: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":1520}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ae015c707be383ffab7adb7daa87fa474fda1b3265024d00209a12077f85a3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GrowableList: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"sdk/lib/_internal/wasm/common/list.dart"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"668938d2198cf486cbbf383900f557d2cb8a489edcd9114a74fa0524066fb501"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ListQueue: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"sdk/lib/collection/queue.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"73889de8bb1b409573281c6122bf22ed1ad74b3655254776f70ad5ec5b3492cd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Float32x4: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"sdk/lib/typed_data/typed_data.dart"},"region":{"startLine":2663}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a0f10326b929838f994d82712681ce011531cd0795b5774563ac3c7b6d3e105"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KeyEvent: TooManyMethods \u2014 34 methods. The bar is 30 methods; this is 4 over it, 1.13\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":"tools/dom/src/dart2js_KeyEvent.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b574041c7067af47022402d6222c43c4f560057ca01be7523568f312d1c3c08"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fine/ab_mutate.dart: FileTooLong \u2014 566 significant lines (blank, comment-only and punctuation-only lines excluded), about 78% of them inside a single declaration: MutationRunner (135-733). The bar is 500 significant lines; this is 66 over it, 1.13\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/fine/ab_mutate.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be299aa77322e6badd294ee390ed752169d8dc038ff5a4c31001bc9ab89eea7"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompletionGetSuggestions2Handler.handle: MethodTooLong \u2014 handle runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestions2.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"caab63222a53cefe40efb2263929a8e247de3b5bd0b83ae9efd136dfe078615f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompletionResolveHandler.resolveDartCompletion: MethodTooLong \u2014 resolveDartCompletion runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca52278f7eeca73b8a29783043b05a0655cbb7249cef0a50392708dcd08107f1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RenameHandler.handle: MethodTooLong \u2014 handle runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"395f5adcab1cef407f73c1d7617f9bc3bc140beced2afabe3f9285ecb88808fc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AddFieldFormalParameters._computeFromPieces: MethodTooLong \u2014 _computeFromPieces runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_field_formal_parameters.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6ca29ec5438eff43ad1460ccc570ca84a1b2ed7fe9188732ca4f5189bbaf40"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ConstantVisitor._getConstantValue: MethodTooLong \u2014 _getConstantValue runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2011}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea705d6527226ef0cd0586d318f20ac3e78ff66a47d3df00a869e27d8f0f5d5e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnnotationResolver._resolve: MethodTooLong \u2014 _resolve runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"7416583dfed8bccbb83d15001f1ca9006978583b7e44118d0a2193f7a44a8073"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ConstructorDeclarationMixin._finalizeSuperInitializingFormals: MethodTooLong \u2014 _finalizeSuperInitializingFormals runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c6c24546e6cd5aa38c0555864426bfdf44fa9a665eaf2880bfbf3eae102eeb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DelayedGetterSetterCheck._checkGetterSetter: MethodTooLong \u2014 _checkGetterSetter runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/delayed.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"fefbffd1fdaded0698831a00603af21c43591ea5f378d4ca7fd22d988c327480"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ChunkedJsonParser.parseNumber: MethodTooLong \u2014 parseNumber runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"d978f0d30f3c7eb957dcf5f9e893f6064cafa0d60ea63809acfe2e7b006261f8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ChunkedJsonParser.parseNumber: MethodTooLong \u2014 parseNumber runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"edeeb3347bcde05d7b7e724c23808e38582f57aeb58e227e82453ab81d2a5932"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ChunkedJsonParser.parseNumber: MethodTooLong \u2014 parseNumber runs 113 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 13 over it, 1.13\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":1181}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaa7416d2026cb491455667e85a9735354d7fad4af7951d277ef9634d1e3f5bc"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: convert/json.dart: FileTooLong \u2014 563 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 63 over it, 1.13\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":"sdk/lib/convert/json.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"240ebd79785e53305a37f1e1d00e75a061fe6594ab3da6f9f5a0a7d1e1204bba"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Simplification: ClassTooLong \u2014 450 significant lines (blank, comment-only and punctuation-only lines excluded), 64 methods. The bar is 400 significant lines; this is 50 over it, 1.13\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":"pkg/cfg/lib/passes/simplification.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"bda61b5737b8bfe902efa24ceadc4ca8d0be55228dab065deb152d9e499bb8e1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ObservatoryDebugger: ClassTooLong \u2014 450 significant lines (blank, comment-only and punctuation-only lines excluded), 37 methods. The bar is 400 significant lines; this is 50 over it, 1.13\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":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1407}}}],"partialFingerprints":{"codehealthFindingId/v1":"658d01da1fdcf8a201b6f7382adcbde0a3cf6ecf52165ea75e1f273dba8204cf"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: JSArray: ClassTooLong \u2014 449 significant lines (blank, comment-only and punctuation-only lines excluded), 86 methods. The bar is 400 significant lines; this is 49 over it, 1.12\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99f974184a175007bdd20f36b744120274bf1bbd469c833c92456b0ec941472"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: JsNodeDeserializer: ClassTooLong \u2014 449 significant lines (blank, comment-only and punctuation-only lines excluded), 8 methods. The bar is 400 significant lines; this is 49 over it, 1.12\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/codegen.dart"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ba006457a22d37a2e1514526334f2dc9ee0c2226b8136352419c7a5a065a0cf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: plugin/plugin_manager.dart: FileTooLong \u2014 561 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 61 over it, 1.12\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_manager.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb5136e60290430ad390d5272ce460f37826b22a524a2cde3484ec10bff921ad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: modular/late_lowering.dart: FileTooLong \u2014 561 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: LateLowering (53-773). The bar is 500 significant lines; this is 61 over it, 1.12\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"667333cfb085f020aea82c8f89321a05f556c0f1101f3c5f8f8d7128947b39ca"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: FileResolver: ClassTooLong \u2014 448 significant lines (blank, comment-only and punctuation-only lines excluded), 20 methods. The bar is 400 significant lines; this is 48 over it, 1.12\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/micro/resolve_file.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"450223ef0c4e4650494cacf94ebf7827f243fb7b4e0433fec5e785686310dbe3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: elements/allocation_profile.dart: FileTooLong \u2014 560 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: AllocationProfileElement (42-673). The bar is 500 significant lines; this is 60 over it, 1.12\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4dd1c9cea3bb6165704879b52e75d3948ca4d87514956960b8b9a7330ecc9fc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelSsaGraphBuilder._handleCreateInvocationMirror: MethodTooLong \u2014 _handleCreateInvocationMirror runs 112 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 12 over it, 1.12\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5579}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0b506882846941496f462fc8b26eddd091576ee23b7b6fb1283e4977d59231"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: deferred_load/partition.dart: FileTooLong \u2014 559 significant lines (blank, comment-only and punctuation-only lines excluded), about 69% of them inside a single declaration: _Algorithm (205-874). The bar is 500 significant lines; this is 59 over it, 1.12\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/deferred_load/partition.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e313f61011a770e14795f2b5b318946b64228401d1a8a7a279b5ea47ab3fe3c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: code_completion/visitors.dart: FileTooLong \u2014 558 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: ExpectedCompletionsVisitor (132-879). The bar is 500 significant lines; this is 58 over it, 1.12\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/visitors.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb3051a4e9565737bf8e10a288c246596e5dcf974fb048439f36383cd8efc18c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: navigation/navigation_dart.dart: FileTooLong \u2014 558 significant lines (blank, comment-only and punctuation-only lines excluded), about 70% of them inside a single declaration: _DartNavigationComputerVisitor (213-801). The bar is 500 significant lines; this is 58 over it, 1.12\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/navigation/navigation_dart.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fff8776e95bfc6fcbeeb6066ecaa0fdc41fe8aae10e79f7cea4156a00d436b7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/declarations.dart: 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":"pkg/kernel/lib/src/ast/declarations.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f73caf067ed47370888306c03b7ad90526bbb06f74f59cc758da951ada57b435"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _GrowableList: ClassTooLong \u2014 446 significant lines (blank, comment-only and punctuation-only lines excluded), 58 methods. The bar is 400 significant lines; this is 46 over it, 1.12\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6186a4951d760af96937052e6937443fd431419e6140497c033598780fa3dc0c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_backend/deferred_holder_expression.dart: FileTooLong \u2014 557 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 57 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ffc7705376142fd0d85d2ca9d83cbded054d7d3cf5f2c00942255ceaae8dc7c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: getter/encoding.dart: FileTooLong \u2014 557 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 57 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a4e9c1eee23cf06d7087bcfe5639de6a9096c510e04e851c8c159f3b3395a7e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: flame/instrumenter.dart: FileTooLong \u2014 557 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 57 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/flame/instrumenter.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd6f22603a0f37d294820d3752fd96d38ca4a940b97e9a873222d617e35894c8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/element_inference.dart: FileTooLong \u2014 556 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 56 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/element_inference.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f68ec4f48ba2ab319c30c0107ef3d6f5f4bff6c5da93da7bab3699a95da71593"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _InitializerBuilder: ClassTooLong \u2014 444 significant lines (blank, comment-only and punctuation-only lines excluded), 8 methods. The bar is 400 significant lines; this is 44 over it, 1.11\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":"pkg/front_end/lib/src/kernel/resolver_helpers.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"756dd7fb79936beec211cb6ca00d35abe8269e06a81de8da7f2dac56340e2ba2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: universe/class_hierarchy.dart: FileTooLong \u2014 555 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 55 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5095688e7abc57cc4e1040c54b616f17ef70a31ef4670006c21cef97b38906e6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ImportOrganizer._organizeDirectives: MethodTooLong \u2014 _organizeDirectives runs 111 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/organize_imports.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"f696e7e7146005edffa09a8285539ca39aaca705b53de6a4ccf25a02de94a818"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ConstantVerifier._validateSwitchExhaustiveness: MethodTooLong \u2014 _validateSwitchExhaustiveness runs 111 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8c7b8138edab704eaebe689975f0ce5951d4b0d3905faef900d3e27baf16232"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ClosureDataBuilder._updateScopeBasedOnRtiNeed: MethodTooLong \u2014 _updateScopeBasedOnRtiNeed runs 111 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c3b4ad666a5433e1d9a705a9e270b3addf70b67de4b2b57a7af15787b521cf8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: EnumElementDeclaration._buildElement: MethodTooLong \u2014 _buildElement runs 111 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"474a7e0bbe1d940370fcff9d422a85cff281325df890b62b01e2bc666d872767"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ClassMembersNodeBuilder.inferMethodType: MethodTooLong \u2014 inferMethodType runs 111 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"1651bb8fa934ce009c1473abce71b6f520feb9270cb5b9e30e0f56e13579b548"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _Visitor.visitParenthesizedExpression: MethodTooLong \u2014 visitParenthesizedExpression runs 111 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_parenthesis.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c7da8906639d059509977814430a7734e3b43aab14da321773b636cded01b59"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InstanceRefElement._createLink: MethodTooLong \u2014 _createLink runs 111 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 11 over it, 1.11\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_ref.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"042b1886eee2f5d76b809f65e40c12419f0337e6b56ac08ec883a540de04f725"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Zone: ClassTooLong \u2014 443 significant lines (blank, comment-only and punctuation-only lines excluded), 44 methods. The bar is 400 significant lines; this is 43 over it, 1.11\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":"sdk/lib/async/zone.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"524fd20ad0b716216e7ffba9b255a4b5f8eed9caf72dd088f92f5f4981d7c023"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: type_inference/type_inferrer.dart: FileTooLong \u2014 553 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 53 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inferrer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"98b9d2aa50322b9a3fd85a8e56c4628d08fc79e401c77ea6535a24ebd25cf6f2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: tool/generate_ast_equivalence.dart: FileTooLong \u2014 553 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 53 over it, 1.11\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/generate_ast_equivalence.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"071f56366141075070b9f02e575d9e8a37c5ae022bec067804b2d4d929f569de"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: summary/mini_ast.dart: FileTooLong \u2014 552 significant lines (blank, comment-only and punctuation-only lines excluded), about 77% of them inside a single declaration: MiniAstBuilder (174-784). The bar is 500 significant lines; this is 52 over it, 1.10\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/mini_ast.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8ce9daee207b9dcb5e77d13ed99ea000240ca39259c592ca67c29004d60d3a6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MutationRunner: ClassTooLong \u2014 441 significant lines (blank, comment-only and punctuation-only lines excluded), 13 methods. The bar is 400 significant lines; this is 41 over it, 1.10\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":"pkg/analyzer/tool/fine/ab_mutate.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"132588c708dfc99e980428676a48735a30f917fa13cf87e89897e0af875d8ede"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: web_socket/web_socket_proxy_service.dart: FileTooLong \u2014 551 significant lines (blank, comment-only and punctuation-only lines excluded), about 84% of them inside a single declaration: WebSocketProxyService (134-889). The bar is 500 significant lines; this is 51 over it, 1.10\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/web_socket/web_socket_proxy_service.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d193778891039eb2b8a3f8527e6d098c3d1c2661fc0f61e0421a14b549043c9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/expect.dart: FileTooLong \u2014 551 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 51 over it, 1.10\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"614f55dfd853f1ee49dc23715791aeaf92a352c2402f62a087b9cf7ec054d7f2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ModifierContext: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"c229b6697a8dfbb1c1cfbaccf1d5c7d447cc7d2388ae3be8e5bd20366b3c06a8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PluginManager: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/analysis_server/lib/src/plugin/plugin_manager.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"321da4fa69ea1f4a8e6d78e1defa70e1f9b876bdd19530bbaf0c56b2cfe052aa"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Search: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b8b3571408b0443ab61714747c82794f4abfe124440d8db87b73ce87394c77"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BinaryExpressionImpl: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":3873}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f415e69e9dfde7502d54397db7bbb546cd910a9df4a2f91dd10538e7d0aae9e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ElementMapper: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/analyzer/lib/src/dart/ast/element_locator.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"e13099e4156a3ee435f41833772d4fd1543fd8a257ecf2aa694323270d02362e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartObjectComputer: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2443}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72952577f2c69780160b7c69ae9c88edb793ee8eaa6aee972188921e297a49c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstructorElementImpl: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef27440d504c0c76105ca0662933ccd7fe087dca2b9ab103b978df0f83a090b1"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _AssignedVariablesVisitor: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"},"region":{"startLine":1094}}}],"partialFingerprints":{"codehealthFindingId/v1":"24f6abba9273472335c8f2fd70b8686459a67e40122f3fa223e5a6e82895b452"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _InfoBuilder: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"346beb324a459f711855722d3e61fd59ac1ab945cc3cb0484c70be8041efd77b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractContextTest: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/analyzer_testing/lib/src/abstract_context.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6ca20c499a05c3d10fc47392e29add55bc44e369f8614e211a0f511662b4fb4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JClosedWorld: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/compiler/lib/src/js_model/js_world.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d1a2c8f0790eae3bf5bcb337aafbdcdd517618cd3dc6b01327bad63c6b48fc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SsaLoadElimination: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4389}}}],"partialFingerprints":{"codehealthFindingId/v1":"593b408266dad577ec1f54f69f31c58ad4890f08c45a9fdaa2421b4571da4bbc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceFactoryBuilder: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/front_end/lib/src/source/source_factory_builder.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"d36662a1b26f5e1462b6d598706a054f82074ea377d775356a63560366248e49"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AllocationProfileElement: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee3cfbe9bb821e4c78b43a22a399bd57a17c59f316878908fcfda8d78d7b36e9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CpuProfileTableElement: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"pkg/observatory/lib/src/elements/cpu_profile_table.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"192309b7dbd38b0e181e0f9455fdabb29686f2099efac2e6e73ed593d54b60c5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _Float32x4: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":3830}}}],"partialFingerprints":{"codehealthFindingId/v1":"672f893d5dcbac344e1def6d070725e2a350ecf3522cb92ca0fafefefce1b3ce"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: int: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"sdk/lib/core/int.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b3ca606bf99945ed158ffa164fd76b58da63d4df682398a2c6781aefd525af"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ElementCssClassSet: TooManyMethods \u2014 33 methods. The bar is 30 methods; this is 3 over it, 1.10\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":"tools/dom/src/dart2js_CssClassSet.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"5781b6d161cf732948568508a455e1881c70a9cd493baf30599d26d6f401715f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VmServiceApi: ClassTooLong \u2014 440 significant lines (blank, comment-only and punctuation-only lines excluded), 3 methods. The bar is 400 significant lines; this is 40 over it, 1.10\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":"pkg/vm_service/tool/dart/generate_dart_client.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"221114600c84d57ce8a2654429d131c2f8d87db7868ca3f69e290d3dcab54374"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: change_builder/change_builder_core.dart: FileTooLong \u2014 550 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 50 over it, 1.10\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"394e3be362269330ef118580a94d732f9d8d1d19eeced5255cd0aee95b9c76a9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LibraryContext._loadBundle: MethodTooLong \u2014 _loadBundle runs 110 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_context.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec48c79ecc90eb42735ff1e4fd0f42b17ec834f57e6c863a80fa6bd3173ec946"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DelayedDefaultValueCloner.cloneDefaultValues: MethodTooLong \u2014 cloneDefaultValues runs 110 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_helper.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c8ab50a7b23ad35ada22a289de5e95e75773c4aba64562eda2811bad78b1b72"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceTypeAliasBuilder.buildTypedefTearOffs: MethodTooLong \u2014 buildTypedefTearOffs runs 110 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"abe09de491afa622b5ba1c3d0f9e4d3d8d2fb903f2c6cbbd1d3cb00b150b4e6f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitExtensionIndexSet: MethodTooLong \u2014 visitExtensionIndexSet runs 110 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6667}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d89b324858e25e18580b2f46c1f0d9b177207f7a305b563c9bbb170524529d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: LinearScanRegisterAllocator.buildLiveRanges: MethodTooLong \u2014 buildLiveRanges runs 110 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 10 over it, 1.10\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"40825551f7d490a862f8595961de289e442db4307e107fd8b1d30f73e3888cc3"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_model/js_strategy.dart: FileTooLong \u2014 547 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 47 over it, 1.09\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":"pkg/compiler/lib/src/js_model/js_strategy.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6440b7a047a282f79ded08274567c0a81bad57595f16ffe6c2faa8e703fdabea"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/core_patch.dart: FileTooLong \u2014 547 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 47 over it, 1.09\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":"sdk/lib/_internal/js_runtime/lib/core_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"662ef9b45be3145190c97e7dd09ee0d5a967b6e36d5f17bfda6e5cce1f1bed9a"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InstanceViewElement: ClassTooLong \u2014 437 significant lines (blank, comment-only and punctuation-only lines excluded), 17 methods. The bar is 400 significant lines; this is 37 over it, 1.09\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d6ec787f0d632ed843c921689f981dc42295d068f3b4dcd96874191af316ae0"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Transformer: ClassTooLong \u2014 436 significant lines (blank, comment-only and punctuation-only lines excluded), 66 methods. The bar is 400 significant lines; this is 36 over it, 1.09\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":2454}}}],"partialFingerprints":{"codehealthFindingId/v1":"129b73660c4f92ae65743cfefee2ec6ec228f53caeef0a18e0b3edce01f58bce"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: log/log.dart: FileTooLong \u2014 545 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 45 over it, 1.09\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":"pkg/analysis_server/tool/instrumentation/log/log.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e14d362f0e19e6cad7692a808739e9cd479d5203bbf7e4da2cf15314d7266b6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: vmservice/vmservice.dart: FileTooLong \u2014 545 significant lines (blank, comment-only and punctuation-only lines excluded), about 73% of them inside a single declaration: VMService (195-787). The bar is 500 significant lines; this is 45 over it, 1.09\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/vmservice.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d3faa3c675e7f1eff65c5fea11020f13268e79542f241b558874afbbde281d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ContextManagerImpl._createAnalysisContexts: MethodTooLong \u2014 _createAnalysisContexts runs 109 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"867c665165318d9a81ae939a37b5cb56ff791ef340606b6c2c7b310bae48977a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TypeSystemImpl.canBeSubtypeOf: MethodTooLong \u2014 canBeSubtypeOf runs 109 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ca698673ecd21ac599296c5b2ffd5edcc320282a9b9dff98a84d5cbf961156f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompileNativeCommand.run: MethodTooLong \u2014 run runs 109 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea32744e83f72b97a604beb880f823a45eec3806f630977d7a5e1f30b9ca9e3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: OutlineBuilder.endTopLevelMethod: MethodTooLong \u2014 endTopLevelMethod runs 109 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2067}}}],"partialFingerprints":{"codehealthFindingId/v1":"77cc4c97c972dc66aabd903398138420c32ab25d865b975fdf3d5abfcb2a720d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceLoader._checkMainMethods: MethodTooLong \u2014 _checkMainMethods runs 109 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":3090}}}],"partialFingerprints":{"codehealthFindingId/v1":"61a69df831b858641083d29ba48698695b04453aeffe18e318fcabb0ec882d69"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase._inferFunctionInvocation: MethodTooLong \u2014 _inferFunctionInvocation runs 109 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2840}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d1e4047a9a0b9997ddeb3f6d7c3bcddeaa5bdd657e0810760affb6bc350295c"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: NodeCreator._createConstantFromKind: MethodTooLong \u2014 _createConstantFromKind runs 109 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 9 over it, 1.09\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":1998}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed09f331946946824c43943963b637cb24fe757ea48b387f79b3468b88db2c0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: js_common/js_helper.dart: FileTooLong \u2014 544 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 44 over it, 1.09\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":"sdk/lib/_internal/wasm/js_common/js_helper.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa831edd662e3b89240b97d3c6123e09a102f3bdbe66c8d9198df90c95d0eed"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DataExtractor: ClassTooLong \u2014 435 significant lines (blank, comment-only and punctuation-only lines excluded), 92 methods. The bar is 400 significant lines; this is 35 over it, 1.09\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_extractor.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"881e6fe3b9f132809a4c14265fb3d76fc4c92fcf6543a9118b5120b066e7f4f1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ClassViewElement: ClassTooLong \u2014 435 significant lines (blank, comment-only and punctuation-only lines excluded), 14 methods. The bar is 400 significant lines; this is 35 over it, 1.09\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_view.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"b686e67290d17d77453920a564afc55c6489923f88dae4f98366778ff265f475"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _SignatureUpdater: ClassTooLong \u2014 432 significant lines (blank, comment-only and punctuation-only lines excluded), 17 methods. The bar is 400 significant lines; this is 32 over it, 1.08\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":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"c202979449daf594de69091d24c7a8db4aaa2cff02aea3d19ce78923c9522c17"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: AnalyzeCommand: ClassTooLong \u2014 432 significant lines (blank, comment-only and punctuation-only lines excluded), 15 methods. The bar is 400 significant lines; this is 32 over it, 1.08\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":"pkg/dartdev/lib/src/commands/analyze.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ebf2843aea34eafd18548a408b128b3e8a76d56af7c2dad82920e2d66364c16"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: tool/ast_model.dart: FileTooLong \u2014 540 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 40 over it, 1.08\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/ast_model.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"01551757c01f94e957bbe5367d6677bed4357254297f8c3f25b2c9f09968956d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CodeActionComputer._computeActions: MethodTooLong \u2014 _computeActions runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/code_action_computer.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b8f5b44ffb122ea3948fe369289b665a8d3508e0ee7b72b5c9f4f18c1004c88"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ConstructorInvocationEvaluator.evaluate: MethodTooLong \u2014 evaluate runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3684}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf62bb28402df130a0fe1b55ee39edb0786c8f530687ef08f66301cb817f3dc"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartEditBuilderImpl._writeType: MethodTooLong \u2014 _writeType runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1540}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fbe05a91837b5c2cf2c6fc712eeddeb3f63320a3888225ad47b6bdafb5358ec"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _Visitor._tryFixingMethodInvocation: MethodTooLong \u2014 _tryFixingMethodInvocation runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/tool/messages/use_literate_api_in_analyzer.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"430df923671418b889a7898c8a29cfe4fc5fd38f8984728f7db2b1083e85221e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorBase.reportAssignabilityErrors: MethodTooLong \u2014 reportAssignabilityErrors runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6b6e5d6ec51edc0948b0bb7d518f451f81ec4a7c87c643e9ae2269128cb50a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TreeMap._createTreemapTile: MethodTooLong \u2014 _createTreemapTile runs 108 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 8 over it, 1.08\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/tree_map.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a0b85674e3c86b5887774b2e408d9603a8e19eafc7593fc213ad60789b38e1c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ExpressionCompilerWorker: ClassTooLong \u2014 431 significant lines (blank, comment-only and punctuation-only lines excluded), 17 methods. The bar is 400 significant lines; this is 31 over it, 1.08\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":"pkg/dev_compiler/lib/src/kernel/expression_compiler_worker.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a9afc982a27767cec92f12c4800281ba20ab9bfd8270f84cba67111c859bf5e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/relevance_computer.dart: FileTooLong \u2014 538 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: RelevanceComputer (18-773). The bar is 500 significant lines; this is 38 over it, 1.08\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/relevance_computer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"65e149ba8eabe6b3dc6267172ab818482a66b5cf063ab914e15487c2d53370ed"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _DynamicModuleValidator: ClassTooLong \u2014 430 significant lines (blank, comment-only and punctuation-only lines excluded), 55 methods. The bar is 400 significant lines; this is 30 over it, 1.08\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":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2e8335823e139d9b16245f5706cadb519db38a5f2bbc0f6df0b2b3b32f5148"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _RecordClassGenerator: ClassTooLong \u2014 430 significant lines (blank, comment-only and punctuation-only lines excluded), 17 methods. The bar is 400 significant lines; this is 30 over it, 1.08\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":"pkg/dart2wasm/lib/record_class_generator.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fc7968be7f99b1dacda896b8d01923a1d991cb089b2bfd506fa9e91f18bfd9e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/target.dart: FileTooLong \u2014 537 significant lines (blank, comment-only and punctuation-only lines excluded), about 76% of them inside a single declaration: WasmTarget (101-664). The bar is 500 significant lines; this is 37 over it, 1.07\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/target.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"609b586de4fff9efcf9622fd95ecd2f9d7095bca3dbb5bf2c828ccfb3b8d9b5f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VmServerConnection: ClassTooLong \u2014 428 significant lines (blank, comment-only and punctuation-only lines excluded), 4 methods. The bar is 400 significant lines; this is 28 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":"pkg/vm_service_interface/lib/src/vm_service_interface.dart"},"region":{"startLine":1349}}}],"partialFingerprints":{"codehealthFindingId/v1":"a355417b1559f598616de9c400d53142a051e4cf475b0f37fd457266530fe66b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ParsedLinterData._parseLocalRules: MethodTooLong \u2014 _parseLocalRules runs 107 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 7 over it, 1.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1219}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed1f9f37d9d2633ecbd20f9cb5a595af140aedf66161688c1e9ff6d7a1866892"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: GreatestLowerBoundHelper.getGreatestLowerBound: MethodTooLong \u2014 getGreatestLowerBound runs 107 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 7 over it, 1.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"022682a5cacddee245c0085ee8215c6f2f49e6d131c9411f9fe900c5cb8cb634"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DebuggerFrameElement.render: MethodTooLong \u2014 render runs 107 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 7 over it, 1.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":2572}}}],"partialFingerprints":{"codehealthFindingId/v1":"6480c5477576a5d127aa4644c77e667f7e7c2eccca30a34a4616aad78cad463e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _FfiUseSiteTransformer._verifyAndReplaceNativeCallable: MethodTooLong \u2014 _verifyAndReplaceNativeCallable runs 107 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 7 over it, 1.07\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":1274}}}],"partialFingerprints":{"codehealthFindingId/v1":"db6476b71ca536ebbc2d55a6ac471507d35e03c9a06ddbe281a674f987dcbfbf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: web/timeline.js: FileTooLong \u2014 534 significant lines (blank, comment-only and punctuation-only lines excluded; the length bar is tripled for a single-responsibility module of 4 or fewer top-level units). The bar is 500 significant lines; this is 34 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":"pkg/observatory/web/timeline.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a75c9d33a48f2e197216f07f505930302ad667ef1e8f14e709b6b905d4782d9"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MemberDuplicateDefinitionVerifier: ClassTooLong \u2014 427 significant lines (blank, comment-only and punctuation-only lines excluded), 19 methods. The bar is 400 significant lines; this is 27 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":"pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e645618f7134e9b09454319b488c8a645d23f83b0a064876c3c79c381788e7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JsUtilOptimizer: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce30b92cf71a5fff6a35e0dfb3c17dbfdba8d59a6b414e820e4168e9b9968908"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BulkFixProcessor: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6323a64ec729adead23ec60df60106e1a419239513112914c03753aad2c2085"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PrefixExpressionImpl: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":45193}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e0e820c8f7722c0adfd4aaac15f6fa5900cfe1f4f6a32a6e9888540cbd95298"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FormalParameterElementImpl: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3899}}}],"partialFingerprints":{"codehealthFindingId/v1":"151bb0b46a8f693463c542ae1b0f5178456fb38929b6e97329f15338fe86dd17"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LibraryReference: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/reference.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a806438b8e778bec8a30460b4f29d7ebb21e1dcf77a7a7f86824b3d42e65f29"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _MemoryRandomAccessFile: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":810}}}],"partialFingerprints":{"codehealthFindingId/v1":"29ad54fc04ea3b1504b53bd8c2c31744086e05e63c59a0b04f9263fa597b0412"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SourceExtensionTypeDeclarationBuilder: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b2134dd86c091b7de30d42b8235b6516cc97f26249f8b3f89f861e97f89bbfe"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BenchMaker: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/bench_maker.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4f16ab9b8e91692877df9c2a7d76f415707b28dcb72687dcd6f55bd0d86503e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _AstIndexerAndIgnoreCollectorBody: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. Most of these members implement src.ParserAstVisitor (30 of 32 members), so moving them onto a smaller type would remove them from that contract rather than reduce it. To reduce it, split the contract instead: give each cohesive group of operations its own smaller interface and its own implementing type. Where the contract has to stay whole, move the work behind these members into collaborator types, so what is left here is a forward per member rather than a responsibility per member."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":1295}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fb965b96044b2ca64747cdddcbc3b12f564e4beb7c9a29118c2f9a05582fbdf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Field: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/members.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f87104dfbc53e445414257100a043b00fb13f91a8d9abdb0a8d196117815930"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _VariablesInfoCollector: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"e37a1ef76c4504fd2a70582201ab8a7b0f303acab7a2b65934be880d1e67ef5f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _HashMap: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"da4c3c4dbd3031b8cffd7dce1087f51892947ff96d5aaebeae4d54b562bebfdb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DateTime: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/date_time_patch.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f20eb81ad27f164efb45d5c9d459c9d76a35170e5d3644cf9093b0aa3f915f6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _ByteDataView: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":5154}}}],"partialFingerprints":{"codehealthFindingId/v1":"142c71af7964d7099511b09a0377b8fe4f96d0d66a797e1ac4bc626a622f9b2a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ClassID: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/class_id.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce3462c376f2731a5520419d2aa4c48806ce44bb5e9d07d01c67c2d74d3de56"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JSDataViewImpl: TooManyMethods \u2014 32 methods. The bar is 30 methods; this is 2 over it, 1.07\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"65783c0bdf3601ba74587dc1b38b3c20f61bcfd69c0fd240d704a558fd3606f6"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: KeywordHelper: ClassTooLong \u2014 426 significant lines (blank, comment-only and punctuation-only lines excluded), 31 methods. The bar is 400 significant lines; this is 26 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":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cb01c16beff588a2936a093bd015f61911bf1fa00db6736c4e340a865fb4392"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InstallCommand: ClassTooLong \u2014 426 significant lines (blank, comment-only and punctuation-only lines excluded), 19 methods. The bar is 400 significant lines; this is 26 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":"pkg/dartdev/lib/src/commands/install.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d9c02b122c570befb66342e01f00a01e3c3091f24ef955239f056d78e58eca6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/stack_listener.dart: FileTooLong \u2014 532 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 32 over it, 1.06\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/stack_listener.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d73d801e44dee3092864a4a28583b02a606224c7df7977908139db3da7d56351"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: MiniAstBuilder: ClassTooLong \u2014 424 significant lines (blank, comment-only and punctuation-only lines excluded), 68 methods. The bar is 400 significant lines; this is 24 over it, 1.06\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/mini_ast.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"744e620e852801d1f57aecc48b37f9cc26f7455937ba0159d7661b7c72fcd9da"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AddMissingRequiredArgument.compute: MethodTooLong \u2014 compute runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"988ad541d5ea6f9b1579a7f489840a37d37fe4865f0ef4d710a111bfa6223adb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExtractWidgetRefactoringImpl._writeWidgetDeclaration: MethodTooLong \u2014 _writeWidgetDeclaration runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"28e0f455a006f902729b7249e016333d9ccb504efb3e75f8ac7747e8eb5c5325"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ReferenceProcessor._inlineMethodInvocation: MethodTooLong \u2014 _inlineMethodInvocation runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"56f336095738037539b819ec7312b22f5f5422cca7711e6fdbbafc043e0cfec3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StatusPage.generateContent: MethodTooLong \u2014 generateContent runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"pkg/analysis_server/lib/src/status/pages/status_page.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a7538e1c5d9360836192fad45612755c38112ac5c6894f128f3e55fb7e13638"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelSsaGraphBuilder.build: MethodTooLong \u2014 build runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":461}}}],"partialFingerprints":{"codehealthFindingId/v1":"af917514e1155c2b72ddafa98414a3943b6595df9d2c9cfd5a7a6b816c246d37"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartDevelopmentServiceLauncher.start: MethodTooLong \u2014 start runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"pkg/dds/lib/dds_launcher.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"679d834680b4ab6e890f3596b7d3854fde8a4cc8464843052c42a71ec8935b52"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitMapPattern: MethodTooLong \u2014 visitMapPattern runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13050}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad57e754ba48395bf400bcc66ff352b054f108ade05cc522648847510851f5c0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: BestEffortParserAstVisitor.accept: MethodTooLong \u2014 accept runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca5d33dfe9878dd2bffd9ad5d22d06fa74ffca0eb78f95a4423be7dd0f2a512b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Arm64CodeGenerator.visitTypeCast: MethodTooLong \u2014 visitTypeCast runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1629}}}],"partialFingerprints":{"codehealthFindingId/v1":"95e8c7b14bccb70bd62462cb2d072944387ce7d27d7cbba61b6e3d54073ae0ce"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: HttpDate._parse: MethodTooLong \u2014 _parse runs 106 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 6 over it, 1.06\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":"sdk/lib/_http/http_date.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"9afefd9c79be8364f8879db2b20bf93aaf04459e95f77f624885192779deeb87"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: BenchMaker: ClassTooLong \u2014 423 significant lines (blank, comment-only and punctuation-only lines excluded), 32 methods. The bar is 400 significant lines; this is 23 over it, 1.06\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/bench_maker.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ab13277d7c5945a787c37b6439e11179d90dd478aff6939e6b8c563fc4ab2fd"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Keyword: ClassTooLong \u2014 423 significant lines (blank, comment-only and punctuation-only lines excluded), 8 methods. The bar is 400 significant lines; this is 23 over it, 1.06\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/token.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"af34ce26c6358f16dfab30553d23a091cdc4e2bf3e2a2634f88951e9d021fe6f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: Keyword: ClassTooLong \u2014 423 significant lines (blank, comment-only and punctuation-only lines excluded), 8 methods. The bar is 400 significant lines; this is 23 over it, 1.06\u00D7 the bar. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/token.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2e958d719a2b23336f796844650561eda5bbdc62f546d0371e83182fd10eec"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: patch/io_patch.dart: FileTooLong \u2014 528 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 28 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":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"283b498846c64d3595512369495027b1e4a2a006a3a515731294181eb004e101"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inferrer/type_system.dart: FileTooLong \u2014 527 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: TypeSystem (58-871). The bar is 500 significant lines; this is 27 over it, 1.05\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_system.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"792a81460f2429fd5308ae3d5903564b2787a909508d720c31ec4d2902280381"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/simd.dart: FileTooLong \u2014 526 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 26 over it, 1.05\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":"sdk/lib/_internal/wasm/common/simd.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d97a5d3189685d563016250dc2a95903ad2fe41ca4cf89aa758f432b3c4d455"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/io_patch.dart: FileTooLong \u2014 525 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 25 over it, 1.05\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":"sdk/lib/_internal/js_runtime/lib/io_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d826ff24c334d71bb5d52892f7feab3a85fbee75a2db2be3cf5166ed1af64058"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: common/io_patch.dart: FileTooLong \u2014 525 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 25 over it, 1.05\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":"sdk/lib/_internal/wasm/common/io_patch.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f8e60279855c21c11d1dab41ec8e4bb86113eed2551ae3527808536654da42a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: KernelSsaGraphBuilder.visitDoStatement: MethodTooLong \u2014 visitDoStatement runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":3046}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f669162acdea45ee9606441ca8ccf482fcf0226ec4593314b582afff4e51ac"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferredMapOrSetElementInferenceContext.InferredMapOrSetElementInferenceContext: MethodTooLong \u2014 InferredMapOrSetElementInferenceContext runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/element_inference.dart"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"218c220b03f8f4a44daa3772f9823c57a5803b738b6b020967ca845a33221161"}},{"ruleId":"D3","level":"warning","message":{"text":"FunctionTooLong: graphexplorer.createTreemapTile: FunctionTooLong \u2014 createTreemapTile runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1279}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2213adae7ab1a331fa071f4e0a66874777017a9b1d8d4af03ae904bd743c27f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ChunkedJsonParser.parse: MethodTooLong \u2014 parse runs 105 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 5 over it, 1.05\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b909f942ff5304da975b5a9038924050d07eec908d192988d40df80088f490e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lsp/completion_utils.dart: FileTooLong \u2014 524 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 24 over it, 1.05\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":"pkg/analysis_server/lib/src/lsp/completion_utils.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d031e76b7b670a322301c39fb828cc401dd597c1ee131bfb4e39312d7c4edf51"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: universe/class_set.dart: FileTooLong \u2014 524 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 24 over it, 1.05\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":"pkg/compiler/lib/src/universe/class_set.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"315bf4a7b3949cb4f60bb899e33b9b8cd48fd2309498ea50c6ad2e1dc48b8813"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: VmTarget: ClassTooLong \u2014 419 significant lines (blank, comment-only and punctuation-only lines excluded), 42 methods. The bar is 400 significant lines; this is 19 over it, 1.05\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":"pkg/vm/lib/modular/target/vm.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"585ed8f51e59fa7c80a608916aaa4bf5a1ff11eaa4a8662fbbc6c3c1d5cfed5f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: kernel/combined_member_signature.dart: FileTooLong \u2014 522 significant lines (blank, comment-only and punctuation-only lines excluded), about 88% of them inside a single declaration: CombinedMemberSignatureBase (25-740). The bar is 500 significant lines; this is 22 over it, 1.04\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/combined_member_signature.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"277c3421bccb5d303a0d5b6d32b9c22e705ed3070795d20f0ff25b9eaf852948"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ChromeAppInspector: ClassTooLong \u2014 416 significant lines (blank, comment-only and punctuation-only lines excluded), 34 methods. The bar is 400 significant lines; this is 16 over it, 1.04\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":"pkg/dwds/lib/src/debugging/chrome_inspector.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1ae4e1a31911e651f00c5d2a60f8125e63e2fed6cba6b3401d85279c335f84f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: NativeBehavior: ClassTooLong \u2014 416 significant lines (blank, comment-only and punctuation-only lines excluded), 21 methods. The bar is 400 significant lines; this is 16 over it, 1.04\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":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"4020d764260c8855dbea9d1f60a0af8b73d7d28d679429eca5d68dd7a6eb79a7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: inferrer/types.dart: FileTooLong \u2014 520 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 20 over it, 1.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/types.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4c58e64ee28db70d999df644ad8338b67e40a5605a46468a09e8a17692ec73d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/dynamic_dispatchers.dart: FileTooLong \u2014 520 significant lines (blank, comment-only and punctuation-only lines excluded), about 67% of them inside a single declaration: _DynamicDispatcherCodeGenerator (66-582). The bar is 500 significant lines; this is 20 over it, 1.04\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dynamic_dispatchers.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c45dcb50b9d481a91526673a8fabd8d4eb899e4f7721192610c0440e568acd11"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/abstracted_ast_nodes.dart: FileTooLong \u2014 520 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 20 over it, 1.04\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a21a1885b8518547e0fcab1479f91157c5a4b31d9b3e8c52b296ae109645cba2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CompileWasmCommand.run: MethodTooLong \u2014 run 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":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"a36cdb6901bb43ab009d196aa7212db6a77e5eac17ad22b480d659f2418dc434"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DynamicInterfaceSpecification.findNodes: MethodTooLong \u2014 findNodes 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":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"9532e9015fc87adc44c95f6a24bdab2592dff1149cc3ff65794228a98d15ee3d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: OutlineBuilder.endConstructor: MethodTooLong \u2014 endConstructor 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":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2591}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbc6f5b0453be194af8e415ff7ea7193c66a5ee507dcd4684810ab9bceede8ce"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceLoader.tokenize: MethodTooLong \u2014 tokenize 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":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"e07768166b6f4136b958148999bd92c95200ba531a16dcc7de69af301389bd87"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitMapOrSetLiteral: MethodTooLong \u2014 visitMapOrSetLiteral 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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5260}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2670f830219fbb84c0a14441a9a0f4f91da0b141dedfd3da1d1408060598c54"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ObjectAccessDescriptor._findNonExtensionTargetInternal: MethodTooLong \u2014 _findNonExtensionTargetInternal 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":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":6343}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b0d71d2cecd0d8d2bc7eaa629536cbac5bdfc4d7e520df983b27b0e8e05b70e"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: MatchingExpressionVisitor.visitRelationalPattern: MethodTooLong \u2014 visitRelationalPattern 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":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":757}}}],"partialFingerprints":{"codehealthFindingId/v1":"9119d0da2bc2397402298730dd4a919cc7c16bf342a22aec54eb99d1686b4a62"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Class.test: MethodTooLong \u2014 test 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":"pkg/front_end/testcases/patterns/const_patterns.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"641d193e17de8f28d4a895be13cb59395732865edb26cd0321c531ed4741f7ff"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _HttpClientConnection.send: MethodTooLong \u2014 send 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":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":2274}}}],"partialFingerprints":{"codehealthFindingId/v1":"8791a792e0983b95e1c6f4a0390f9bbf6d1a004a7a9163ad8b5327878df6ea36"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: commands/install.dart: FileTooLong \u2014 519 significant lines (blank, comment-only and punctuation-only lines excluded), about 82% of them inside a single declaration: InstallCommand (20-660). The bar is 500 significant lines; this is 19 over it, 1.04\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/install.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"88b95117c10eb5cff2f80ad3681f813dc6ef0733f7b09953b1da1d17af2a3deb"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: JSArrayImpl: ClassTooLong \u2014 415 significant lines (blank, comment-only and punctuation-only lines excluded), 69 methods. The bar is 400 significant lines; this is 15 over it, 1.04\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":"sdk/lib/_internal/wasm/js_common/js_array.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"67a2257a20efb36a2b32a30f67b1e3a3d2455f3812dba91bf13495605af36540"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: StateMachineCodeGenerator: ClassTooLong \u2014 415 significant lines (blank, comment-only and punctuation-only lines excluded), 29 methods. The bar is 400 significant lines; this is 15 over it, 1.04\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":"pkg/dart2wasm/lib/state_machine.dart"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"d50795abed7f55a4f510fa1d1c04029510cad28effe10175cf0f4c5831a1f473"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fine/requirement_failure.dart: FileTooLong \u2014 518 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 18 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":"pkg/analyzer/lib/src/fine/requirement_failure.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"942497f673e843c65b2197e4322a381e76206df453d8a518b1314e9cbe5701a3"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: UnusedLocalElementsVerifier: ClassTooLong \u2014 414 significant lines (blank, comment-only and punctuation-only lines excluded), 45 methods. The bar is 400 significant lines; this is 14 over it, 1.04\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":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"06672c110341b51968bfedc287320457f596191ce78ac115533224c939f29641"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CompletionTarget: ClassTooLong \u2014 414 significant lines (blank, comment-only and punctuation-only lines excluded), 22 methods. The bar is 400 significant lines; this is 14 over it, 1.04\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":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f00ffa9aaf5d5ecda59ec773a7c9ce267d6e5618dfbbae4533c704c7794dad"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: metadata/evaluate.dart: FileTooLong \u2014 517 significant lines (blank, comment-only and punctuation-only lines excluded), about 98% of them inside a single declaration: Evaluator (33-696). The bar is 500 significant lines; this is 17 over it, 1.03\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c5e7d5af745d9026efaa803be2743dbe3ee4bbb3c225d4e93e2e8d937166df"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: lib/integers.dart: FileTooLong \u2014 517 significant lines (blank, comment-only and punctuation-only lines excluded), about 70% of them inside a single declaration: _IntegerImplementation (8-535). The bar is 500 significant lines; this is 17 over it, 1.03\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a98766b69f06f9c801668503a57f013b73055abcee21c5d834956b2d46f6917"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SimpleToken: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/_fe_analyzer_shared/lib/src/scanner/token.dart"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4cb1c20167fce5b13132768b7c3c90978dc5a1d0e4d1ac89598cabd06d07594"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartUnitHighlightsComputer: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eccdfbf80f6f347538b304d224665f57f0bde05751eefca3451c77c2fd0ffce"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: KeywordHelper: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbfc133e2ce75914e6735b8d549df9cfe74a19fe4894374d85c70e10c982fb17"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SimpleToken: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/token.dart"},"region":{"startLine":1107}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba868991aa287e534f6a5f4e66aa16538f07cf98c5c911096eee8a3db9865265"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Metadata: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analyzer/lib/dart/element/element.dart"},"region":{"startLine":2551}}}],"partialFingerprints":{"codehealthFindingId/v1":"7387d8f868f840f70411100db59a41988ce3b352c6fb0240e17b743ba1fb385d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InstanceCreationExpressionImpl: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":31431}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bd0d714a0c7b9fae8dd7242a952907707194945f982873beb9e616cade2141"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PostfixExpressionImpl: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":44680}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee30cf06f3d6164eeedb252c2aac1a607315b45529d91444e71494fe049d4c5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ClassElementImpl: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddaef9585aa5bbe57bbcd52aae24a858ab33f7729819ddcf65d966327c4d90ef"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FragmentImpl: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":4395}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8ee894aaf730656ade550a5c208ff22c766ff6326b2efb732dba2d6d9a5b11e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Builder: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analyzer/lib/src/summary/flat_buffers.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"91126368b732387c828340b7c15b287feb79bc68d196a9a6c7830555f29fe209"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AstNodeImplGenerator: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ce0011023ccb6fda1257834f0bd81bb3696cc4e235b36b00834fd65d4ec2bb2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: PlaceholderSafetyAnalysis: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/compiler/lib/src/js/placeholder_safety.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"d000301178f41ebc0d67420984d7c788d542d319937569670c998f620a5985cd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstantCanonicalHasher: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1541}}}],"partialFingerprints":{"codehealthFindingId/v1":"e831d64ff000f7943a93baeee70b5093bafa7c9166172a5580074de8dd9d1034"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SsaValueRangeAnalyzer: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"fee95d239715dbd7bbfce74b57ddc3c0e9aaec79dda32c484ad40e2b7ca33213"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstantPool: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/dart2bytecode/lib/constant_pool.dart"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"29644e48c5c191848e08b1b37ad4ab90a544f8b77aa43c7a5c58833214b7279a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ObjectTable: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/dart2bytecode/lib/object_table.dart"},"region":{"startLine":1717}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ef964941c537285d1cd992117132f935a16e5a00faac744b0da7a7845c4755"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NamedTypeBuilderImpl: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ef20e0046528e76ae1241abd29bc244c6e41976576ad2e3949c09721ca26325"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TextualOutlineListener: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/front_end/lib/src/util/textual_outline.dart"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"13b248c445f09cfa974e221d2686b06fb85c14f6ffee6f8f3a61d63beca9918e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AnnotateKernel: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7cad6da87b92fbc55acb08db5f57cf2a94fa191a1c8f6687f47f486ada2a031"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DartType: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51e7d91a49e50081688f63d86e3ed5d038d05b51832effd96c6037e95a3709e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Primitives: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c5b46964d32c62132ce13eda7582809f7a905404fc4b1c3c07c3e8029ba3f9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: _BroadcastStreamController: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"sdk/lib/async/broadcast_stream_controller.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c48277fce44684a13e7455ccdd076ff6b672e83cef7a93a4436928a3e7298fe"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Map: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"sdk/lib/core/map.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"02a8db4b0c404f8efd960cfd7df041c1dfd23c849904ad039f7fa713d874c9f7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: VMService: TooManyMethods \u2014 31 methods. The bar is 30 methods; this is 1 over it, 1.03\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":"sdk/lib/vmservice/vmservice.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e8f732417dc732adc0d2959fabed044d88ee302ffddd868557afebb28c28eb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/htmlrenamer.py: FileTooLong \u2014 516 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 16 over it, 1.03\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6e4ddcee8f356a5ee40fef020baeea76d4b5dae548d00ddebdf42cd1f775d5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: dart/convert_class_to_enum.dart: FileTooLong \u2014 516 significant lines (blank, comment-only and punctuation-only lines excluded), about 72% of them inside a single declaration: _EnumDescription (157-780). The bar is 500 significant lines; this is 16 over it, 1.03\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"63aa7fb12608739fce7dea398c19d2a88719f11f35fbb5ee25b66d1248444d3a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: element/scope.dart: FileTooLong \u2014 516 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 16 over it, 1.03\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/scope.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc2e366edb282da46bb2eab8aa162e3750e292bbd67e051d5a5ba5ec9f1c3a78"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: private/js_helper.dart: FileTooLong \u2014 516 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 16 over it, 1.03\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e99dce2615e3446531035e2cca288b5f49bcc86d568b1fc8ce050217ba56ed5"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: scripts/systemhtml.py: FileTooLong \u2014 515 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 15 over it, 1.03\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f5e1e48925fa8fedc8ed43f1325d1be57dc6747215412946a8743529c511ba"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: parser/modifier_context.dart: FileTooLong \u2014 515 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: ModifierContext (64-736). The bar is 500 significant lines; this is 15 over it, 1.03\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/modifier_context.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"225a0bc46ff363d819757441b7434ae9fdffd22986c24c06457609b8eef0629c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: element/generic_inferrer.dart: FileTooLong \u2014 515 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: GenericInferrer (49-839). The bar is 500 significant lines; this is 15 over it, 1.03\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/generic_inferrer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e2e212abac2865a7df075dc71c9d188b3710e54f172fab516d0d2d5d25fe34"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: micro/utils.dart: FileTooLong \u2014 515 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 15 over it, 1.03\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/micro/utils.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0424d839af1278cae240f235e2c54ed92b64db3bdc3ad8faf16d33c93413de2a"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: general/bounds_type_parameters.dart: FileTooLong \u2014 515 significant lines (blank, comment-only and punctuation-only lines excluded). The bar is 500 significant lines; this is 15 over it, 1.03\u00D7 the bar. To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/bounds_type_parameters.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1217c4eeffb24b138ab32d06608de4dbc8e72c79ffb6f3607999a095f289a531"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: TypeAnalyzer.analyzeSwitchExpression: MethodTooLong \u2014 analyzeSwitchExpression 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":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":2343}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d35ffa1630292b7ecd3389e3554ec1d5f838068b435931b8fd1c8765444b270"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AnalyticsManager.toHtml: MethodTooLong \u2014 toHtml 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":"pkg/analysis_server/lib/src/analytics/analytics_manager.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36ca399a6d56a3bd17a33c88c70f971ce4f788f7f47a12cc0e4930760bcf0e0"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ImportElementsComputer.createEdits: MethodTooLong \u2014 createEdits 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":"pkg/analysis_server/lib/src/computer/import_elements_computer.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c3e4fee99cd687607ef78ccd80768dc870633214ae7350b0d61fc4180ff193"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AddDiagnosticPropertyReference.compute: MethodTooLong \u2014 compute 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":"pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"4229984e590f451cd2736799ef7f0e46738a913eee0bc0ade3b436f0d5d2eac3"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: CreateExtensionOperator.compute: MethodTooLong \u2014 compute 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":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b34a11b15b0f5f071c5ea76fa0bef2e076a73da6232013c0ea6f2c46fc808b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AbstractLateFieldEncoding.buildOutlineNode: MethodTooLong \u2014 buildOutlineNode 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":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":759}}}],"partialFingerprints":{"codehealthFindingId/v1":"86132a88736bd2866c41d08ddbf06823c229d4a970879823606e800ae21d635b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitPropertyIncDec: MethodTooLong \u2014 visitPropertyIncDec 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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5750}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e93cc7e6f24a3b0866aa2716393b755ca198232056220ea711d85eeceb554e6"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Arm64CodeGenerator._prepareNamedParameters: MethodTooLong \u2014 _prepareNamedParameters 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":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"5adc1bd3d2ed2f32a7c900727919d0e6fcba0942dbabd4c5f008e1fe3ac7186d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IsolateSharedSummaryElement.render: MethodTooLong \u2014 render 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":"pkg/observatory/lib/src/elements/isolate/shared_summary.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"e150801087315a00a530de4c30ccc19f94fff17476f86d54277d98abd5044466"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ChunkedJsonParser.parse: MethodTooLong \u2014 parse 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"57e929098529958e487a18ce54d4836c1c9815f7a1956cc2531373c3e9ebbef1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _TypeUniverse.substituteTypeArgument: MethodTooLong \u2014 substituteTypeArgument 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":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"6867648bb263338b775e0ee7292b1418076f2f6e7e3bb5d6d1cf0ffab789788f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: InlineWeeder: ClassTooLong \u2014 411 significant lines (blank, comment-only and punctuation-only lines excluded), 58 methods. The bar is 400 significant lines; this is 11 over it, 1.03\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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9198}}}],"partialFingerprints":{"codehealthFindingId/v1":"98bd41d62ace1fe476bfc126f6f341c4f55531332d55de9d35a41b92320afc0b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: passes/constant_propagation.dart: FileTooLong \u2014 512 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: ConstantPropagation (18-796). The bar is 500 significant lines; this is 12 over it, 1.02\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/constant_propagation.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"78a4fc3bd4e3662207d751dcd9487896b7d75753f9292f2881428d1c041cb413"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: WasmTarget: ClassTooLong \u2014 409 significant lines (blank, comment-only and punctuation-only lines excluded), 39 methods. The bar is 400 significant lines; this is 9 over it, 1.02\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":"pkg/dart2wasm/lib/target.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ebf368e0ca1dc29c3109b91de60206722d8923b3f991a0a2f69f09a3f03fb6c"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ModelEmitter: ClassTooLong \u2014 409 significant lines (blank, comment-only and punctuation-only lines excluded), 18 methods. The bar is 400 significant lines; this is 9 over it, 1.02\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":"pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"7164963659890ee581f47bd45935fd51480db3fe6abd11deb0f06fe73e26af1f"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _OffsetsAstVisitor: ClassTooLong \u2014 408 significant lines (blank, comment-only and punctuation-only lines excluded), 89 methods. The bar is 400 significant lines; this is 8 over it, 1.02\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":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":1868}}}],"partialFingerprints":{"codehealthFindingId/v1":"c941a0c2b971e2f81222753bfbbbd129ba2edc1f7d795f6877e565feaa82a1dd"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: TypeLabeler: ClassTooLong \u2014 408 significant lines (blank, comment-only and punctuation-only lines excluded), 40 methods. The bar is 400 significant lines; this is 8 over it, 1.02\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":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7f226548374c9b5de44ae7c8371940a492ff9b1abc2aa75783795bb38841c10"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: analytics/analytics_manager.dart: FileTooLong \u2014 510 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: AnalyticsManager (36-817). The bar is 500 significant lines; this is 10 over it, 1.02\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analytics/analytics_manager.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f14d1cb7144ea9ca3dd57548979b106bceb88bc4401aa0e80b0972d7d3ad3b9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: arm64/stub_code_generator.dart: FileTooLong \u2014 510 significant lines (blank, comment-only and punctuation-only lines excluded), about 66% of them inside a single declaration: SubtypeTestCacheStub (193-692). The bar is 500 significant lines; this is 10 over it, 1.02\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stub_code_generator.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"494d7598d4d9a26cc1752f4f28e610af708cf61f78c59b425e65b64901579ed9"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: AstWriter._computeProperties: MethodTooLong \u2014 _computeProperties runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/utilities/ast_writer.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"df92554da4173c0c8481f275e9c569156246b10ac3c241e4a7617a0e9328d083"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DartEditBuilderImpl.writeOverride: MethodTooLong \u2014 writeOverride runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"d34099ef1ff45a15af531c2735db09cd1d3cc3fbdc555a79b8c3453dd1fd380f"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: DataSourceReader._readDartTypeNode: MethodTooLong \u2014 _readDartTypeNode runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/source.dart"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"80dc3f36cb92a18b8f9252a4658cf1521c1b501b5df2af871926e4434b801240"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _ExtensionTypeConstructorEncodingMixin._build: MethodTooLong \u2014 _build runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"a18c73a1d78840a4548569933bd2aee9a41451c686a7871d9b02044f9c43a0e2"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: InferenceVisitorImpl.visitIfNullPropertySet: MethodTooLong \u2014 visitIfNullPropertySet runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6008}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d2e4df156634b7a36185fcf9b9dbae619faf5a129e42a89390a366a26a133b"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: Application._printOutput: MethodTooLong \u2014 _printOutput runs 102 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 2 over it, 1.02\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/parser_direct_ast/console_helper.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8b463df2c419099b1df617efe7a995a5112d9eec912837e4cd8f7c3356e27d1"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: _ReferenceDependenciesCollector: ClassTooLong \u2014 407 significant lines (blank, comment-only and punctuation-only lines excluded), 100 methods. The bar is 400 significant lines; this is 7 over it, 1.02\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":"pkg/dart2wasm/lib/deferred_load/dependencies.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"efd353a2b3dd4499c72b2730f406f06c7b7b9997a16861732a45624e5093b3c6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: plugin/result_merger.dart: FileTooLong \u2014 507 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: ResultMerger (18-861). The bar is 500 significant lines; this is 7 over it, 1.01\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6be7e972163058c5c0ef747f6c02e1b84dfbf8264fb26df44ca357e2becee4c"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: error/annotation_verifier.dart: FileTooLong \u2014 507 significant lines (blank, comment-only and punctuation-only lines excluded), about 97% of them inside a single declaration: AnnotationVerifier (20-777). The bar is 500 significant lines; this is 7 over it, 1.01\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bdbd37b20aeb401df592e79680536e6e6bdaf3b2e05e9f78886485ddf095a02"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: DartAssistKind: ClassTooLong \u2014 405 significant lines (blank, comment-only and punctuation-only lines excluded), 0 methods. The bar is 400 significant lines; this is 5 over it, 1.01\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":"pkg/analysis_server/lib/src/services/correction/assist.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a59609b845d8697ef87004c7349481042c5c0fb5046cccf9248aace8690cea"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _EnumDescription.applyChanges: MethodTooLong \u2014 applyChanges runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5ff042234b027d2e0e06ca0c2ce79180115405452a322ba82a6ee67464af94a"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: RefactoringManager._createRefactoringFromKind: MethodTooLong \u2014 _createRefactoringFromKind runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring_manager.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"31cacc85e0920770ef03d369453bc6180fd12cdc085c55d8e06da062a50533c8"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: ExpectedCompletionsVisitor.safelyRecordEntity: MethodTooLong \u2014 safelyRecordEntity runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/visitors.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"7825bc26a0799f0f17059bb6b01d8e1b7d6f9fa360c6177c76d5d85890324f35"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: FileState.serializeAstUnlinked2: MethodTooLong \u2014 serializeAstUnlinked2 runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cce0c6516dd371f44ac739c26ff325c80f9030f9eabb69264551055e54f6bc5"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: IncrementalCompiler._computeReusedLibraries: MethodTooLong \u2014 _computeReusedLibraries runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2660}}}],"partialFingerprints":{"codehealthFindingId/v1":"08b90c28f4284d4409b00ab52a0b1ca200dd8f5375f1f27f1443170b37aedf94"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: SourceClassBuilder.checkOverride: MethodTooLong \u2014 checkOverride runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"df35c2888129135d2a61b3be4087e3aac574b4c2db7c037063ae695820cdf8eb"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: StandardBounds._getFunctionStandardUpperBound: MethodTooLong \u2014 _getFunctionStandardUpperBound runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":1332}}}],"partialFingerprints":{"codehealthFindingId/v1":"131ab070c94ffe979a65f8b622ba9e55d11d4e6d6f7877bda4ec2bbb4fa5a0f1"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: VMViewElement.describeVM: MethodTooLong \u2014 describeVM runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/vm_view.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbc41c4a5fb45cd7ecdf047bc657ecec9b4300680245345a03b6974f1d9a179d"}},{"ruleId":"D3","level":"warning","message":{"text":"MethodTooLong: _WebSocketImpl.connect: MethodTooLong \u2014 connect runs 101 significant lines (blank, comment-only and punctuation-only lines excluded) in one body. The bar is 100 significant lines; this is 1 over it, 1.01\u00D7 the bar. This is length, not branching: a long straight-line body scores low on complexity and is still read whole to change any part of it, so the complexity numbers beside this row neither confirm nor excuse it. To reduce it, extract each cohesive step of the body \u2014 the runs of statements that work on the same values and would earn the same name \u2014 into its own named unit, and have this one call them in order."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":1356}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a2eb6b302e6e1ccaecd5c886f986c08fd3e493f5b430003c25abef82c2e1835"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ParserAstVisitor: ClassTooLong \u2014 402 significant lines (blank, comment-only and punctuation-only lines excluded), 376 methods. The bar is 400 significant lines; this is 2 over it, 1.01\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":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":10622}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb16f805f853182823040996444cfa9fb92cb112a0a0582cee47476c12461a00"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: CpuProfileTableElement: ClassTooLong \u2014 402 significant lines (blank, comment-only and punctuation-only lines excluded), 33 methods. The bar is 400 significant lines; this is 2 over it, 1.01\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":"pkg/observatory/lib/src/elements/cpu_profile_table.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b4346a08abd864b0e7d1e0bbb31cd4a6e3892c80eea2cd1870c5a8d2dc0885"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: SourceTypeAliasBuilder: ClassTooLong \u2014 402 significant lines (blank, comment-only and punctuation-only lines excluded), 18 methods. The bar is 400 significant lines; this is 2 over it, 1.01\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":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3acfd9a936a2fe5de1b47d8fa8f7962aadabc8190efb29504fe155fb86ae85b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: startup_emitter/model_emitter.dart: FileTooLong \u2014 502 significant lines (blank, comment-only and punctuation-only lines excluded), about 81% of them inside a single declaration: ModelEmitter (107-778). The bar is 500 significant lines; this is 2 over it, 1.00\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d12f17c15ba719d6d0a7b6eb0fc1600a27ae3b1e8933b93184da01a5969305"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: transformations/track_widget_constructor_locations.dart: FileTooLong \u2014 502 significant lines (blank, comment-only and punctuation-only lines excluded), about 63% of them inside a single declaration: WidgetCreatorTracker (359-930). The bar is 500 significant lines; this is 2 over it, 1.00\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"28146107c5dd619eb9d4aa42d8ab37c161fcebbde108af72c36764accd854967"}},{"ruleId":"D3","level":"warning","message":{"text":"ClassTooLong: ForwardingNode: ClassTooLong \u2014 401 significant lines (blank, comment-only and punctuation-only lines excluded), 4 methods. The bar is 400 significant lines; this is 1 over it, 1.00\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":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a22711e58953c8d55e6951d17ff81608cd9d9b723b823fe8fe8d1eeaaf83f73"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: error/type_arguments_verifier.dart: FileTooLong \u2014 501 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: TypeArgumentsVerifier (31-785). The bar is 500 significant lines; this is 1 over it, 1.00\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/type_arguments_verifier.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff52fe8315ae96dd437361736db31a8e604def4c543c198b89235e9bc8dd91ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: fragment/enum_element.dart: FileTooLong \u2014 501 significant lines (blank, comment-only and punctuation-only lines excluded), about 67% of them inside a single declaration: EnumElementDeclaration (7-479). The bar is 500 significant lines; this is 1 over it, 1.00\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4847a3c76c7e4b658b840e3d843aa21ed8dda5106dcf3b035489ade686989eb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: async/zone.dart: FileTooLong \u2014 501 significant lines (blank, comment-only and punctuation-only lines excluded), about 88% of them inside a single declaration: Zone (147-1024). The bar is 500 significant lines; this is 1 over it, 1.00\u00D7 the bar. Moving the declarations that sit BESIDE it into sibling files will not shorten this file. Extract from INSIDE that declaration instead: lift each cohesive group of its body \u2014 the parts that share the same inputs and are named together \u2014 into its own unit in a sibling file, and have the original call them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/zone.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4fac778a6e14e43adf097d5733c33a91e3a285f1bf7e1f376b044dd57c44aef"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (6 members, 47 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1382-1461 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1463-1539 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1725-1915 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1917-2005 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2007-2115 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2309-2471 \u2014 These 6 members are variants of one another: a block of 47 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 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1382}}}],"partialFingerprints":{"codehealthFindingId/v1":"c37b2067803cf2d60b6a61305c3e4d055c27cd992e850a1383c7acfdf2ebd76e"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (4 members, 22 shared lines): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:534-600 | sdk/lib/_internal/js_runtime/lib/js_number.dart:625-690 | sdk/lib/_internal/vm/lib/integers.dart:444-511 | sdk/lib/_internal/wasm/common/boxed_int.dart:337-404 \u2014 These 4 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 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a652906eb677a84d444564a4740647d1862386f0ed6942883d92f3ce05a6eb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (3 members, 151 shared lines): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1504-1757 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1523-1775 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2112-2359 \u2014 These 3 members are variants of one another: a block of 151 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 3 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f2a90e7b1a9e6892fab20c33a5602039a3b7cee295b3a87d0b51db84b0db6f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (3 members, 131 shared lines): sdk/lib/_internal/vm/lib/convert_patch.dart:1303-1459 | sdk/lib/_internal/wasm/common/convert_patch.dart:1489-1645 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1181-1337 \u2014 These 3 members are variants of one another: a block of 131 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 3 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"5200cd1f8d503ec102939ddddf1d0a0522fc7691148df3df2c7211306aceedf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (3 members, 66 shared lines): pkg/front_end/lib/src/dill/dill_class_builder.dart:39-225 | pkg/front_end/lib/src/dill/dill_extension_builder.dart:34-203 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:38-366 \u2014 These 3 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 3 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f130299f90b424e4d4198d89b2a221a130461be2921e3b684bcbabc0ff704ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member family (3 members, 18 shared lines): pkg/wasm_builder/lib/src/serialize/sections.dart:1183-1204 | pkg/wasm_builder/lib/src/serialize/sections.dart:1235-1263 | pkg/wasm_builder/lib/src/serialize/sections.dart:1291-1312 \u2014 These 3 members are variants of one another: a block of 18 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 3 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 3 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":1183}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfb03a42d9a4c7defced3abc64195d8afed35c9eca0700fd424f9bdc9ec4b781"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (318 shared lines): pkg/dev_compiler/lib/src/kernel/compiler.dart:6709-7041 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7398-7751 \u2014 These two members are variants of one another: 318 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6709}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb136ec9a9c0d66686d005c89524d5db73a6cb5a8672606d4020922fa2a7bac1"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (132 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7066-7255 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7257-7524 \u2014 These two members are variants of one another: 132 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7066}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ad06ad4434f69a967d38d0d245257971d039987adcfc5c78fa7b276dae02fc4"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (125 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8423-8669 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8856-9125 \u2014 These two members are variants of one another: 125 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8423}}}],"partialFingerprints":{"codehealthFindingId/v1":"0287a87ee3abc5e3989d9a840dd28a3a8f87b0dc2ce60df53975efbc12312224"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (99 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8423-8669 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8671-8854 \u2014 These two members are variants of one another: 99 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8423}}}],"partialFingerprints":{"codehealthFindingId/v1":"99df1a89d9701a50d93aa10289ee3bca143902e15cc0292e551d33a90c96f130"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (97 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8671-8854 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8856-9125 \u2014 These two members are variants of one another: 97 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8671}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba064a0b39c634ce335a60409a12e98e2913bbfe85c29f84a1226feacb9d13c"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (86 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6821-7064 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7066-7255 \u2014 These two members are variants of one another: 86 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6821}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb0da42340f6a4f9e7259e371674228f3e5ee769647663b41afbbbe5447aa7e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (86 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6821-7064 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7257-7524 \u2014 These two members are variants of one another: 86 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6821}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccedb5cd240435fba1c2f5784b6821ad13b9c966aaba9f8651be5e716df73574"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (69 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6821-7064 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8423-8669 \u2014 These two members are variants of one another: 69 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6821}}}],"partialFingerprints":{"codehealthFindingId/v1":"08854f96dcbf74ba6aa8fc3c2dfcfdd462468d2415c60780f1636ada69962bec"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (68 shared lines): pkg/compiler/lib/src/js_model/element_map_impl.dart:683-796 | pkg/compiler/lib/src/kernel/element_map_impl.dart:355-466 \u2014 These two members are variants of one another: 68 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf5533a30c02e16de09dde3605ef799f2659df7b5cb3989256dfc464d377d0cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (51 shared lines): pkg/dev_compiler/lib/src/js_ast/builder.dart:1421-1502 | pkg/js_ast/lib/src/builder.dart:1236-1309 \u2014 These two members are variants of one another: 51 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1421}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3e2cfe592c80f5a9241b3dda0bf44d4edc7f0010de122abdbf19dc5b8c2391b"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (50 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6350-6477 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6479-6572 \u2014 These two members are variants of one another: 50 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6350}}}],"partialFingerprints":{"codehealthFindingId/v1":"030428c1a5efa01644e4420b4ce385670628326cba75f49eb9eb25109893eedc"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (44 shared lines): pkg/analyzer/lib/src/summary2/library_builder.dart:454-520 | pkg/analyzer/lib/src/summary2/library_builder.dart:522-602 \u2014 These two members are variants of one another: 44 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/library_builder.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"d83a8274c0055f4872b1e2e95239354e53cfe7b95174a0a7432bdc721c647f78"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (42 shared lines): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:156-315 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:507-654 \u2014 These two members are variants of one another: 42 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"b92cedc0cb6ec62fd2db0cf0b98aca31b6393ec43e025f96a7f7cf2503eecb3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (41 shared lines): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7066-7255 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8671-8854 \u2014 These two members are variants of one another: 41 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7066}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2a6c51fccff308932991b89df4654abf1dbc8e3a526977578f3e4dd0d999b1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (39 shared lines): pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2539-2582 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2615-2658 \u2014 These two members are variants of one another: 39 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2539}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d4f31bd3b9b75335f0b6d685c499998cfb77946f0a35e407d67f509eb2e37dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (28 shared lines): pkg/front_end/testcases/general/constants/potentially_constant_type.dart:49-106 | pkg/front_end/testcases/general/constants/potentially_constant_type_lib1.dart:33-69 \u2014 These two members are variants of one another: 28 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/constants/potentially_constant_type.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd8e294601a73d8648f3161da98849694017824866b54b466cac0ef3094d982"}},{"ruleId":"D4","level":"warning","message":{"text":"Near-duplicate member pair (26 shared lines): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1060-1093 | sdk/lib/_internal/wasm/common/compact_hash.dart:980-1013 \u2014 These two members are variants of one another: 26 of their lines are already reported as duplicated blocks below, spread through both bodies rather than gathered into one. Read them as a single construct written twice. The repair is at the members\u0027 grain \u2014 factor the shared pipeline into one implementation the two call with their differences as parameters or as an injected step, or, where the difference is systematic (sync against async, one transport against another), generate one from the other. Extracting the individual blocks below is not the same fix: it leaves the two bodies in place and the next edit still has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"f07d2f16e1af92ed31d23ba9df8fcb3ffd9ff7809729a242e66ec38454ed2af9"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (36 corresponding lines): pkg/analyzer/lib/src/utilities/string_search.dart:87-123 | pkg/analyzer/lib/src/utilities/string_search.dart:125-161 \u2014 These two members are one piece of code written twice and then edited apart: 36 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":"pkg/analyzer/lib/src/utilities/string_search.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00e31bd4719fe9f2f8dfbf2c60b86700ae2b3ebf51f58182adecb3574ea879e"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (45 corresponding lines): pkg/observatory/lib/src/elements/heap_snapshot.dart:670-966 | pkg/observatory/lib/src/elements/process_snapshot.dart:358-450 \u2014 These two members are one piece of code written twice and then edited apart: 45 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"443c11c4749377d9a90cc5c80d79f1d7558119050b1db655318439677c44499f"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (31 corresponding lines): pkg/wasm_builder/lib/src/ir/type.dart:763-808 | pkg/wasm_builder/lib/src/ir/type.dart:810-857 \u2014 These two members are one piece of code written twice and then edited apart: 31 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":"pkg/wasm_builder/lib/src/ir/type.dart"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"d83f02e78b57e5c114c707d89e783039e413ce63a901df6d6931ce3fefc2de01"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (36 corresponding lines): pkg/front_end/lib/src/fragment/constructor/encoding.dart:959-1005 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:1057-1100 \u2014 These two members are one piece of code written twice and then edited apart: 36 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":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"f177e58ff829c25c907ca10c01a5600346dd0ad708f9c2ed39a55f85548649b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (10 corresponding lines): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1608-1617 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1896-1905 \u2014 These two members are one piece of code written twice and then edited apart: 10 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":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1608}}}],"partialFingerprints":{"codehealthFindingId/v1":"c78ecfe9fa9e61139aa58521b8b0cc533cabf6cf6c5f6e1a4905f4b9affd9a86"}},{"ruleId":"D4","level":"warning","message":{"text":"Edited copy of a member (22 corresponding lines): pkg/kernel/lib/src/ast/expressions.dart:1603-1627 | pkg/kernel/lib/src/ast/expressions.dart:4870-4894 \u2014 These two members are one piece of code written twice and then edited apart: 22 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1603}}}],"partialFingerprints":{"codehealthFindingId/v1":"c32fcc37cd9c30516e0ed3be8cbf5992c7f3c672615aba6e72750ee49b93cb1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (16 members, 50\u002B identical tokens): sdk/lib/internal/internal.dart:215-223 | sdk/lib/internal/internal.dart:225-234 | sdk/lib/internal/internal.dart:236-255 | sdk/lib/internal/internal.dart:257-278 | sdk/lib/internal/internal.dart:280-303 | sdk/lib/internal/internal.dart:305-330 | sdk/lib/internal/internal.dart:332-359 | sdk/lib/internal/internal.dart:361-390 | sdk/lib/internal/internal.dart:392-423 | sdk/lib/internal/internal.dart:425-458 | sdk/lib/internal/internal.dart:460-495 | sdk/lib/internal/internal.dart:497-534 | sdk/lib/internal/internal.dart:536-575 | sdk/lib/internal/internal.dart:577-618 | sdk/lib/internal/internal.dart:620-663 | sdk/lib/internal/internal.dart:665-710 \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":"sdk/lib/internal/internal.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"afbe8d40e758d0b270a40fe1b707aff1572c571b05656289df6a636e5fc2eb61"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (14 members, 50\u002B identical tokens): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:152-161 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:196-202 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:228-237 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:272-278 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:167-176 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:211-217 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:255-264 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:299-305 | sdk/lib/_internal/wasm/common/simd.dart:24-33 | sdk/lib/_internal/wasm/common/simd.dart:64-70 | sdk/lib/_internal/wasm/common/simd.dart:128-137 | sdk/lib/_internal/wasm/common/simd.dart:168-174 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1705-1713 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2605-2613 \u2014 These 14 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 14 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 14 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f28c4c5bf8828d94bbaff040a3114581b7def1128665b8069d8281933bb20a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (14 members, 50\u002B identical tokens): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:132-180 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:243-285 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:580-618 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:629-676 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:698-745 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:795-834 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:842-878 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:885-919 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:953-1002 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1010-1052 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1068-1110 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1218-1252 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1263-1297 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1405-1451 \u2014 These 14 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 14 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 14 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"d13946595080ffae13756066fda52dc3f0bb5e854a1a538316fa02975bbeef9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (10 members, 50\u002B identical tokens): pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:157-176 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:178-197 | pkg/observatory/lib/src/elements/heap_snapshot.dart:968-993 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1049-1065 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1067-1092 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1108-1129 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1131-1146 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1148-1172 | pkg/observatory/lib/src/elements/process_snapshot.dart:454-470 | pkg/observatory/lib/src/elements/process_snapshot.dart:472-497 \u2014 These 10 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 10 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 10 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a50d13976a6538fd201dbc4d49cfbcc3dccdae88827bdc834263662ed399c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (9 members, 50\u002B identical tokens): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:152-161 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:228-237 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:304-311 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:167-176 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:255-264 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:342-349 | sdk/lib/_internal/wasm/common/simd.dart:24-33 | sdk/lib/_internal/wasm/common/simd.dart:128-137 | sdk/lib/_internal/wasm/common/simd.dart:234-241 \u2014 These 9 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 9 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 9 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"31408d5acced4014ea9b44ee90710f77755d64ef0b7db926c4792ac831421e9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (9 members, 50\u002B identical tokens): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:878-890 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:995-1007 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1114-1126 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1225-1237 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1348-1360 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1473-1485 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1596-1608 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1792-1804 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1896-1908 \u2014 These 9 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 9 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 9 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":878}}}],"partialFingerprints":{"codehealthFindingId/v1":"0657caa87bb379f6dfcac2865ec07b1e092d8ab277d78b544667e6c990834640"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (9 members, 50\u002B identical tokens): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_constructor.dart:121-131 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart:105-115 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_import.dart:145-155 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_label.dart:58-68 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_library.dart:60-70 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_local.dart:233-243 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_parameter.dart:139-149 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_type_parameter.dart:73-83 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_unit_member.dart:160-170 \u2014 These 9 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 9 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 9 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_constructor.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"85172d970bd4500cc68fb4d0ebc6e1a9d3bc1bcd02248ee6c7fcffe87574cbd7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (9 members, 50\u002B identical tokens): pkg/wasm_builder/lib/src/builder/instructions.dart:6015-6028 | pkg/wasm_builder/lib/src/builder/instructions.dart:6030-6043 | pkg/wasm_builder/lib/src/builder/instructions.dart:6045-6058 | pkg/wasm_builder/lib/src/builder/instructions.dart:6060-6073 | pkg/wasm_builder/lib/src/builder/instructions.dart:6075-6088 | pkg/wasm_builder/lib/src/builder/instructions.dart:6090-6103 | pkg/wasm_builder/lib/src/builder/instructions.dart:6105-6118 | pkg/wasm_builder/lib/src/builder/instructions.dart:6120-6133 | pkg/wasm_builder/lib/src/builder/instructions.dart:6225-6238 \u2014 These 9 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 9 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 9 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":6015}}}],"partialFingerprints":{"codehealthFindingId/v1":"f67eeff06400cad0223156cfa1433e0dc7ea0172aee3bc23634879d70a070d99"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:641-665 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:679-701 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1096-1115 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1124-1145 | sdk/lib/_internal/wasm/common/compact_hash.dart:606-633 | sdk/lib/_internal/wasm/common/compact_hash.dart:636-658 | sdk/lib/_internal/wasm/common/compact_hash.dart:1016-1035 | sdk/lib/_internal/wasm/common/compact_hash.dart:1045-1068 \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":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdff6f70510a9dde1d9ed0bab8b90ef677493a8f3dfb4ae76c4a44a54710569e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): pkg/analyzer/lib/src/dart/constant/value.dart:1160-1180 | pkg/analyzer/lib/src/dart/constant/value.dart:1182-1202 | pkg/analyzer/lib/src/dart/constant/value.dart:1260-1280 | pkg/analyzer/lib/src/dart/constant/value.dart:1282-1302 | pkg/analyzer/lib/src/dart/constant/value.dart:2165-2185 | pkg/analyzer/lib/src/dart/constant/value.dart:2187-2207 | pkg/analyzer/lib/src/dart/constant/value.dart:2263-2283 | pkg/analyzer/lib/src/dart/constant/value.dart:2285-2305 \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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":1160}}}],"partialFingerprints":{"codehealthFindingId/v1":"3546cca335132de07c327f02fdd8bfc5ec0eec6156ab333089084c1679be0aeb"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (8 members, 50\u002B identical tokens): pkg/front_end/lib/src/kernel/internal_ast.dart:2667-2688 | pkg/front_end/lib/src/kernel/internal_ast.dart:2860-2883 | pkg/front_end/lib/src/kernel/internal_ast.dart:3187-3212 | pkg/front_end/lib/src/kernel/internal_ast.dart:4433-4452 | pkg/front_end/lib/src/kernel/internal_ast.dart:4589-4610 | pkg/front_end/lib/src/kernel/internal_ast.dart:4732-4753 | pkg/front_end/lib/src/kernel/internal_ast.dart:4876-4897 | pkg/front_end/lib/src/kernel/internal_ast.dart:5004-5023 \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":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":2667}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eacc3399c89fb6b9bd8e586b9724d929a6398650467adfc79987502e30664d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:515-558 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:858-901 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:976-1019 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1319-1362 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1662-1705 | sdk/lib/_internal/wasm/common/typed_data.dart:2053-2105 | sdk/lib/_internal/wasm/common/typed_data.dart:2405-2460 \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":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89900097d1da160260dddebf534d955773b303ef18b2e33514f76c0194692c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): pkg/analyzer/lib/src/summary2/informative_data.dart:175-202 | pkg/analyzer/lib/src/summary2/informative_data.dart:204-221 | pkg/analyzer/lib/src/summary2/informative_data.dart:274-301 | pkg/analyzer/lib/src/summary2/informative_data.dart:310-336 | pkg/analyzer/lib/src/summary2/informative_data.dart:338-365 | pkg/analyzer/lib/src/summary2/informative_data.dart:468-495 | pkg/analyzer/lib/src/summary2/informative_data.dart:518-529 \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":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a6008f32cff53e8eda14a2cc76dd7b9bd3d33e8ea0b022978f884e9ece6f196"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (7 members, 50\u002B identical tokens): pkg/observatory/lib/src/elements/heap_snapshot.dart:1234-1266 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1268-1297 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1299-1328 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1330-1348 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1350-1381 | pkg/observatory/lib/src/elements/process_snapshot.dart:499-516 | pkg/observatory/lib/src/elements/process_snapshot.dart:518-547 \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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1234}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a2d7a550b405ce3c5099778c43d564485e75f56a6b520f4034cdc2de99ab255"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart:51-155 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_get_fixes_and_get_assists_requests.dart:46-106 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_hover_requests.dart:41-95 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_typing_temporary_missing_end_brace.dart:45-128 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/lsp_completion_after_change.dart:37-138 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/lsp_typing_temporarily_missing_end_brace_in_string_interpolation.dart:50-111 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"a34fff9b6aac66f6097b2eadc4861cfb1633d6ff98463cbede69b149bc442009"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart:42-61 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart:75-94 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart:108-127 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart:42-61 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart:75-94 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart:108-127 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"c561f646432902c63c2596e4043de9361bab974df383466871531cbd3339c3bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:262-270 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:598-606 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:944-952 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1287-1295 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1630-1638 | sdk/lib/_internal/wasm/common/typed_data.dart:2139-2147 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2e426a670dd5c6bfc5ac9249e46f30f15777c6746e64a6240298f1396de46a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:282-292 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:618-628 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:964-974 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1307-1317 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1650-1660 | sdk/lib/_internal/wasm/common/typed_data.dart:2159-2169 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"958bf0291c8bf76c8ed50829bf0d82cc1094a8047b27469dc5c7eb8b3cc67e0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:332-340 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:669-677 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1060-1068 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1403-1411 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1746-1754 | sdk/lib/_internal/wasm/common/typed_data.dart:2209-2217 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"817a520870a86ddf5b3cda6bed04853e9d5bc55714a3b33051400c649e5aa296"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:371-379 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:708-716 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1100-1108 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1443-1451 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1786-1794 | sdk/lib/_internal/wasm/common/typed_data.dart:2248-2256 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3f32fe29d0e1a37f77baa5ccdb03930300179f2da2261ec7a8ba8d54320df6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:381-391 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:718-728 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1110-1120 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1453-1463 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1796-1806 | sdk/lib/_internal/wasm/common/typed_data.dart:2258-2268 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ecc1e6fd42e5ed50d4d12c1d9b0bd630f185454adcd8c8069c6258c95802f21"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:393-410 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:730-747 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1122-1139 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1465-1482 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1808-1825 | sdk/lib/_internal/wasm/common/typed_data.dart:2270-2287 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d92cc241875ab905e55c090fc2ffe3d6c45f7165f9d8a2e5bf7dc1597e53a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:436-446 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:773-783 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1168-1178 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1511-1521 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1854-1864 | sdk/lib/_internal/wasm/common/typed_data.dart:2317-2327 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7192c4dccdd1a8b75f3b79acddf08993e0cccd68fc44ecb5dca104348ac234b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:448-456 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:785-793 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1180-1188 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1523-1531 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1866-1874 | sdk/lib/_internal/wasm/common/typed_data.dart:2329-2337 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"22bf594d5865d65c11ec8dbb953c70398787d0b05e601e3ae0a0bcfb2be3ebcf"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/analysis_server/lib/src/protocol/protocol_internal.dart:240-253 | pkg/analysis_server/lib/src/protocol/protocol_internal.dart:284-297 | pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart:495-508 | pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart:536-549 | pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart:579-592 | pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart:619-632 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/protocol/protocol_internal.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"a812d8c17ec9162ffa9b037e26fd0a44e74c2081f2eeb83f5c1a14642f4fff15"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/analyzer/lib/src/summary2/element_builder.dart:1339-1369 | pkg/analyzer/lib/src/summary2/element_builder.dart:1623-1647 | pkg/analyzer/lib/src/summary2/element_builder.dart:1654-1679 | pkg/analyzer/lib/src/summary2/element_builder.dart:1828-1855 | pkg/analyzer/lib/src/summary2/element_builder.dart:1878-1901 | pkg/analyzer/lib/src/summary2/element_builder.dart:1970-1994 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"4092aa898ce6977b85e38d3a3d62dbb5bb7741bbbd8f041e30643008848b87b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/front_end/lib/src/fragment/getter/encoding.dart:239-271 | pkg/front_end/lib/src/fragment/getter/encoding.dart:506-552 | pkg/front_end/lib/src/fragment/method/encoding.dart:182-214 | pkg/front_end/lib/src/fragment/method/encoding.dart:511-557 | pkg/front_end/lib/src/fragment/setter/encoding.dart:237-270 | pkg/front_end/lib/src/fragment/setter/encoding.dart:523-569 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"7946babd731c22504a39bc74ba9bb4504af2e9cdae9b222964d0f3d6ade848b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/front_end/lib/src/fragment/getter/encoding.dart:273-326 | pkg/front_end/lib/src/fragment/getter/encoding.dart:554-627 | pkg/front_end/lib/src/fragment/method/encoding.dart:216-283 | pkg/front_end/lib/src/fragment/method/encoding.dart:559-654 | pkg/front_end/lib/src/fragment/setter/encoding.dart:272-351 | pkg/front_end/lib/src/fragment/setter/encoding.dart:571-676 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"89abb59ac5a428f13c5ac720ebeffdfa0f9251ceb2f9b762a47e71f3249ea489"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/front_end/lib/src/fragment/getter/encoding.dart:372-391 | pkg/front_end/lib/src/fragment/getter/encoding.dart:673-693 | pkg/front_end/lib/src/fragment/method/encoding.dart:303-322 | pkg/front_end/lib/src/fragment/method/encoding.dart:674-694 | pkg/front_end/lib/src/fragment/setter/encoding.dart:374-393 | pkg/front_end/lib/src/fragment/setter/encoding.dart:699-719 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a77d7cfd924907b1285f0cfaf98a0d6e2426129287e9150455500badbbb6f92"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/front_end/lib/src/fragment/getter/encoding.dart:393-411 | pkg/front_end/lib/src/fragment/getter/encoding.dart:695-732 | pkg/front_end/lib/src/fragment/method/encoding.dart:324-342 | pkg/front_end/lib/src/fragment/method/encoding.dart:696-732 | pkg/front_end/lib/src/fragment/setter/encoding.dart:395-413 | pkg/front_end/lib/src/fragment/setter/encoding.dart:721-758 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"53d75e2456503405cf912b2d8d8616593bcdcacb7d72491731ad0f75e7ca88ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/front_end/lib/src/fragment/getter/encoding.dart:435-450 | pkg/front_end/lib/src/fragment/getter/encoding.dart:765-780 | pkg/front_end/lib/src/fragment/method/encoding.dart:392-407 | pkg/front_end/lib/src/fragment/method/encoding.dart:794-809 | pkg/front_end/lib/src/fragment/setter/encoding.dart:452-467 | pkg/front_end/lib/src/fragment/setter/encoding.dart:807-822 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b775eff9a5e286910efeac645e9b17d2ff3d4a9daa8a38712f9b3c295c405ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/front_end/lib/src/kernel/expression_generator.dart:1754-1771 | pkg/front_end/lib/src/kernel/expression_generator.dart:1964-1981 | pkg/front_end/lib/src/kernel/expression_generator.dart:2185-2202 | pkg/front_end/lib/src/kernel/expression_generator.dart:3732-3749 | pkg/front_end/lib/src/kernel/expression_generator.dart:4189-4207 | pkg/front_end/lib/src/kernel/expression_generator.dart:5422-5439 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":1754}}}],"partialFingerprints":{"codehealthFindingId/v1":"929d8531b89935a6ff9e1a8da6b293025610a848d60d7ffca0344fcdc346025a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): sdk/lib/vmservice/devfs.dart:181-201 | sdk/lib/vmservice/devfs.dart:203-221 | sdk/lib/vmservice/devfs.dart:223-278 | sdk/lib/vmservice/devfs.dart:280-335 | sdk/lib/vmservice/devfs.dart:337-395 | sdk/lib/vmservice/devfs.dart:397-420 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/devfs.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea48adcee630263c1521c7a02d58209d0ece8c0f1eeb79d5e991db2c1380c168"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart:779-794 | sdk/lib/_http/http_impl.dart:1118-1132 | sdk/lib/_internal/vm_shared/lib/string_buffer_patch.dart:99-114 | sdk/lib/_internal/wasm/standalone/string_buffer_patch.dart:42-58 | sdk/lib/io/io_sink.dart:296-310 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd3c253452f117d07a98487f9e2335bf4355d6b43f960cad7616f1cc8d46f1d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:495-504 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:832-842 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1235-1244 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1578-1587 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1921-1930 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e5422bac92334ab02b1b17d2e19709e24a3a4685ee0aca66370a0c68b7b55a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types.dart:77-116 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types.dart:188-217 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/list.dart:159-238 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/map.dart:39-82 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/record.dart:62-118 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"b006365494ab08de33018060c73bb3022c159b21ccf2ebee64e377a34abdcc8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/analysis_server/lib/src/lsp/handlers/custom/handler_augmentation.dart:26-54 | pkg/analysis_server/lib/src/lsp/handlers/custom/handler_augmented.dart:26-54 | pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart:29-79 | pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart:39-102 | pkg/analysis_server/lib/src/lsp/handlers/handler_signature_help.dart:30-109 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/handler_augmentation.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"d617b232db83332bcab78b6e95c58e3ffead96705ea0ceef619e378e631a3e25"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:534-569 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:619-656 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:658-677 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:679-709 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:878-902 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98e1dd096b39c481b5ef416d2a97f7c1f4f8cb28d77865e36a5886f27493fec"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/analyzer/lib/src/fine/library_manifest.dart:1995-2019 | pkg/analyzer/lib/src/fine/library_manifest.dart:2021-2045 | pkg/analyzer/lib/src/fine/library_manifest.dart:2047-2071 | pkg/analyzer/lib/src/fine/library_manifest.dart:2073-2097 | pkg/analyzer/lib/src/fine/library_manifest.dart:2099-2123 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1995}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2be9e2334604a1235b66282708e72547ce61fa5f649bc1d031669383bfb9356"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/analyzer/lib/src/fine/manifest_item.dart:79-100 | pkg/analyzer/lib/src/fine/manifest_item.dart:269-288 | pkg/analyzer/lib/src/fine/manifest_item.dart:376-391 | pkg/analyzer/lib/src/fine/manifest_item.dart:460-481 | pkg/analyzer/lib/src/fine/manifest_item.dart:1363-1384 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_item.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"0545f68b3318346fbd27e28f6b4291426850f6e338f5bde787399b04000db19c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/analyzer/lib/src/summary2/bundle_reader.dart:255-298 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:456-492 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:543-576 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:610-648 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:1064-1101 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a36eda47b04d090d8e139b5665c6de4b34255c0c1c3c27a8f16c2c8626699d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/analyzer/lib/src/summary2/bundle_reader.dart:300-334 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:494-526 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:578-608 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:650-681 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:1103-1135 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3120cfea4fd7c571881551f0e44fa3d868e798478f7ac23c4cb591b5e216681"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/analyzer/lib/src/summary2/bundle_writer.dart:172-190 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:295-311 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:352-366 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:401-416 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:689-706 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ca2d995c42b12b022a02988e9f035f14b101e673524e50a1cf96f677616e01e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/dartdev/lib/src/commands/compile.dart:126-175 | pkg/dartdev/lib/src/commands/compile.dart:198-230 | pkg/dartdev/lib/src/commands/dart_mcp_server.dart:47-94 | pkg/dartdev/lib/src/commands/development_service.dart:30-62 | pkg/dartdev/lib/src/commands/tooling_daemon.dart:29-56 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"4868b01ae8ecb6c675f2224a1171d5293647e5c44a76cd19759b310f838de392"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:249-258 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:281-290 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:313-322 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:541-550 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:572-581 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"c84e1e3c9446b8bb47f77baed58c7441e5ab22263b7b52bc0ee7be12fa99100c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/observatory/lib/src/elements/error_view.dart:56-75 | pkg/observatory/lib/src/elements/general_error.dart:58-74 | pkg/observatory/lib/src/elements/isolate_reconnect.dart:75-119 | pkg/observatory/lib/src/elements/json_view.dart:57-71 | pkg/observatory/lib/src/elements/vm_connect.dart:62-121 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/error_view.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"1551ec42855f3b4fdb766687c345994c7eaa383f2d135f01cc133718c7f8b441"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/observatory/lib/src/elements/icdata_view.dart:90-195 | pkg/observatory/lib/src/elements/library_view.dart:111-198 | pkg/observatory/lib/src/elements/singletargetcache_view.dart:95-180 | pkg/observatory/lib/src/elements/subtypetestcache_view.dart:92-149 | pkg/observatory/lib/src/elements/unlinkedcall_view.dart:91-160 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/icdata_view.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"30d4a92fd076d37e2d27d08bed839616ea685b5f732194d623d7faee9fc81c94"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/observatory/lib/src/elements/library_view.dart:210-242 | pkg/observatory/lib/src/elements/library_view.dart:244-267 | pkg/observatory/lib/src/elements/library_view.dart:269-288 | pkg/observatory/lib/src/elements/library_view.dart:290-335 | pkg/observatory/lib/src/elements/library_view.dart:337-360 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/library_view.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"747ac798071f6f8ed07bc897d205dd47329c4a1182f64b3605b0c53d71cd2c67"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/observatory/lib/src/elements/nav/notify_event.dart:90-105 | pkg/observatory/lib/src/elements/nav/notify_event.dart:107-122 | pkg/observatory/lib/src/elements/nav/notify_event.dart:147-164 | pkg/observatory/lib/src/elements/nav/notify_event.dart:166-183 | pkg/observatory/lib/src/elements/nav/notify_event.dart:185-200 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/nav/notify_event.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"11e87d78f19b341b7576a9bd4a9c7471ea0016984c8fe73ee0b60385f8289848"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2352-2400 | pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2402-2470 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1575-1619 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1621-1679 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2352}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d410ad11b5c28670510b38b0047d86252f14425e9321237303af90c312fdf9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:157-167 | pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:169-179 | pkg/front_end/tool/fuzz/analyzer_helper.dart:397-407 | pkg/front_end/tool/fuzz/analyzer_helper.dart:409-419 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"48c4a17fcdb4d0724477073ee900d1e9770ff666a436ba1b8e8b58a3e922f5b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/testcases/general/lookup.dart:68-111 | pkg/front_end/testcases/general/lookup.dart:113-158 | pkg/front_end/testcases/general/lookup.dart:160-204 | pkg/front_end/testcases/general/lookup.dart:206-250 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/lookup.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"546df512a7440d08d36ac5f1e3977e3a73342a46b39bc6abb978b928b443cede"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/testcases/general/lookup.dart:358-401 | pkg/front_end/testcases/general/lookup.dart:405-450 | pkg/front_end/testcases/general/lookup.dart:452-496 | pkg/front_end/testcases/general/lookup.dart:498-542 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/lookup.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d608ede4e0740fe6b01419d9647570963ac7ec1ce3b8e3cc70c6ade6f41755"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/testcases/general/pure_index_expressions.dart:30-44 | pkg/front_end/testcases/general/pure_index_expressions.dart:61-75 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:38-53 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:71-86 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/pure_index_expressions.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d1c7de67c22d8cfd2a78a73208aa15a0a9218b7d1e5edb9d853b7ff5aeaca9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart:28-40 | pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart:47-55 | pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart:28-40 | pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart:47-55 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fed42cf6f4384d51d7ceb6f98c6cde2b0d5a202f982be119e52fe6bb0b10003"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:39-55 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:117-133 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:195-211 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:231-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":"pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc9c12f89522101c3e619be62a77e636cb9aad4df1e08709c8f6762e81c1cba"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart:583-598 | sdk/lib/_internal/js_runtime/lib/core_patch.dart:579-594 | sdk/lib/_internal/wasm/js_common/string_buffer_patch.dart:57-76 | sdk/lib/_internal/wasm/js_compatibility/string_buffer_patch.dart:43-62 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ccfac0cd6b53e628a77025e4d3ecbce2f27d2d4fcd3223844b44d8f3ddffe3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/js_dev_runtime/patch/isolate_patch.dart:45-60 | sdk/lib/_internal/js_runtime/lib/isolate_patch.dart:57-74 | sdk/lib/_internal/vm/lib/isolate_patch.dart:432-524 | sdk/lib/_internal/wasm/common/isolate_patch.dart:54-71 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/isolate_patch.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00b3f66dc20cf7fbd3782595f731f33077f99789e453abaacd5e70d92c36202"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:618-627 | sdk/lib/_internal/js_runtime/lib/js_number.dart:709-719 | sdk/lib/_internal/vm/lib/integers.dart:527-534 | sdk/lib/_internal/wasm/common/boxed_int.dart:421-428 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd0c648a321e0516df5f28df098962c1f7e8e52c97145d5481374a956caa12a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1707-1715 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1717-1725 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1995-2003 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2005-2013 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1707}}}],"partialFingerprints":{"codehealthFindingId/v1":"e57dd8a35cbc727425c846a6004d962463bfd391454e53490856c9831b80ee79"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart:290-317 | sdk/lib/_internal/js_runtime/lib/regexp_helper.dart:306-333 | sdk/lib/_internal/wasm/js_common/regexp_helper.dart:271-303 | sdk/lib/_internal/wasm/standalone/regexp.dart:191-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":"sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ed2866cfd1ac1958076edb8092c5ac1db6d78a04c2090616c7c7eed3e48b08d"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:595-603 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:282-290 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:500-508 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:521-533 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"46055451687aab2a7bf1a68f40482374ce8e5e4037174462878aefa759161a81"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/growable_array.dart:611-622 | sdk/lib/_internal/vm/lib/growable_array.dart:624-636 | sdk/lib/_internal/vm/lib/growable_array.dart:638-651 | sdk/lib/_internal/vm/lib/growable_array.dart:653-676 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":611}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2912afb135eda9e218da9cdf7932ec495c423419a56b2536eb4137fa6c23139"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/vm/lib/typed_data_patch.dart:2575-2586 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:2645-2656 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:4581-4592 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:4648-4659 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":2575}}}],"partialFingerprints":{"codehealthFindingId/v1":"085670d625331626a15990578dbdc32d0eff439002f32c460fd217888967aafc"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/wasm/common/typed_data.dart:662-674 | sdk/lib/_internal/wasm/common/typed_data.dart:757-781 | sdk/lib/_internal/wasm/common/typed_data.dart:865-877 | sdk/lib/_internal/wasm/common/typed_data.dart:937-961 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"c44c01dd6a8ecd38cb3b0472283f8e05b31af340ffa486074fe8ab9ebd0d230e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): sdk/lib/_internal/wasm/common/typed_data.dart:2596-2613 | sdk/lib/_internal/wasm/common/typed_data.dart:2660-2677 | sdk/lib/_internal/wasm/common/typed_data.dart:2724-2741 | sdk/lib/_internal/wasm/common/typed_data.dart:2788-2805 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":2596}}}],"partialFingerprints":{"codehealthFindingId/v1":"400c2712a8c1975b056fd03f9f3bff3059b5df1952a79cf1307c43a54efee9a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/native_compiler/lib/snapshot/snapshot.dart:1958-1967 | pkg/native_compiler/lib/snapshot/snapshot.dart:2010-2019 | pkg/native_compiler/lib/snapshot/snapshot.dart:2068-2077 | pkg/native_compiler/lib/snapshot/snapshot.dart:2142-2151 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":1958}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dd2a02c3c942c74f1d9c300dfc5d08aee6af52a956ad9a1070dec001b8350c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:71-115 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:297-337 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1308-1355 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1583-1629 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"9706f5180e884af2057af792a76c7c2a338b903aa36623aa70a9b8843d665e0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:239-261 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:278-296 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:313-329 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:465-481 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"7594597995a6b783027a1a2640f469af9c87f75ed18f4eb16ba479a8ce362756"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analysis_server/lib/src/status/pages/assists_page.dart:27-66 | pkg/analysis_server/lib/src/status/pages/code_completion_page.dart:28-66 | pkg/analysis_server/lib/src/status/pages/fixes_page.dart:27-66 | pkg/analysis_server/lib/src/status/pages/refactorings_page.dart:28-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":"pkg/analysis_server/lib/src/status/pages/assists_page.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"943a22b88249095c1670eac88fa35acd2ced2794bd0f2bf8d75e37e9a712c1a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/dart/ast/ast.dart:6175-6187 | pkg/analyzer/lib/src/dart/ast/ast.dart:14684-14696 | pkg/analyzer/lib/src/dart/ast/ast.dart:15420-15432 | pkg/analyzer/lib/src/dart/ast/ast.dart:57207-57219 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6175}}}],"partialFingerprints":{"codehealthFindingId/v1":"a729e8e8f86d54da9590e68afd9bfbc4a9bf5e8ed12f90459014ba2ef57676c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/dart/ast/ast.dart:6242-6254 | pkg/analyzer/lib/src/dart/ast/ast.dart:14758-14770 | pkg/analyzer/lib/src/dart/ast/ast.dart:15487-15499 | pkg/analyzer/lib/src/dart/ast/ast.dart:57278-57290 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6242}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d7900b6aadc5f308a9bea58b4da6c56da996a3ae9f934dddb0ae1ba9e65838"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/dart/ast/ast.dart:7861-7877 | pkg/analyzer/lib/src/dart/ast/ast.dart:7879-7895 | pkg/analyzer/lib/src/dart/ast/ast.dart:8374-8391 | pkg/analyzer/lib/src/dart/ast/ast.dart:8393-8410 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7861}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7b6a8fbcf01d4aa7f09621e816d9f1a781c75799b7f9bcb4f68bc015d94a61f"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/dart/ast/ast.dart:13014-13028 | pkg/analyzer/lib/src/dart/ast/ast.dart:19468-19485 | pkg/analyzer/lib/src/dart/ast/ast.dart:19625-19642 | pkg/analyzer/lib/src/dart/ast/ast.dart:39138-39152 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13014}}}],"partialFingerprints":{"codehealthFindingId/v1":"c58976ffe206ac82cdf1f4076c3294a8ae7d9edac22d710c4abcbd95ec055ea0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/dart/ast/ast.dart:17524-17542 | pkg/analyzer/lib/src/dart/ast/ast.dart:17544-17562 | pkg/analyzer/lib/src/dart/ast/ast.dart:29560-29583 | pkg/analyzer/lib/src/dart/ast/ast.dart:29585-29603 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17524}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd57b761ab65b65503c1ec3116c0d1fd5603911568b0791a0f3f4bc8d656c5b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/dart/ast/ast.dart:20387-20403 | pkg/analyzer/lib/src/dart/ast/ast.dart:22026-22041 | pkg/analyzer/lib/src/dart/ast/ast.dart:49556-49572 | pkg/analyzer/lib/src/dart/ast/ast.dart:53035-53051 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20387}}}],"partialFingerprints":{"codehealthFindingId/v1":"5249011733fa23df813a260ca00491ebc315314216ed88bd90d855267a0b0f7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/dart/ast/ast.dart:34354-34367 | pkg/analyzer/lib/src/dart/ast/ast.dart:34609-34622 | pkg/analyzer/lib/src/dart/ast/ast.dart:36432-36445 | pkg/analyzer/lib/src/dart/ast/ast.dart:50733-50746 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":34354}}}],"partialFingerprints":{"codehealthFindingId/v1":"80792845dca66514f2a30495c4f261086bf8ec99e5106c84f1fc323fbd1a1991"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/fine/library_manifest.dart:342-368 | pkg/analyzer/lib/src/fine/library_manifest.dart:444-470 | pkg/analyzer/lib/src/fine/library_manifest.dart:527-553 | pkg/analyzer/lib/src/fine/library_manifest.dart:725-751 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a826e551829004cbf8c5ad1d86d1e532d21981799f445d90bead983850db149"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/fine/manifest_item.dart:50-77 | pkg/analyzer/lib/src/fine/manifest_item.dart:242-267 | pkg/analyzer/lib/src/fine/manifest_item.dart:431-458 | pkg/analyzer/lib/src/fine/manifest_item.dart:1332-1361 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_item.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e40b269517a444867f51d6d01c787b102195171849d563217ef26e1f3748bac"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:205-219 | pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:819-835 | pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:1595-1613 | pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:2024-2038 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a6c6d2b8f3f7c79cf73eff449b8bfe7836984deb79c57f57a806363fe660e82"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:141-153 | pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:501-514 | pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:845-859 | pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:1120-1132 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_writer.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"da2a8fae0a552498c522eba9198c684f522a4699fcf2188961236cbe3f40e91a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/compiler/lib/src/js_model/closure.dart:631-647 | pkg/compiler/lib/src/js_model/closure.dart:687-704 | pkg/compiler/lib/src/js_model/closure.dart:743-762 | pkg/compiler/lib/src/js_model/closure.dart:842-885 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"18ffedc5ac15f44fa688df5789ba1cd0048902b8b49bd7225992230812ee0f07"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/compiler/lib/src/js_model/elements.dart:563-595 | pkg/compiler/lib/src/js_model/elements.dart:699-728 | pkg/compiler/lib/src/js_model/elements.dart:779-806 | pkg/compiler/lib/src/js_model/elements.dart:855-882 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"2be4f451a795074e3f0efd5750b0839be5619fd0a6678746f3a2af51a9beccc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/compiler/lib/src/js_model/elements.dart:597-615 | pkg/compiler/lib/src/js_model/elements.dart:730-747 | pkg/compiler/lib/src/js_model/elements.dart:808-824 | pkg/compiler/lib/src/js_model/elements.dart:884-900 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"71b16312e84c6a7dbb166c4318483a951dd7da23e95b0eff951e74c06458f8a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/lib/src/fragment/class/declaration.dart:76-95 | pkg/front_end/lib/src/fragment/class/declaration.dart:148-167 | pkg/front_end/lib/src/fragment/class/declaration.dart:221-240 | pkg/front_end/lib/src/fragment/class/declaration.dart:357-376 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/class/declaration.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"738038b76c5ddc187b8e8e7337da57704246db2a015b66d241fd9479917d5483"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/lib/src/fragment/getter/encoding.dart:328-370 | pkg/front_end/lib/src/fragment/getter/encoding.dart:629-671 | pkg/front_end/lib/src/fragment/setter/encoding.dart:353-372 | pkg/front_end/lib/src/fragment/setter/encoding.dart:678-697 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0fe063cb457f68e5614201f39ca9c6230db5a6c3f80d28ddf972de451485757"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1093-1129 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1131-1163 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1645-1681 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1683-1715 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1093}}}],"partialFingerprints":{"codehealthFindingId/v1":"52245640c53ce7c506a9604a8d4692a02d7cd238df280fd320378bb17698eaf6"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/lib/src/type_inference/inference_visitor.dart:5516-5586 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5599-5674 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5676-5748 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5750-5895 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5516}}}],"partialFingerprints":{"codehealthFindingId/v1":"e04227dfd4355b6f980f61de3ec01f3245aa2f38f1a7c220ad598ce8c5f2ee0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:71-79 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:124-132 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:171-179 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:218-226 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc1418a67b959b4fdcd1245f3f309f516ff55f35941a08ef244e98482823c62b"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/kernel/lib/src/tool/check_equivalence.dart:339-361 | pkg/kernel/lib/src/tool/check_equivalence.dart:431-453 | pkg/kernel/lib/src/tool/check_equivalence.dart:455-477 | pkg/kernel/lib/src/tool/check_equivalence.dart:479-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":"pkg/kernel/lib/src/tool/check_equivalence.dart"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"31924e783b87e841fd57e13c295039d796d36e81aaabc01c480f6db5b2e3e55a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:207-238 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:240-273 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:282-313 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:315-350 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"495025857b160516d6e9ea57ad5300b79a83db8eb724c473413b9cc94f704c8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/kernel/lib/testing/type_parser.dart:104-130 | pkg/kernel/lib/testing/type_parser.dart:144-158 | pkg/kernel/lib/testing/type_parser.dart:173-186 | pkg/kernel/lib/testing/type_parser.dart:208-226 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/testing/type_parser.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"9387ed50576f4dc879091ac2fe68f795e7754b4f9c1c47611664d1e3d0c0071f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (125\u2013128 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1151-1278 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:478-602 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1151}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eccb126e899b5460f21929584333be99ae89f8e84e9e58726e0948434b1a1f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (123\u2013124 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6911-7033 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7598-7721 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6911}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f7928b53d439b2168c4605f2b374a80b33bd9141e850b99508143a90f4dd50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (119 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2693-2811 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:3003-3121 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2693}}}],"partialFingerprints":{"codehealthFindingId/v1":"e39147706e9cd17e3ada8324d418fd21a9eb8025a123693b938eb13ede471112"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (117 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6341-6457 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7030-7146 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6341}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f1282fbddc1dc61c0a60436f7380f40174f0522de64b4cc703cc5e619c8a50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (116 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6709-6824 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7398-7513 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6709}}}],"partialFingerprints":{"codehealthFindingId/v1":"aadbf578df6a7993f0addd35f11f215851b85d5aa577395221c4030acb196d72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (97 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1828-1924 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1386-1482 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1828}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8fbefa04229fd05c1291f30115e2ca0c687ecc01639d56f4e4c008ce98fe115"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (97 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:2199-2295 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6047-6143 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":2199}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a9e2a5f1331461dbf91f09838c4cc8282cf258031a2227bc43eaaaa1c52c9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (90 lines \u00D7 2): pkg/js_shared/lib/synced/recipe_syntax.dart:170-259 | sdk/lib/_internal/js_shared/lib/synced/recipe_syntax.dart:170-259 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_shared/lib/synced/recipe_syntax.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1247e6f351cae84ec9b0aeb6028f498bb321d40a4fa9b744ed5146ae09fd3f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (88 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart:156-243 | pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart:466-553 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e836542e540e58b92010441ed76863e358857f5d25f580a89769423b5386ec1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (82 lines \u00D7 2): pkg/front_end/parser_testcases/patterns/const_patterns.dart:36-117 | pkg/front_end/testcases/patterns/const_patterns.dart:42-123 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/parser_testcases/patterns/const_patterns.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"014ba09e5065daf44792a6e4b934fb4b442cf18094c2dc163867547a38afb939"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (78\u201379 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6828-6906 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7517-7594 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6828}}}],"partialFingerprints":{"codehealthFindingId/v1":"88462daab43099c5df8fa33b0afd9c0063f3fe74ed60166c0fada08814225ea3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (68\u201371 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7186-7253 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7448-7518 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7186}}}],"partialFingerprints":{"codehealthFindingId/v1":"363cc170755825148e353554b07abe6b64e2f74fff22b30dc39571b3d7c47317"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (70 lines \u00D7 2): sdk/lib/_internal/wasm/common/convert_patch.dart:1536-1605 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1228-1297 \u2014 \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 265 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1536}}}],"partialFingerprints":{"codehealthFindingId/v1":"992ceec61a0b33a7e68e206776675f5d30ea2efc186bbfd9ad842ee9e9dcc4dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (70 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5060-5129 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5670-5739 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5060}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb2429fcf1687bcf84807d519d72219d00030396945bb2de25630fd27ebcc2ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (68\u201369 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7758-7825 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8625-8693 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7758}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca7def9c5e8bb2d7f2412719bd346a0847be4a58a2fe55c06549ccf0f0d285fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (68 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart:127-194 | sdk/lib/_internal/js_runtime/lib/math_patch.dart:120-187 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/math_patch.dart\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 144 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb37615b244bd054fcbdaf03cb68e6efb50cdd725ef86cefaf7e157be6efca03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (68 lines \u00D7 2): sdk/lib/_internal/vm/lib/integers.dart:444-511 | sdk/lib/_internal/wasm/common/boxed_int.dart:337-404 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/integers.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/boxed_int.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"f74cf0d0822501de438a162185f9990ac48027e9f805db0ac5086449638041eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (68 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7461-7528 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8328-8395 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7461}}}],"partialFingerprints":{"codehealthFindingId/v1":"3effcde6d981c3f50cef57b3a27b581d91bc4013f0c49e29ff26910a5712ec5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (66 lines \u00D7 2): pkg/compiler/lib/src/js/size_estimator.dart:732-797 | pkg/js_ast/lib/src/printer.dart:1107-1172 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/size_estimator.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 154 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"050189e2f7a09c6026c03589e478ffaeda123a1bc6941bd620b76c279540e714"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (65 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:536-600 | sdk/lib/_internal/js_runtime/lib/js_number.dart:626-690 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"8996fe8f53f9058b70cd7804d2632091869b7edd2e6544e194951e915f1f37f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (62 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6011-6072 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6700-6761 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6011}}}],"partialFingerprints":{"codehealthFindingId/v1":"b445afd1801075ed807866f8e3ba49258055025926017205993759e4d97da356"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (61 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/join_if_with_inner.dart:42-102 | pkg/analysis_server/lib/src/services/correction/dart/join_if_with_outer.dart:48-108 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/join_if_with_inner.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"514afa7ba57fd70e0e9357f6067bd26cfb6c43a8249bf217a71da4dbd40b2f4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (61 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2163-2223 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2463-2523 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2163}}}],"partialFingerprints":{"codehealthFindingId/v1":"904b387bf3d271f29e0fabb907eb1d8109ae806ee011a90519b4bff154633283"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (61 lines \u00D7 2): pkg/vm_service/lib/src/_stream_helpers.dart:30-90 | pkg/vm_service_interface/lib/src/stream_helpers.dart:28-88 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/_stream_helpers.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ea914ac038a5e6406a0772e894c8f583dcc43fce86f27853d9c4c2dc706ccd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (59\u201360 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/encoding.dart:1254-1313 | pkg/front_end/lib/src/fragment/field/encoding.dart:1820-1878 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1254}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7fdbcc66fec19ed1242f98b9e97f143f370e00edc55bae0dfcac20e001a861d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (56\u201360 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8562-8617 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:9019-9078 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8562}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f5d2e06171a923604cbe7f141cf1cbcc0523eac8acf92ad75dabfc580bacbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2061-2118 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2361-2418 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2061}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6e4594d50f610f0782115819c1e34f3d60398505a697e95afb65aaf1e518c2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (58 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8248-8305 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9117-9174 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8248}}}],"partialFingerprints":{"codehealthFindingId/v1":"9add6e3080b0f45e1ce7dce2282ca731c2c54d4bf928194aadb7014125e72b1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50\u201357 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8597-8647 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8794-8843 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:9054-9110 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8597}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8c6d3036d2cbee7e41e1106d40c5240f7c9165d946a6a3b2197cd03ac27eeb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (57 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4668-4724 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5278-5334 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4668}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d4071f97ad5e1c219baea310c85407beaa6e2fc06c5ea6c92c6d31455dfe0a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (56 lines \u00D7 2): pkg/dart2wasm/lib/list_factory_specializer.dart:38-93 | pkg/vm/lib/modular/specializer/list_factory_specializer.dart:36-91 \u2014 before extracting anything, compare \u0060pkg/dart2wasm/lib/list_factory_specializer.dart\u0060 and \u0060pkg/vm/lib/modular/specializer/list_factory_specializer.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 151 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/list_factory_specializer.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"f566c624b82f0adb35c9f59eb7672292af9b6c1a8183944c3159792d31cdd1af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (56 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart:942-997 | sdk/lib/_internal/js_runtime/lib/async_patch.dart:660-715 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/async_patch.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7682e68980a56387249eb77927d5e8414acf9699ccc755a38f750261922d47e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (56 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5131-5186 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5741-5796 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5131}}}],"partialFingerprints":{"codehealthFindingId/v1":"49e2932a7ce5a7fd0603d9ef59181622e1ea27a284ce974321a030c71f196ce7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (55 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4055-4109 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4651-4705 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4055}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd53f38a5bcc70bd6c75e8417111bb013d48355b6736321f19bbbe7b40188d2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (53\u201354 lines \u00D7 2): pkg/analyzer/lib/src/fasta/ast_builder.dart:238-291 | pkg/analyzer/lib/src/fasta/ast_builder.dart:510-562 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcfe197beb4e51188b100335c3f95c75e5e9f243533787f36d0309b3572edf58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (52 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:5215-5266 | pkg/front_end/lib/src/source/outline_builder.dart:3747-3798 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/body_builder.dart\u0060 and \u0060pkg/front_end/lib/src/source/outline_builder.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 99 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":5215}}}],"partialFingerprints":{"codehealthFindingId/v1":"01cfe81bb0798b8fabd9289f73292e718313409c047ce3d5335059b2c00d04f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (51 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1665-1715 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1683-1733 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2267-2317 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1665}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe0c698887773c7f97e378864bbe728a919b8042eb39b0eb5a655d3295312175"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1986-2035 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1524-1573 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1986}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c2a2bd9bb57f010fcc367f82c99dcb98e4f16acfcd4536a3518d81472533b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3626-3675 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4227-4276 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3626}}}],"partialFingerprints":{"codehealthFindingId/v1":"890ba9bb6a7d4ffc3247d57ae6905413c9be11d5f13275ee3b89eae2848ffa55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1093-1141 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:429-477 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1093}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed0cb4ebc811987626eb8433cd12a0ee32a880677a927c2198f33ae499d729e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (49 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:5752-5800 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5899-5947 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5752}}}],"partialFingerprints":{"codehealthFindingId/v1":"25932132aab87d2a79f566c1521d3f38dcaf8ad4c1d132f4a96a294f804432d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39\u201348 lines \u00D7 2): pkg/dart2wasm/lib/list_factory_specializer.dart:113-160 | pkg/vm/lib/modular/specializer/list_factory_specializer.dart:135-173 \u2014 before extracting anything, compare \u0060pkg/dart2wasm/lib/list_factory_specializer.dart\u0060 and \u0060pkg/vm/lib/modular/specializer/list_factory_specializer.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 151 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/list_factory_specializer.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"68bb5ce798e6f7728cc8ac7a9a388db9a2aad31171a85e0dc441191c5801ced5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (46 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:1233-1278 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:1526-1571 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1233}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebea25966a80ae074d79799875bccc1fdd255c99f9e121ffff55e37a1c26ebb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (46 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5307-5352 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5917-5962 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5307}}}],"partialFingerprints":{"codehealthFindingId/v1":"0453068bebcabd3576ffbbcdcff6b600f5aafdfeb0378498eb7762f6c24016f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (45 lines \u00D7 2): pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart:292-336 | pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart:753-797 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"95c11db33ee900d91caa3b205f8d3f09a9e02948e5ebc85ccdb90c5b1653735e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28\u201344 lines \u00D7 2): pkg/analyzer/lib/src/error/error_handler_verifier.dart:337-364 | pkg/analyzer/lib/src/error/error_handler_verifier.dart:370-413 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/error_handler_verifier.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e853403d7f44fbba44c02f43be9414d9e2a74686b876dfbc7767523a6878d0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (44 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8088-8131 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8957-9000 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8088}}}],"partialFingerprints":{"codehealthFindingId/v1":"2975a0ecd1d0eda4cf2b458fce91cd0f7bc5fed1917e516f18f44dae338d4e25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 2): pkg/analyzer/tool/generators/ast_generator.dart:1433-1475 | pkg/analyzer/tool/generators/string_search_util_generator.dart:193-235 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":1433}}}],"partialFingerprints":{"codehealthFindingId/v1":"5059a0180faa741ed38d9e52dea583b2841d48edceaf1cd18efc933a6dd017b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:1300-1342 | pkg/compiler/lib/src/kernel/element_map_impl.dart:983-1025 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1300}}}],"partialFingerprints":{"codehealthFindingId/v1":"59a420c4f1bfa309a77343ade8b70ece7862ff8ee39429ce5f35d7df8c01028e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:9180-9222 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:9403-9445 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":9180}}}],"partialFingerprints":{"codehealthFindingId/v1":"14cc4d040ab9dc7d34c9968015848d09931f2accb146441e58c0a8f02da94d0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (43 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:670-712 | pkg/observatory/lib/src/elements/process_snapshot.dart:358-400 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"90497cd4f4ffa12107273ab0c3eded82b307b685642c4aa510aa6cc7d47fad11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 2): sdk/lib/_internal/wasm/common/convert_patch.dart:1494-1535 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1186-1227 \u2014 \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 265 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1494}}}],"partialFingerprints":{"codehealthFindingId/v1":"af8d8646cd8ca65b6c00a119a28ecc0ed821d8fd759e8f72587947acebcc0cf2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (42 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7063-7104 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7930-7971 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7063}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1539c4f520dbc2604e4cda25469e3d1be5ada375bf69a2531102c5d240cfd7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (41 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/replacement_visitor.dart:168-208 | pkg/analyzer/lib/src/dart/element/replacement_visitor.dart:274-314 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"0911838df52e748a55d95746a67f6182b18e297d9c6abcc5e102dab550da3f96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39\u201340 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6835-6873 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8437-8476 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6835}}}],"partialFingerprints":{"codehealthFindingId/v1":"265ab9e00c24ccde015418c8d98008a74cb443d7c06b1f2d25c567351ac61dae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1543-1581 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1561-1599 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c5588a94790a19581f4ed4aaffe694c420d2cf7e3f59623db7c52108cea4e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_string.dart:212-250 | sdk/lib/_internal/js_runtime/lib/js_string.dart:199-237 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_string.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_string.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 90 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_string.dart"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"af4338105f2bbe5ae0c6210ef3c7eb45ddb05d672b63ca76505064dd6c6cb569"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5354-5392 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5964-6002 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5354}}}],"partialFingerprints":{"codehealthFindingId/v1":"c98fa4c178178782f6b6b6a8d8e6735b6bfd55e414982547c891291037c80d15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36\u201338 lines \u00D7 2): sdk/lib/_internal/wasm/js/string_patch.dart:154-191 | sdk/lib/_internal/wasm/standalone/string_patch.dart:112-147 \u2014 \u0060sdk/lib/_internal/wasm/js/string_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/string_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 129 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js/string_patch.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"c788f447e8f2cadf5a5b44cfe111c33b31b2323dbc5e239ad5040c1f1ecf6fdd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37\u201338 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:4007-4044 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:4068-4104 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4007}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f89562d5db01a7e566e8c9d11098fea0a0abf87d37a87f606e099fe5e69149b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:13808-13845 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:14094-14131 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13808}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cb2daff0bb1f9fe09ea26a19769ae4b0025d0b37ee470b035a82cbf90fec2fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (38 lines \u00D7 2): sdk/lib/vmservice/devfs.dart:229-266 | sdk/lib/vmservice/devfs.dart:286-323 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/devfs.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"df1c9c75eeb880230fe49e9bd77fe58c67e9d5945ff6140e4c31a20e2cd7f916"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36\u201337 lines \u00D7 3): pkg/front_end/lib/src/source/fragment_factory_impl.dart:1873-1908 | pkg/front_end/lib/src/source/fragment_factory_impl.dart:1948-1983 | pkg/front_end/lib/src/source/fragment_factory_impl.dart:2027-2063 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":1873}}}],"partialFingerprints":{"codehealthFindingId/v1":"a16c9bf7005c86745563b6f10406ea95a4343fc8a59a9f03696c5304bd03eee0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1481-1517 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1187-1223 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1481}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f44b0cec5ea1e70e8a1ab4dbdcb85dad55c2256e65e3377a4349d968d5936c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:235-271 | sdk/lib/_internal/js_runtime/lib/collection_patch.dart:792-828 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c19f5f859fb720a2d61c69831a1bbc35ba6b3a3eb85079a2a43c83da26e670"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4773-4809 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5383-5419 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4773}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa2c029c810a7a44d92d308ed06cb26663016671240a5f98283d4574ae8de67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): pkg/front_end/lib/src/fragment/getter/encoding.dart:560-596 | pkg/front_end/lib/src/fragment/method/encoding.dart:567-603 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"60e778804caec6c083e2a7eb2eeb79073a672bd31dad6c6df17a30d5d99904c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (37 lines \u00D7 2): pkg/observatory/lib/src/elements/cpu_profile.dart:108-144 | pkg/observatory/lib/src/elements/native_memory_profiler.dart:98-134 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"04afd689d966a2df63d2f20a50cb92508152387efe66d9a2b019022a701b9da4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35\u201336 lines \u00D7 3): pkg/front_end/lib/src/fragment/getter/encoding.dart:697-732 | pkg/front_end/lib/src/fragment/method/encoding.dart:698-732 | pkg/front_end/lib/src/fragment/setter/encoding.dart:723-758 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a0ccc693d9ea1cbf5d4eeab3fa9b163bd7aed5b817ddaadf4af90e282e3c61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart:808-843 | sdk/lib/_internal/js_runtime/lib/async_patch.dart:523-558 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/async_patch.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"048deb431d53b80ce8db35a101fae3324f90d59e31206e3b201e04fae9c92df8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4736-4771 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5346-5381 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4736}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d0cd53be18dc0578b414f0a17b01de19fe609061683aff49cfdd809c4bf3188"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7598-7633 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8465-8500 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7598}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e014cdbb3492f77b6693704a8caff3229cec1beeedb86cd2dbdf0b0c355581"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (36 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8415-8450 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9367-9402 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8415}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c5e97e62bd6225d80289672df9d1f1f5f04d0678bd2104d4e8369d5e6297d7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 6): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1384-1418 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1465-1499 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1727-1761 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1919-1953 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2009-2043 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2311-2345 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1384}}}],"partialFingerprints":{"codehealthFindingId/v1":"384382e1bd4a12005718b14b0ffec7b5b254c74e4564d21ae005b6d4c47babc1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): pkg/front_end/testcases/general/lookup.dart:161-195 | pkg/front_end/testcases/general/lookup.dart:207-241 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/lookup.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"531655ecfc279818a9624dd89a5f927c99a3b127733f7728b2738ffa1bbae4e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): pkg/front_end/testcases/general/lookup.dart:453-487 | pkg/front_end/testcases/general/lookup.dart:499-533 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/lookup.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f5942f5de70b484d5b3870a5ca59cd9b4f099d13c51d2779867b9f94a7ab4d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:341-375 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:344-378 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"64e6072eb678cab0747fc19a81030d82846f0d54a03a8bea2a89ecf19c2976e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27\u201335 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart:1240-1266 | pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart:1320-1354 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":1240}}}],"partialFingerprints":{"codehealthFindingId/v1":"19e311b8ca66596beb97177ad917625971dbc81115f112ab36d229181b77f493"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:1943-1977 | pkg/js_ast/lib/src/printer.dart:2125-2159 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1943}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9844d55ac075d6dac1bc13cd19bfbdd845e5df3ba2222894672a5d4e43371a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:1170-1204 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:1463-1497 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1170}}}],"partialFingerprints":{"codehealthFindingId/v1":"348a58326580bb768136981ba611a44e9297b0784ad9572ed8f70b8dae99e628"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2127-2161 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2427-2461 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2127}}}],"partialFingerprints":{"codehealthFindingId/v1":"033d24b77c900816738eb22fe3e5740d2186d83e554acc6ba28dc2be21ba2c5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3356-3390 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:3871-3905 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3356}}}],"partialFingerprints":{"codehealthFindingId/v1":"df3b026d4f86105f7db886a935c125806b0f55d31c7c34c7c29cb08cca378dd3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31\u201335 lines \u00D7 2): pkg/front_end/lib/src/fragment/constructor/declaration.dart:853-883 | pkg/front_end/lib/src/fragment/constructor/declaration.dart:1338-1372 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":853}}}],"partialFingerprints":{"codehealthFindingId/v1":"1328eeb6afe3244c9dee37b2b5cfab6e65065a2b317aa31c8cc420d574c1990e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34\u201335 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:9413-9446 | pkg/front_end/lib/src/kernel/body_builder.dart:9535-9569 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9413}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e1a5265145a59f4552bbd50de4ae1fed0dd6bd47c428f6ab28ce9821d45114c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1502-1536 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1956-1990 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1502}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7b00a7970aaec57079eb469bc51ba424e2eba46761f1f0424be31e8ed79d162"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (35 lines \u00D7 2): pkg/kernel/lib/src/standard_bounds.dart:538-572 | pkg/kernel/lib/src/standard_bounds.dart:942-976 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"f80002cf5178a089be74814a435938c568cde1e0c02692e626d853804ecf86d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201334 lines \u00D7 5): pkg/analyzer/tool/ast/generate.dart:420-447 | pkg/analyzer/tool/ast/generate.dart:494-517 | pkg/analyzer/tool/ast/generate.dart:571-603 | pkg/analyzer/tool/ast/generate.dart:658-686 | pkg/analyzer/tool/ast/generate.dart:746-779 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"2687ae3fbfe30f2138bae30b0b5b317f4f9e23ce6ce97ae79e57913817f03f17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): pkg/front_end/testcases/general/lookup.dart:69-102 | pkg/front_end/testcases/general/lookup.dart:114-147 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/lookup.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f63d73963b7fdfc7f5fd9cb818f9b8ef2d1afa68a6b408403d35fb5f6c0f62c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): pkg/front_end/testcases/general/lookup.dart:359-392 | pkg/front_end/testcases/general/lookup.dart:406-439 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/lookup.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ef26e41855a42a17693534c4a080a71d233574a883e0c6baf007df2794eb735"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): sdk/lib/_internal/wasm/common/convert_patch.dart:2745-2778 | sdk/lib/convert/utf.dart:592-625 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2745}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd8956ead8c1888a80a6ea52d1b3016031a6f83138b45397773fc182ef32175"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): pkg/analysis_server/lib/src/plugin/server_isolate_channel.dart:77-110 | pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart:203-236 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/plugin/server_isolate_channel.dart\u0060 and \u0060pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 63 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/server_isolate_channel.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"696537c212a60bebdab5238ba26b8f71e9a188433a9a10bb149ea3d86ce490fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): pkg/analyzer/lib/src/dart/sdk/sdk.dart:97-130 | pkg/analyzer/lib/src/dart/sdk/sdk.dart:253-286 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"a443ce5109bfc9fda2dc89d45ee79da8c06c9eb4b359a8f55584bf7c61d483f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:729-762 | pkg/compiler/lib/src/kernel/element_map_impl.dart:400-433 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad3f23585a4ab55b1d9796ca33c5ad9cc78cbd5e476f8af3c1dd87bc2071b30c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5610-5643 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6240-6273 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5610}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a8368d7b135e6fccc65dafeba6ef571383578897a791c83a86200102b6a5bc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32\u201333 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6938-6970 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7141-7172 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7400-7432 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6938}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab682b8d8fe946234f34801ed71111c9e1acae5914dd211fb04f28fe6a3919bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): pkg/dart2wasm/lib/async.dart:229-261 | pkg/dart2wasm/lib/sync_star.dart:198-230 \u2014 before extracting anything, compare \u0060pkg/dart2wasm/lib/async.dart\u0060 and \u0060pkg/dart2wasm/lib/sync_star.dart\u0060 as WHOLE FILES: this scan already matched 5 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":"pkg/dart2wasm/lib/async.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"31bc916e73f1fa70b9d7c8de002207b023d67ab816d6e2ab49e9dea315231404"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): sdk/lib/_internal/wasm/common/convert_patch.dart:2268-2300 | sdk/lib/_internal/wasm/common/convert_patch.dart:2339-2371 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2268}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9868432bae5d14391660ff6f25ae89e9328cf9b93f45e1ae8a5fcb076246384"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart:474-506 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart:187-219 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae3d320f22fa32d9d38998d3ad11dc2cb8f790fdb8236bbeb271ac7fafdaadae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): pkg/compiler/lib/src/dump_info.dart:1879-1911 | pkg/compiler/lib/src/dump_info.dart:1967-1999 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1879}}}],"partialFingerprints":{"codehealthFindingId/v1":"0da79cec33d44c9ec4e1256d6cd117d00a34da144aee4d6cb0a076d810e25115"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2304-2336 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2604-2636 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2304}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef28c685d6ec47fcbf9d658d3c7f18af17082f4801882ca6fb572f8f997e1603"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201333 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:1628-1660 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:2178-2197 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1628}}}],"partialFingerprints":{"codehealthFindingId/v1":"16dddc166c1a6dfacc0f66d122380f1688a8add3c601288d5ff669632f81c09b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32\u201333 lines \u00D7 2): pkg/front_end/lib/src/kernel/resolver.dart:385-417 | pkg/front_end/lib/src/kernel/resolver.dart:673-704 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"b92985ef4291f6b0ad77fce554841bebeee9442731da3e163add625ff55090a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): pkg/kernel/lib/text/ast_to_text.dart:1542-1574 | pkg/kernel/lib/text/ast_to_text.dart:1627-1659 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":1542}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f26ef1bbd63b88824d4b72359fa4ba9ec255c0d58bb1b49a772c11c900e5a71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1771-1802 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2355-2386 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7303-7334 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1771}}}],"partialFingerprints":{"codehealthFindingId/v1":"f65d31338069a2916acf8a176244698330ea48292183f2f7f94e3f2649e0c54d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6592-6623 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6685-6716 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8874-8905 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6592}}}],"partialFingerprints":{"codehealthFindingId/v1":"14877024f376cae1f056ac96837bd49d9ba69aaeca8fab77072ca6a39fdf926d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_assist_other_file_could_add_late.dart:97-128 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_many_assist_calls.dart:100-131 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_assist_other_file_could_add_late.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9732b465d7f86233ac63be2aea19d9ad7dff0d5ae1fa66bafba53a5c809b963"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart:111-142 | pkg/analysis_server/lib/src/services/correction/dart/replace_with_var.dart:71-102 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"085f5dec0a6d9fbc1d68ed27d1b041d006d08a66a6ab61ee9ff1594b1504d0be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31\u201332 lines \u00D7 2): pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget.dart:37-67 | pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget_with_animation.dart:43-74 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget_with_animation.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 57 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":"pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b49e2739e897c61cf405d8cb848e2c9e1b234822a028f41da0aa5c7cb571bce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/element.dart:2731-2762 | pkg/analyzer/lib/src/dart/element/element.dart:5261-5292 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":2731}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd19581ed3d0c10fedb060d8c0471b896c1cbccc56148a9518a67d24260fa08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4868-4899 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5478-5509 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4868}}}],"partialFingerprints":{"codehealthFindingId/v1":"23199588ee3b4c5ad35af6f7d05aa625527a3eb0bde22fd884b1c13ac515cd12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31\u201332 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:327-357 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:420-451 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"a021b668619245356faed66f8e20c9ab0ede21ba15d555e2abbbede9d61a2d45"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (32 lines \u00D7 2): pkg/front_end/lib/src/type_inference/body_inference_context.dart:446-477 | pkg/front_end/lib/src/type_inference/body_inference_context.dart:782-813 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d708fefb4b2073a1bb6ec67a654b70760f86252be1fc29d11af39aa7de70f4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/keyword_state.dart:48-78 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/keyword_state.dart:16-46 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/keyword_state.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/keyword_state.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/keyword_state.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"7be6ecf26571d2369fbcfaf814b7cb092311959b75defec30aa30f4a4acd0d7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/boxed_double_patch.dart:66-96 | sdk/lib/_internal/wasm/standalone/boxed_double_patch.dart:19-49 \u2014 \u0060sdk/lib/_internal/wasm/js_common/boxed_double_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/boxed_double_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 76 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/boxed_double_patch.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"200e1fb48ec0b1e14eeaba0ae88f6a484c62adcf092696bf38cae0e0078d2bc2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5786-5816 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6441-6471 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5786}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f8b31026a79b1261041e9d6e36d2b203ac231cab04a5c87ebfb8e375adf7ab5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30\u201331 lines \u00D7 2): pkg/front_end/lib/src/base/incremental_compiler.dart:3240-3270 | pkg/front_end/lib/src/base/incremental_compiler.dart:3606-3635 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3240}}}],"partialFingerprints":{"codehealthFindingId/v1":"d64215864ccada09121b13b0bead075966672a96e17b81815c41f7e11e7683ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29\u201331 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7093-7121 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7347-7377 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7093}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b61d5d58b526f1937db815a1670ebc9017c2574a0e128f92f29c644791a71b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201330 lines \u00D7 3): pkg/analyzer/tool/ast/generate.dart:381-404 | pkg/analyzer/tool/ast/generate.dart:616-640 | pkg/analyzer/tool/ast/generate.dart:704-733 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5e8340c2584a6c15b6cb9985041f5f215705e972a441863917e7105aebf99e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 3): pkg/front_end/lib/src/source/source_method_builder.dart:347-376 | pkg/front_end/lib/src/source/source_property_builder.dart:589-618 | pkg/front_end/lib/src/source/source_property_builder.dart:735-764 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_method_builder.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b3936ac9cc81638356238c169de8fc113e498f803665d9257d723d2921ab5e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:5557-5586 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5645-5674 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5719-5748 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5557}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4716e84f1e3539685e528311428904193860ee5068bd42e1e4edeb9871ec6e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:485-514 | sdk/lib/_internal/js_runtime/lib/js_number.dart:576-605 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba9bb65cfcc5f2ba40ae74457502db2d1de64c19f0e4cf3b4b7b95777df01ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:8059-8088 | pkg/analyzer/lib/src/dart/ast/ast.dart:8094-8123 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":8059}}}],"partialFingerprints":{"codehealthFindingId/v1":"483aa3001edf0fd87440b38d56954e4ea16adbd8e7a41dbcd3c9fd3ae74f280f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28\u201330 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:332-359 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:400-429 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea69f13c19e65d9b364d6fb24ad17a6a0b317866aef00f6824e5a3cba2ce69b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201330 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart:108-137 | pkg/analyzer/lib/src/generated/static_type_analyzer.dart:86-111 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/binary_expression_resolver.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff2b5da3c59aaa8d803d838844b192599ea9b0ba5a053b319683c8188c7fef6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8133-8162 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9002-9031 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8133}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef093e3b7f87b59545a533c5231b2b1dc9de58872ddc7da42dc6335d2d795ec1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28\u201330 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:2635-2664 | pkg/front_end/lib/src/kernel/body_builder.dart:2684-2711 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":2635}}}],"partialFingerprints":{"codehealthFindingId/v1":"db898d2169e12a7867c78ba1a5b59363a292fbaf4f6ea6deb5747b4038e83e55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): pkg/front_end/lib/src/source/source_type_alias_builder.dart:494-523 | pkg/front_end/lib/src/source/source_type_alias_builder.dart:553-582 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"4966f86424b28391bebb224af9a2ce04e5f3f852277f2c0fa4441fdcf32fe944"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201330 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:2940-2965 | pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:3233-3262 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2940}}}],"partialFingerprints":{"codehealthFindingId/v1":"210b5c4d769fb3b1ce701ee57b55431c8601fb23da93c0cc5f264bab0d656cfa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (30 lines \u00D7 2): pkg/wasm_builder/lib/src/ir/type.dart:764-793 | pkg/wasm_builder/lib/src/ir/type.dart:811-840 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/type.dart"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd56752fd024560985d3b42a6f0fd857432d457f1e2184219c62347f406505cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 4): pkg/front_end/testcases/general/lookup.dart:82-110 | pkg/front_end/testcases/general/lookup.dart:127-155 | pkg/front_end/testcases/general/lookup.dart:175-203 | pkg/front_end/testcases/general/lookup.dart:221-249 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/lookup.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa77ab1911179b36491faf4bee9849942c856b3ffd14fea5ed47d083cda06b55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 4): pkg/front_end/testcases/general/lookup.dart:372-400 | pkg/front_end/testcases/general/lookup.dart:419-447 | pkg/front_end/testcases/general/lookup.dart:467-495 | pkg/front_end/testcases/general/lookup.dart:513-541 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/lookup.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c46739c6a3cb4886c01271fdba4b7aee0d351bdd5432d4135c824b4fa4c6d6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1431-1459 | sdk/lib/_internal/wasm/common/convert_patch.dart:1617-1645 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1309-1337 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1431}}}],"partialFingerprints":{"codehealthFindingId/v1":"6387fa07262c79004fd8d2725c868844db722244437cd631b3cc4bb8bda607e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/analyzer/tool/generators/ast_generator.dart:990-1018 | pkg/analyzer/tool/generators/ast_generator.dart:1054-1082 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba27289f73d760d7a084ff71091cc3a902c6a57b43905bee306641f91c964478"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart:26-54 | pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this.dart:24-52 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_implicit_this.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"698824a36ed55036a60eadad84d757e5ef98262918a48eaa45f8c60e01fdd791"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_property_super.dart:30-58 | pkg/front_end/testcases/inference_new/infer_assign_to_property_super.dart:26-54 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_super.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"885a64272c422c4c0fce5231aa73cefb4da9a3ac24c3b903282350992401b156"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart:370-398 | pkg/analysis_server/lib/src/services/correction/dart/create_operator.dart:50-78 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"4800a1f8cbcf06bc7043b7d01c545154e2c042487c494dc1c8bec0a5112f364f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/analyzer/lib/src/generated/resolver.dart:2559-2587 | pkg/analyzer/lib/src/generated/resolver.dart:4520-4548 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":2559}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dd38ef69e17e939d655bfd9b3692986382f3d1339324561da9723dbf7a313ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/compiler/lib/src/kernel/kernel_impact.dart:188-216 | pkg/compiler/lib/src/kernel/kernel_impact.dart:256-284 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfc1cefcb90cda7556358a366f04201a27f91324c52bb6171b8cbc1f78f88448"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5560-5588 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6175-6203 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5560}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a3f34202c2f6a07316ab14ab92fad83408afb26ba110e525c08a67dc2d0d53f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6487-6515 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7176-7204 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6487}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f71915c9c8a1f6f96a1e7b4aa318e54830720b32b9d47550d78f8e565cc69e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7431-7459 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8298-8326 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7431}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcbcfe28f6cae6bbb0b602b08d13659eee006067c802e1c371ba729ff53dd231"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28\u201329 lines \u00D7 2): pkg/front_end/lib/src/builder/type_parameter_builder.dart:283-310 | pkg/front_end/lib/src/builder/type_parameter_builder.dart:542-570 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_parameter_builder.dart"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb624f6c5e8574535fd3e0c95ccd8e1210cfd4831a3393e928f7e6cb61192107"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/front_end/lib/src/fragment/method/encoding.dart:232-260 | pkg/front_end/lib/src/fragment/method/encoding.dart:595-623 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"24bf78b5d5e5fe17f34dc34f8b88f3d920bd1a7a0482f77179b5d67f0743b3a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:3356-3384 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5131-5159 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":3356}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fe1a479e1e866ea27ab16ba39de160c52e483794deb85fc6a1fc4d5647889a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 3): pkg/front_end/lib/src/fragment/getter/encoding.dart:525-552 | pkg/front_end/lib/src/fragment/method/encoding.dart:530-557 | pkg/front_end/lib/src/fragment/setter/encoding.dart:542-569 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b755abee7ccbe6bb738941628962a82132df6e1bcea0bb9b34e913ee8ef23b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_with_plugin_that_times_out.dart:79-106 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/lsp_with_plugin_that_times_out.dart:80-107 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_with_plugin_that_times_out.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"5db06574204e303c65318d6217cffd12e06923121cd9692f1f144ccdb2073990"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:274-301 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:274-301 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa54db33b88ed9cc013f721ed7d2ed4c8f966f0fdf2c7e9f33937051b67348b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201328 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:7215-7240 | pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:7440-7467 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7215}}}],"partialFingerprints":{"codehealthFindingId/v1":"6654f3595ef026c53246140e01f0f26936a864253e6ec90a30f1ea8858a2548d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201328 lines \u00D7 2): pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart:1430-1457 | pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart:1856-1880 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1430}}}],"partialFingerprints":{"codehealthFindingId/v1":"769b3335777d7e59b029d459725575566f1e49c2af576f9998e95d7d4082d99f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): pkg/analyzer/lib/src/dart/constant/potentially_constant.dart:327-354 | pkg/analyzer/lib/src/dart/constant/potentially_constant.dart:409-436 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"316d9920304ddc343372bd616987afae3ef28b1455d67986697b92ecc33953bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27\u201328 lines \u00D7 2): pkg/compiler/lib/src/ssa/builder.dart:4164-4190 | pkg/compiler/lib/src/ssa/builder.dart:4250-4277 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4164}}}],"partialFingerprints":{"codehealthFindingId/v1":"de4e2884ed51119bf6615d51f13672321676f7ef9f129fcc183b6fbd6ddc32bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201328 lines \u00D7 2): pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart:150-170 | pkg/dds/lib/src/devtools/memory_profile.dart:173-200 \u2014 before extracting anything, compare \u0060pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart\u0060 and \u0060pkg/dds/lib/src/devtools/memory_profile.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 78 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"17529965df44517083d7e02bbbee45828c02d3dded6f2b06068d7c8777978e64"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5031-5058 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5641-5668 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5031}}}],"partialFingerprints":{"codehealthFindingId/v1":"c248643bc846b8cbac38c5d94866ed5c390f76a493032457976b344309997dc7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): pkg/front_end/lib/src/source/outline_builder.dart:1099-1126 | pkg/front_end/lib/src/source/outline_builder.dart:1267-1294 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1099}}}],"partialFingerprints":{"codehealthFindingId/v1":"dda74f6b3a684eae5e278a7ac97a10237ae74f7f5a38d212f15bcaca03972de8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8684-8711 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8938-8965 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8684}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b47a0d4174567443699b442cd1a71d18a53afaaf0458578f9bb149d108bd237"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): pkg/observatory/lib/src/elements/class_instances.dart:290-317 | pkg/observatory/lib/src/elements/object_common.dart:182-209 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/class_instances.dart\u0060 and \u0060pkg/observatory/lib/src/elements/object_common.dart\u0060 as WHOLE FILES: this scan already matched 3 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. 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":"pkg/observatory/lib/src/elements/class_instances.dart"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8609594e553a9bc3b415fa10031216a3a75ae6f39587faa42a74e2d74a51b35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): pkg/observatory/lib/src/elements/class_instances.dart:326-353 | pkg/observatory/lib/src/elements/object_common.dart:217-244 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/class_instances.dart\u0060 and \u0060pkg/observatory/lib/src/elements/object_common.dart\u0060 as WHOLE FILES: this scan already matched 3 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. 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":"pkg/observatory/lib/src/elements/class_instances.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b18ba21bed6ab025d8791cfae0ca284da99ee57bc72f296b9ca4efa3d147b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201327 lines \u00D7 6): pkg/front_end/lib/src/fragment/getter/encoding.dart:245-270 | pkg/front_end/lib/src/fragment/getter/encoding.dart:512-538 | pkg/front_end/lib/src/fragment/method/encoding.dart:188-213 | pkg/front_end/lib/src/fragment/method/encoding.dart:517-543 | pkg/front_end/lib/src/fragment/setter/encoding.dart:243-269 | pkg/front_end/lib/src/fragment/setter/encoding.dart:529-555 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0dbaa486d3fe86eafd70384ac35e1f2a085f162b79911805239d050498c085"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2352-2378 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1575-1601 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2352}}}],"partialFingerprints":{"codehealthFindingId/v1":"190162bf0c84ce9fdcf4b3739b86921e8085bd55725deb9e7387993569de0066"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:1897-1923 | sdk/lib/_internal/wasm/common/convert_patch.dart:2420-2446 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1897}}}],"partialFingerprints":{"codehealthFindingId/v1":"66369482efb909ac01efd757b1bb10d99fc6eeae86076e20685a4b2371a4e403"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201327 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_edit_argument.dart:57-83 | pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_editable_arguments.dart:48-71 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_edit_argument.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b389fe1d104f702a7dfdc4cdb66e357db3a64abe6815c11e72fa5587db5b5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201327 lines \u00D7 2): pkg/compiler/lib/src/universe/member_usage.dart:340-366 | pkg/compiler/lib/src/universe/member_usage.dart:495-520 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"eadafb3adb6cedc327a7443f25f81098f0d77396cfbde01074b5067f24f8a68d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26\u201327 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3709-3735 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4309-4334 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3709}}}],"partialFingerprints":{"codehealthFindingId/v1":"936cb5b44988ba3404e76033384043d4d6abe313a55d77ad37ecb0d22ea258d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): pkg/front_end/lib/src/fragment/method/encoding.dart:753-779 | pkg/front_end/lib/src/fragment/setter/encoding.dart:779-805 \u2014 \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 306 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"27eb522a68978b75d2ec7a9c4debd49c2961fb20bc34714e910d92a2a67fdcca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): pkg/front_end/lib/src/kernel/expression_generator.dart:5012-5038 | pkg/front_end/lib/src/kernel/expression_generator.dart:5073-5099 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":5012}}}],"partialFingerprints":{"codehealthFindingId/v1":"b49f7037a5869fd7a593cb26db634a5ac396e81f02fb0ae29fe1f153d08e0854"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:208-234 | pkg/front_end/lib/src/kernel/internal_ast.dart:7491-7517 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"329c11dc3858b9cee186fff52ba6e50a94bdf2f737351f85af28ed6e44bd16a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): pkg/kernel/lib/src/standard_bounds.dart:300-326 | pkg/kernel/lib/src/standard_bounds.dart:619-645 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"003c484ff6669d8a287279a4e7d303fb8ade6d80b77bf3596dd3310964be72de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201327 lines \u00D7 2): pkg/linter/lib/src/rules/use_build_context_synchronously.dart:350-374 | pkg/linter/lib/src/rules/use_build_context_synchronously.dart:378-404 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c511c35fc9429e48022a5cf0f5ba7290ef3ff518c850f67cbc5471223831c58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): pkg/observatory/lib/src/elements/class_instances.dart:151-177 | pkg/observatory/lib/src/elements/object_common.dart:130-156 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/class_instances.dart\u0060 and \u0060pkg/observatory/lib/src/elements/object_common.dart\u0060 as WHOLE FILES: this scan already matched 3 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. 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":"pkg/observatory/lib/src/elements/class_instances.dart"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"cefdad0fa89d7e20d351def48cd053bdc851b8ab7bfe8d7490e0d0c8839d56d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 4): pkg/analysis_server/lib/src/status/pages/assists_page.dart:27-52 | pkg/analysis_server/lib/src/status/pages/code_completion_page.dart:28-52 | pkg/analysis_server/lib/src/status/pages/fixes_page.dart:27-52 | pkg/analysis_server/lib/src/status/pages/refactorings_page.dart:28-53 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/assists_page.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e86596dad3bda43dd8b6427ea9396b1f4d53939530f75472fce29fe26df9a38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201326 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1530-1555 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1548-1573 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2137-2158 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1530}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bee2fd40aec06be4c5651d1fd10e1e21a3f6dc739e11cbf7dc56c4694650b9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201326 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7005-7028 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7205-7229 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7469-7494 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7005}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f45859107ded3d2afa633b5fe4771c05a66212ece80023842c9d2ed987ecfec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 2): pkg/dart_runtime_service_dds/lib/devtools_server.dart:627-652 | pkg/dds/lib/devtools_server.dart:618-642 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"0978a4d21ade7d2776ba16a706b5c60ba269d2a8866a9bf3a3ccf07935a3dcee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart:57-82 | sdk/lib/_internal/js_runtime/lib/js_patch.dart:153-178 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_patch.dart\u0060 as WHOLE FILES: this scan already matched 9 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":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cd54ddfe80eb787426138c955e068d6450fbf4cb703d954a6769eaed8c5763e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/boxed_double_patch.dart:106-131 | sdk/lib/_internal/wasm/standalone/boxed_double_patch.dart:59-84 \u2014 \u0060sdk/lib/_internal/wasm/js_common/boxed_double_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/boxed_double_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 76 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/boxed_double_patch.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2139a83baca00cd2fd3c8cba020989efd9d7897f3e683bc38949991d6fea21"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/utilities.dart:117-142 | pkg/analyzer/lib/src/dart/ast/utilities.dart:268-293 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/utilities.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"185e4e763d7163c3fdfd8dd83d2f10d82ca72cd0d236bf1cbeb7d5bca64228b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 2): pkg/compiler/lib/src/dump_info.dart:688-713 | pkg/compiler/lib/src/dump_info.dart:1501-1525 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":688}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d12d8e1be8b29e4b1c2769b99fa7d2cf84ebb1cac76c6b3c8bb7a9883ab479"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/compiler/lib/src/js_backend/enqueuer.dart:207-232 | pkg/compiler/lib/src/resolution/enqueuer.dart:230-255 \u2014 \u0060pkg/compiler/lib/src/js_backend/enqueuer.dart\u0060 and \u0060pkg/compiler/lib/src/resolution/enqueuer.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 60 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c3e9c1049c5ace5eff2d105e1d5b2538f450f1788ccbec7834b6fa396c9d6c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2277-2302 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2577-2602 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2277}}}],"partialFingerprints":{"codehealthFindingId/v1":"83827a8910b1a27d69f837840aff4d8e774cd9cfe0de89754fc3139d68e3d883"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4216-4241 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4812-4837 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4216}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fd8f4ec580f58d15df3298f30950372b8c065b692203297451ce9805f8eee12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7670-7695 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8537-8562 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7670}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b1e6456ef5124055fef3562d48fa60a0744c1799ab88ed936b648fc9711e947"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8315-8340 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9184-9209 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8315}}}],"partialFingerprints":{"codehealthFindingId/v1":"456cd9b7796ba879807c7262c18720a52db4bc347c2f4aa9d03240bdd8e04ade"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:4630-4655 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:4660-4685 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4630}}}],"partialFingerprints":{"codehealthFindingId/v1":"816f22bd1a3f99d93704ce471678687375ea64d0380b10a45c9adc929f8ba025"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25\u201326 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:7766-7791 | pkg/kernel/lib/src/ast/statements.dart:1292-1316 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7766}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a1aa3ea29a99c6dda9b39307a68c1e0e6e7344b202d0d13ed177385ee1c8533"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/front_end/lib/src/type_inference/element_inference.dart:172-197 | pkg/front_end/lib/src/type_inference/element_inference.dart:461-486 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/element_inference.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"32aab4c1e684d9c2cebed5c4b07eb1e5ddb2076779f85b6900f0e7410ead804a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 6): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1596-1620 | sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1638-1662 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1614-1638 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1656-1680 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2198-2222 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2240-2264 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1596}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfcf5d78f2c531b9e843f25ea3050544ec9581f6be510a5b9bf6541d52cdd19d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201325 lines \u00D7 4): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:91-115 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:313-337 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1331-1355 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1606-1629 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"a014d919804697faf3f83d6c2e3e7720fcbd8e0f1308807b6c713e14db4c485c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1268-1292 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1271-1295 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:1731-1755 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"1595a5864f2ad7b5cdd6462316d77852968bf16579eaa13029594759c2925e48"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201325 lines \u00D7 3): pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart:60-84 | pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart:194-216 | pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart:537-561 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_extension_member.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"230ab961690413e45796b2a9f67610679f1895bb5e1873d866951c1a0f3b46a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201325 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:2782-2806 | pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:2935-2955 | pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:3228-3252 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2782}}}],"partialFingerprints":{"codehealthFindingId/v1":"21bde44ec56e9cb3d59bf5e70654bffc30b64edceb1ef3961bd40e10344dec6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1669-1693 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1022-1046 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1669}}}],"partialFingerprints":{"codehealthFindingId/v1":"92667740d2de17e8545becafb07926b2d91ab6cb2623340adecb6ac596d7fc26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201325 lines \u00D7 2): pkg/analyzer/tool/ast/generate.dart:233-257 | pkg/analyzer/tool/ast/generate.dart:1218-1236 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1cdd48647a50affe233d5834740c73d4164148912ead6bd2eccd59096cb9330"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201325 lines \u00D7 2): pkg/dart2wasm/lib/list_factory_specializer.dart:166-190 | pkg/vm/lib/modular/specializer/list_factory_specializer.dart:111-132 \u2014 before extracting anything, compare \u0060pkg/dart2wasm/lib/list_factory_specializer.dart\u0060 and \u0060pkg/vm/lib/modular/specializer/list_factory_specializer.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 151 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/list_factory_specializer.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"4321b41303797ccb86437b0100bf5275799eddeb89ca7129aa5c45574d41ac33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_index_super.dart:28-52 | pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart:28-52 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_index_super.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7eebf83235ba077fbbe528ce724d1a9b8e3b738a101cbad33e1dc7cf156b1d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_index_this.dart:26-50 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart:26-50 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_index_this.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"87ecc9b230e8dbe6dc66608e0d22c3663fbb249155b4090fc2ad6c27bc8a2a8d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:711-735 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:714-738 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"17edc414f1309bea023730bedd151dd5a8cde06baba55718bbe1e093fb4de503"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart:28-52 | sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart:62-86 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fb8a8ee252bd090faf8edd3ded8a887f7898503c7e81d27c929cc7dd3fda4b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:727-751 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:942-966 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"2063d71b97f75c2fa0e0fbdf053852b2573b86de63d86d37ee336f176850cbd0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): sdk/lib/_internal/vm/lib/integers.dart:219-243 | sdk/lib/_internal/wasm/common/boxed_int.dart:186-210 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/integers.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/boxed_int.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ace850dc1b06a49b84ae5c3570b587eb42d18f0c7d62ea09038b659b8587094"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:21920-21944 | pkg/analyzer/lib/src/dart/ast/ast.dart:49444-49468 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":21920}}}],"partialFingerprints":{"codehealthFindingId/v1":"09a5043eb3794979b45449d1df61fc6c58e2c7c3270385a955fb0ba82d434505"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24\u201325 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:736-759 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:1019-1043 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"7654495b683be6285a274f78857ae17fddd8f31774847f382a650fdd01891bab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:619-643 | pkg/compiler/lib/src/kernel/element_map_impl.dart:293-317 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"4af7ae715a65050b2525685a47ab0ad76965c2ed29fbe460f2727112d0c070ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:772-796 | pkg/compiler/lib/src/kernel/element_map_impl.dart:442-466 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"e43497bf791a891374bc0238193130347fe02c1768d9e81e6a629d151cd97f7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201325 lines \u00D7 2): pkg/dart_runtime_service/lib/src/devtools/vs_code.dart:84-106 | pkg/dds/lib/src/devtools/vs_code.dart:85-109 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devtools/vs_code.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"204e079cd01f44b59c7b63c95ce8e56d9fd6abcc096037f2a2803a072360491f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7401-7425 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8268-8292 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7401}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ff6122b52c1f84e85921db31d70ab6b4dfed4abc3665979e1543d845344d95e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7719-7743 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8586-8610 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7719}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1b4e8db2b0aaa4ad7549bec4c3737b34b2f94d0eca175f42de0cb20e5e2dcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7923-7947 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8789-8813 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7923}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0563fd2855d5e141debba5f67a9ac9e3459f00b280a69025c5d5b6dd44f4489"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/front_end/lib/src/fragment/constructor/encoding.dart:1294-1318 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:1335-1359 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":1294}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e71cdedd21825ac3c4583ecb5ec1d7d47dcaa1746341ff2aeb7cecc31834390"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/front_end/lib/src/fragment/getter/encoding.dart:284-308 | pkg/front_end/lib/src/fragment/getter/encoding.dart:585-609 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f83d0aa31120a80e71fa70435777086261a5ee3559ef8ed1796f8527ca3855d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/front_end/lib/src/fragment/getter/encoding.dart:328-352 | pkg/front_end/lib/src/fragment/getter/encoding.dart:629-653 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"685b222719773c547b5aae7210fdd7adba5945680df0b9660c3409589c7b815f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201325 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:10147-10171 | pkg/front_end/lib/src/kernel/body_builder.dart:10489-10507 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10147}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d5c227d053768c1dfd3a137a3994471288157a749d2e194e698c2cfe56d78f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 14): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:157-180 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:262-285 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:595-618 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:653-676 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:722-745 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:811-834 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:855-878 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:896-919 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:979-1002 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1029-1052 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1087-1110 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1229-1252 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1274-1297 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1428-1451 \u2014 all 14 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8760e62393fd8e89988190bbd7aafc098a677f3df7dcd188f886c7a87f234d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 3): pkg/analyzer/lib/src/generated/error_verifier.dart:1381-1403 | pkg/analyzer/lib/src/generated/error_verifier.dart:1742-1764 | pkg/analyzer/lib/src/generated/error_verifier.dart:2425-2448 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":1381}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2f680fdf7d33314ec99b54d2ab9378847ded77dda9ee216ec4772ad25ef18bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 3): pkg/front_end/lib/src/fragment/getter/encoding.dart:573-596 | pkg/front_end/lib/src/fragment/method/encoding.dart:580-603 | pkg/front_end/lib/src/fragment/setter/encoding.dart:591-614 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"26efc4267933a5a8da965a696e02e0718d73f111e036efa88316b4178307df69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 2): pkg/dart2wasm/lib/code_generator.dart:3061-3084 | pkg/dart2wasm/lib/code_generator.dart:3166-3188 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":3061}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6eb0e44f96368610827a37413469524f2ce12afd9dfce41a29394f69c68891"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): sdk/lib/_http/http_impl.dart:1040-1063 | sdk/lib/io/io_sink.dart:233-256 \u2014 before extracting anything, compare \u0060sdk/lib/_http/http_impl.dart\u0060 and \u0060sdk/lib/io/io_sink.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b8046d9199f3968763072af584a8d1bfb15cb746d1eb2a6b4f132bd671baabb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:226-249 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:226-249 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"17b9cbe6add6ccfa4d5a976a6fe94ef5a558933d56b7e813707686baed38e75e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): sdk/lib/internal/sort.dart:263-286 | sdk/lib/internal/sort.dart:357-380 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/sort.dart"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"228112eb5bd8f419e5800339dce3165a9b36f51c01ade7b49bae25b2e03f208a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:512-535 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1187-1210 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"043d73c0781c2af93a23daae57c36a2ee084205346088272c78989dd2e9e1742"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:7798-7821 | pkg/analyzer/lib/src/dart/ast/ast.dart:8311-8334 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7798}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8eb0282065012c724c6fd71b4f8a02713308026da8674c1be7ed4a20cab1a60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201324 lines \u00D7 2): pkg/analyzer/lib/src/error/element_usage_detector.dart:432-453 | pkg/analyzer/lib/src/error/element_usage_detector.dart:1020-1043 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"8186cbd23a1068ba9d0474a304754238cb1a66fcc4c246da7d754a0c3e692046"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/analyzer/lib/src/fine/library_manifest.dart:1864-1887 | pkg/analyzer/lib/src/fine/library_manifest.dart:1920-1943 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1864}}}],"partialFingerprints":{"codehealthFindingId/v1":"e31ca36492572bf4ef3181184b6fba46def503dadaa3bb569321107cfe6a6579"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/compiler/lib/src/serialization/strategies.dart:145-168 | pkg/compiler/lib/src/serialization/strategies.dart:238-261 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/strategies.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"235dc25248134beef54d03acb9b3a9f44e04cd11317900a7e4482c6aae2816da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/template.dart:74-97 | pkg/js_ast/lib/src/template.dart:72-95 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/template.dart\u0060 and \u0060pkg/js_ast/lib/src/template.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"046ada28546c7383d9c3263b889c56360a72d307be7ca9b30ead587c9fc14640"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2668-2691 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2978-3001 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2668}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea05465436bc4639529e8fc883811ec2b1a296d9dbf15b22d541d23873ba76f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6156-6179 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6845-6868 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6156}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9e5ee765bf3584248fc3a52c6fede843f984b2bef16f0ccde1023e2c6230455"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8193-8216 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9062-9085 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8193}}}],"partialFingerprints":{"codehealthFindingId/v1":"998680282855e45ac31c00b5904307f7cfcbaa323d8480e7e17d9608b2494d4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/front_end/lib/src/fragment/constructor/encoding.dart:972-995 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:1070-1093 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":972}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae5b97d0b66e4de7a147c6a270950ee5ba3f3194702379c248405a122335637"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1069-1091 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1620-1643 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"6508de2d90ec2aa177eb7ee5c860e136c4b6ab70dc7dd7426d5f3267aed050bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23\u201324 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1267-1289 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:3838-3861 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1267}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a338b50cd889f83d765b9ce20207f8c96ac737c0cf842d117bee1016f0b5f73"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/front_end/lib/src/type_inference/object_access_target.dart:1258-1281 | pkg/front_end/lib/src/type_inference/object_access_target.dart:1285-1308 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1258}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00ae49882b9c575ea2b7cee3a8c43a0624d813c92c91682185eae431e527cf2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 8): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1389-1411 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1470-1492 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1732-1754 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1924-1946 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2014-2036 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2316-2338 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6581-6603 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8863-8885 \u2014 all 8 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d92d983f8e065c77f5914fe075bb61bf440ba57609bbb001eaeaa60d9b4fc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 7): pkg/front_end/lib/src/dill/dill_class_builder.dart:115-136 | pkg/front_end/lib/src/dill/dill_class_builder.dart:198-219 | pkg/front_end/lib/src/dill/dill_extension_builder.dart:88-110 | pkg/front_end/lib/src/dill/dill_extension_builder.dart:121-143 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:98-120 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:203-225 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:237-259 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/dill/dill_class_builder.dart\u0060 and \u0060pkg/front_end/lib/src/dill/dill_extension_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 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. 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":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc806c25e87fa666ccb8c09146a8db9a9c5ce0525c71553d26a9b3495cf4bc4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart:295-317 | sdk/lib/_internal/js_runtime/lib/regexp_helper.dart:311-333 | sdk/lib/_internal/wasm/js_common/regexp_helper.dart:281-303 | sdk/lib/_internal/wasm/standalone/regexp.dart:197-219 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/regexp_helper.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e56a8d2dc9ad3fe7ab63a74ed8b489fe2c03e5f94dbd43e99bee353f2f82c23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 4): pkg/front_end/lib/src/dill/dill_class_builder.dart:86-107 | pkg/front_end/lib/src/dill/dill_extension_builder.dart:154-175 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:67-89 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:272-293 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/dill/dill_class_builder.dart\u0060 and \u0060pkg/front_end/lib/src/dill/dill_extension_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 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. 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":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"01fffafbc2fcf8f74b6ae869101e11eb6afb5c7977dab01cc42a682b3510bbc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 3): pkg/analyzer/lib/src/summary2/bundle_reader.dart:501-523 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:656-678 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:1110-1132 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"bacf2d71f3a20ba0a54f6cfecd33be5462359b07b5d4f85c5182c552960675c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:2267-2289 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6115-6137 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6234-6256 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":2267}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cef4f6764efd7e90c8a06a94654abdd13a5f699fcfd4075f634dac01b78018d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201323 lines \u00D7 2): pkg/analyzer/tool/ast/generate.dart:196-218 | pkg/analyzer/tool/ast/generate.dart:1187-1206 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"063f4b26996e9c9b18ab33b57142d571ea3178a5d931a5352e1d06d5a499d77b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart:36-58 | pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart:32-54 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a96b4912db49f48a1f0ada024ff778a512aefdb9ee19359792c31b00e7b3c5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart:35-57 | pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart:35-57 \u2014 \u0060pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart\u0060 and \u0060pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 49 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"df093f5547b12f0b2a191b880d68dc4551d5e1f88f0436f8fc11509ae3617607"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201323 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:300-320 | sdk/lib/_internal/js_runtime/lib/js_array.dart:406-428 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ac48e3ea21cdd4eaf27af619a95c38636421f4d4f042056abbd508b4b17822b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): sdk/lib/_internal/vm/lib/async_patch.dart:595-617 | sdk/lib/_internal/wasm/common/sync_star_patch.dart:137-159 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/async_patch.dart"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ca385c871ab8fe13cca4fc2ce4536e942214424d140f7409087b115a064cbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): sdk/lib/_internal/vm/lib/double.dart:341-363 | sdk/lib/_internal/wasm/common/boxed_double.dart:325-347 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ad7d31368928a42e9fb1aa2a6d73c5cea23e5c46afd579af9618b3c3cbf56e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): sdk/lib/_internal/wasm/js/string_patch.dart:126-148 | sdk/lib/_internal/wasm/standalone/string_patch.dart:86-108 \u2014 \u0060sdk/lib/_internal/wasm/js/string_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/string_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 129 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js/string_patch.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"579f82700de9956edfd2c4fe379cbf0c59ba099ee1f717fe4f85fd06f8c1649d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:488-510 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1164-1185 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"070bcd6cd8f5f12cbc4dbe89f0cb95d27086a5bcf3648263a83662181fb772bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart:55-77 | pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart:152-174 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"d64afee88a13fafcba04cb0a20592f7e97055c4e3db45290ea1d02da5ce0f660"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart:309-331 | pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart:350-371 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc8e8f737ef70ba150402e0639ce7d1c0f0d8c4dcdeaa9422c0a98986ee8483c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/analyzer/lib/src/error/element_usage_frontier_detector.dart:77-99 | pkg/analyzer/lib/src/error/element_usage_frontier_detector.dart:188-210 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_frontier_detector.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8bd52b93d97c34775fcbc106fa187f5dc524141bc47a75501fdfe005d4da9ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/analyzer/lib/src/fine/requirements.dart:2678-2700 | pkg/analyzer/lib/src/fine/requirements.dart:2726-2748 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/requirements.dart"},"region":{"startLine":2678}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0aacecf5e67cad12cb96bdb59733d08a06594b0c28a1eff37cb4d68c07bb81f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/compiler/lib/src/js_model/env.dart:712-734 | pkg/compiler/lib/src/kernel/env.dart:555-577 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":712}}}],"partialFingerprints":{"codehealthFindingId/v1":"80d6b27aabbf23e53b50a632e33937f63b7b790d2daf9d500b0706bac4cb62a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:11080-11102 | pkg/front_end/lib/src/kernel/body_builder.dart:11107-11129 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":11080}}}],"partialFingerprints":{"codehealthFindingId/v1":"0525378a52ba56a2e3ff139239df5d314ac18c31f85b73c499893c44524e2ef4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/lib/src/kernel/collections.dart:136-158 | pkg/front_end/lib/src/kernel/internal_ast.dart:7891-7913 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/collections.dart\u0060 and \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 73 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":"pkg/front_end/lib/src/kernel/collections.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"01033d3845031583f72adaba3299200136394c44de65e903db163f9916117500"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/class_member.dart:641-663 | pkg/front_end/lib/src/kernel/hierarchy/class_member.dart:1050-1072 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b721be8975d29f89c9087fb5addf3dba39be7f93b80f88db034bd4ef9eed72f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/delayed.dart:125-147 | pkg/front_end/lib/src/kernel/hierarchy/delayed.dart:154-176 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/delayed.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"a31f4e1ee6b074c0635562304c229b77523f38462c5c13b7c2f0d3793979de45"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:7286-7308 | pkg/kernel/lib/src/ast/patterns.dart:835-856 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 and \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 80 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7286}}}],"partialFingerprints":{"codehealthFindingId/v1":"250ad3a44580126fae679d8bc09d2787a71089a0e4c8f8606658e592979b371b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6412-6433 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6757-6779 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6412}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa060278d62be6d8600b1cca6aca503ddb07b6233a38b88e16c57729c3cffcc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22\u201323 lines \u00D7 2): pkg/observatory/lib/src/elements/instance_view.dart:381-402 | pkg/observatory/lib/src/elements/instance_view.dart:485-507 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"b602cc0f1efb19130e063cc7b527b9ea84c0f0a3692517628ea8cc476c717aca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 4): pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:120-141 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:224-245 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:273-294 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:377-397 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ff2044cc405d01212f1bfddc1805219a9038dfff4a2520670097b7aa6f03af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:381-402 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:384-405 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:453-474 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"975c2b90779fa2aa633906c0c48392454509d5ebbd2fd51b4bf796784f9841b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1339-1360 | sdk/lib/_internal/wasm/common/convert_patch.dart:1525-1546 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1217-1238 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"409974a38e4cfaef99c7e7b9bc43c719e33c5747ae9a15da75a74fd6b2473ba3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart:427-448 | pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart:503-524 | pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart:704-725 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b2897517b20dcbfd700eaa6b6ab216cf574980cca30a030921c89fe92a83915"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 3): pkg/front_end/lib/src/fragment/enum_element.dart:113-134 | pkg/front_end/lib/src/fragment/field/declaration.dart:339-360 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:126-147 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/enum_element.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 47 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"15fa0dda499111ca50b9de0fc949b068e6120b82d08049847ef11034eceed967"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1327-1348 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1764-1785 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1327}}}],"partialFingerprints":{"codehealthFindingId/v1":"803d9ba5438fa0055b2d4130976f07358faea49954c647ef3db7c0c88bc6882d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201322 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_get_fixes_and_get_assists_requests.dart:71-92 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_hover_requests.dart:64-81 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_get_fixes_and_get_assists_requests.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_hover_requests.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 53 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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_get_fixes_and_get_assists_requests.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"47166ac520d8b64fc01f6fa47b8e532d9f0986acf34c43d696e3d6a8ff362176"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/analyzer/tool/ast/generate.dart:1042-1063 | pkg/analyzer/tool/ast/generate.dart:1095-1116 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"21c321f0b0aa2e598ea71d7c52d4374e2fe63ef9dcfc1120f19b23a64617d49b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): pkg/dart2wasm/lib/dynamic_dispatchers.dart:100-120 | pkg/dart2wasm/lib/dynamic_dispatchers.dart:136-157 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dynamic_dispatchers.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f945adc621884c6300dec69a453521bdcefd1ad0a26e8fef6bc6beeb673b088"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201322 lines \u00D7 2): pkg/dart2wasm/lib/list_factory_specializer.dart:195-216 | pkg/vm/lib/modular/specializer/list_factory_specializer.dart:176-195 \u2014 before extracting anything, compare \u0060pkg/dart2wasm/lib/list_factory_specializer.dart\u0060 and \u0060pkg/vm/lib/modular/specializer/list_factory_specializer.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 151 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/list_factory_specializer.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"4460b786bb5c977acd77825ccc2eecd49c30a4fd5030c90a1b6b62894cfdb49c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201322 lines \u00D7 2): pkg/front_end/testcases/general/constants/potentially_constant_type.dart:69-90 | pkg/front_end/testcases/general/constants/potentially_constant_type_lib1.dart:46-60 \u2014 before extracting anything, compare \u0060pkg/front_end/testcases/general/constants/potentially_constant_type.dart\u0060 and \u0060pkg/front_end/testcases/general/constants/potentially_constant_type_lib1.dart\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. 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":"pkg/front_end/testcases/general/constants/potentially_constant_type.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"3215d01b5f316b4a715258bd6400e957ceb9788b74e980150ed7f48403c54fdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:559-580 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:562-583 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"0715f1b762097c292e493ecf3004c6f2100349a32dafdb97e1f2c2f392b833bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:2104-2125 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:2122-2143 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":2104}}}],"partialFingerprints":{"codehealthFindingId/v1":"12689f992f845bee2fe085d2594c47f1bfb72d1d35e2da73de26af78fc8f7c0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/analysis_server/lib/src/cider/document_symbols.dart:43-64 | pkg/analysis_server/lib/src/lsp/handlers/handler_document_symbols.dart:53-74 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/document_symbols.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a9ba9fc4efea3699d0bd42a5c6fda4dd6072fda7875e4c944898d82c3553b67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/commands/organize_imports.dart:22-43 | pkg/analysis_server/lib/src/lsp/handlers/commands/sort_members.dart:23-44 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/commands/organize_imports.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"0013748d597fbdc9f931cd3ae96c7bd054efec55f846bfcb19ff8dde739149d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/analysis_server/lib/src/plugin/server_isolate_channel.dart:112-133 | pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart:238-259 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/plugin/server_isolate_channel.dart\u0060 and \u0060pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 63 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/server_isolate_channel.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"58ff3295ca4b0c36cf9b73abccd937df893e2e6d127ed261b13507e9d8c791d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201322 lines \u00D7 2): pkg/analysis_server/lib/src/status/pages/legacy_plugins_page.dart:93-108 | pkg/analysis_server/lib/src/status/pages/plugins_page.dart:272-293 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/legacy_plugins_page.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"f250120304c2a6db07b8f9f28615a07038bc6283c136afb715033e86b8def5f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:38321-38342 | pkg/analyzer/lib/src/dart/ast/ast.dart:38348-38369 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":38321}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fc9dad1f1a15e32fd42393bd9313e26eabf22bcf48ddd86fe88c07fd103f274"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/analyzer/lib/src/fasta/ast_builder.dart:3350-3371 | pkg/analyzer/lib/src/fasta/ast_builder.dart:6281-6302 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":3350}}}],"partialFingerprints":{"codehealthFindingId/v1":"64c3e8b7a3489cd3324f8595102177fba86ee0f0de86d8b9549f608afd664b4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/analyzer/lib/src/generated/error_verifier.dart:1212-1233 | pkg/analyzer/lib/src/generated/error_verifier.dart:2494-2515 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":1212}}}],"partialFingerprints":{"codehealthFindingId/v1":"0250bbf435094f5410cdd18f92f7b4aafef3c12e788a7bf14964c431998caa3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): pkg/analyzer/lib/src/summary2/element_builder.dart:589-610 | pkg/analyzer/lib/src/summary2/element_builder.dart:696-716 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1f0aa26f2c04be681acb8065bc6f985850fd189ddbc20f39b508fab32bdd541"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/compiler/lib/src/ssa/builder.dart:1663-1684 | pkg/compiler/lib/src/ssa/builder.dart:4391-4412 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1663}}}],"partialFingerprints":{"codehealthFindingId/v1":"2caa4d65afa6f8be69a4805d8ff44267095ec5d2694f332e21298d210126e1b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7956-7977 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8822-8843 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7956}}}],"partialFingerprints":{"codehealthFindingId/v1":"a418349ccbfb44db735de420a36cd468c68803d96d2713fa1c76d0105b426e04"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_target.dart:66-87 | pkg/front_end/lib/src/kernel/kernel_target.dart:221-242 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_target.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"8320e40d3c4baa431d9892dd42902fed61e85a0207adc27177fb17ce988ac2c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:4973-4994 | pkg/front_end/lib/src/source/outline_builder.dart:3209-3230 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/body_builder.dart\u0060 and \u0060pkg/front_end/lib/src/source/outline_builder.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 99 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4973}}}],"partialFingerprints":{"codehealthFindingId/v1":"a749f25e885d053f13c3e0f9ae056fb654fb2c0dfddd7d841f5d317428073907"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:3452-3473 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:3491-3512 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3452}}}],"partialFingerprints":{"codehealthFindingId/v1":"d46766f58dbd592666144e2d13172be59a942d4c626e03a36416c347813a2933"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201322 lines \u00D7 2): pkg/front_end/lib/src/kernel/expression_generator.dart:258-277 | pkg/front_end/lib/src/kernel/expression_generator.dart:7437-7458 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"422576fdff4b88f5484dfd9b1064cc8870bc7fc0182d7b994201eed62a814f09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): pkg/front_end/lib/src/kernel/expression_generator.dart:2967-2988 | pkg/front_end/lib/src/kernel/expression_generator.dart:3441-3461 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":2967}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cd365b19c73d32b8e1d9cc6d02b44486461835158d3c50f46505cf4ea4a0fa0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/mixin_inferrer.dart:393-414 | pkg/front_end/lib/src/kernel/hierarchy/mixin_inferrer.dart:501-522 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/mixin_inferrer.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb5f76959ddac1d4583153b6276d7f1a94e64c059a2c83eda005f2a608ce6816"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart:603-624 | pkg/front_end/lib/src/source/source_type_alias_builder.dart:218-239 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3c42564e7ec66b708ccfadda0b29a2b3f5078dde263a38fbfa8d55e85aa0084"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201322 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1095-1116 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1133-1152 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"2691825cda2694edd5139272057fba04833e7333c9c659697f5fd08058b2dec3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1142-1163 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1694-1715 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1142}}}],"partialFingerprints":{"codehealthFindingId/v1":"72fdeab87a0f5830869ee5e5e2f2066bff2f9705aa563119fd77251d327c01b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201322 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1647-1668 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1685-1704 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1647}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcebd03b5b6f6710455eb78d256ef4ff4a2a8d18ec436cd51a8d394bfea86042"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1790-1811 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1815-1835 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1790}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb857ebe910a881f0642eac9e9c6a30cfd1a488b0ea22e1b3bc090784282a3b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21\u201322 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6351-6371 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6824-6845 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6351}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8fc537284278f6239cdb5124b9573122e8124ee8ed2b3e3699eaf058894b369"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/linter/lib/src/rules/analyzer_element_model_tracking.dart:99-120 | pkg/linter/lib/src/rules/analyzer_element_model_tracking.dart:127-148 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_element_model_tracking.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d72cf5d231fbc68377ebb91bc910216281c1366faf93c1c4f24975abc0922bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:427-448 | pkg/observatory/lib/src/elements/process_snapshot.dart:154-175 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc585f0e288dc7f4115a6d6dc59d16db2e727bf7777daf41011cd601e3474f01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201322 lines \u00D7 2): pkg/wasm_builder/lib/src/builder/instructions.dart:2220-2232 | pkg/wasm_builder/lib/src/builder/instructions.dart:2258-2279 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":2220}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf32ed4b833edc3fd417ba0b207783d4c78d83e3999e461385d5c3c476d56663"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 6): pkg/front_end/lib/src/fragment/getter/encoding.dart:372-391 | pkg/front_end/lib/src/fragment/getter/encoding.dart:673-693 | pkg/front_end/lib/src/fragment/method/encoding.dart:303-322 | pkg/front_end/lib/src/fragment/method/encoding.dart:674-694 | pkg/front_end/lib/src/fragment/setter/encoding.dart:374-393 | pkg/front_end/lib/src/fragment/setter/encoding.dart:699-719 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dacc4009ee7085e57e8e61a2cfb48680f2b814970788d5ea3bb0b6b571c9b23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 6): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1410-1430 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1491-1511 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1753-1773 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1945-1965 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2151-2171 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2337-2357 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1410}}}],"partialFingerprints":{"codehealthFindingId/v1":"c223a82197c1d15b5c4ba78f6aaf053fd5a255b9140da23714986f9905a48c22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201321 lines \u00D7 4): pkg/observatory/lib/src/elements/heap_snapshot.dart:1069-1086 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1110-1127 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1150-1170 | pkg/observatory/lib/src/elements/process_snapshot.dart:474-491 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8467b43575036333428403c39ea760557f26d3e0535377169682667637e17b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:108-128 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:178-198 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:200-220 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"994307bd9be06b4e53129ff13b6f40cbea9417250b6254a580eb68d42b62b0fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1424-1444 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1443-1463 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:1917-1937 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1424}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02853865a397e0576e49a6acf5bb8354f57bd6f10180049ff9f55e2935a6ba0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1303-1323 | sdk/lib/_internal/wasm/common/convert_patch.dart:1489-1509 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1181-1201 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f297495b30bed960080cd1e46de606516459d56c68f6a0b04675ac3870ead3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): pkg/analysis_server/lib/protocol/protocol.dart:193-213 | pkg/analysis_server_client/lib/src/protocol/protocol_base.dart:177-197 | pkg/analyzer_plugin/lib/protocol/protocol.dart:207-227 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/protocol/protocol.dart\u0060 and \u0060pkg/analysis_server_client/lib/src/protocol/protocol_base.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 53 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/protocol/protocol.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b88127b1754b1e53c023f6e5a1718ab077da3abcf66014712e9d5493129d46"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:181-201 | pkg/front_end/tool/fuzz/analyzer_helper.dart:421-440 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart\u0060 and \u0060pkg/front_end/tool/fuzz/analyzer_helper.dart\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":"pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce555868c1664507157e46b6818b9dbf921673b162d77ec88d51dbacd4191094"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201321 lines \u00D7 2): pkg/analysis_server/tool/code_completion/completion_metrics.dart:779-799 | pkg/analysis_server/tool/code_completion/completion_metrics_client.dart:489-507 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"600f79820de5afd3774877aba01492af480b501299d9328a9659e6ad6d5ea4bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/analyzer/tool/generators/ast_generator.dart:519-539 | pkg/analyzer/tool/generators/ast_generator.dart:563-583 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3f561226f31689d7732da45c4a0c51b71f0fcbcdd0d3649a2b811a48d3b4544"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/dart2wasm/lib/transformers.dart:1396-1416 | pkg/dart2wasm/lib/transformers.dart:1469-1489 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/transformers.dart"},"region":{"startLine":1396}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b14748d72ccfee3f39283179c1c53975dbbbb4b25ce79ee749978cb950bad33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:687-707 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:690-710 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"a326669732b65ca416a46ae20e2cc072b3dc7050bbb3f5bd5beb0a0dcc6db351"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:25-45 | sdk/lib/_internal/js_runtime/lib/js_number.dart:35-55 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"03afb93bdf0e9e1cb47931dcf92b4c72d02c396b90274e98f71939c65ff8abe5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/analyzer/lib/src/dart/analysis/results.dart:327-347 | pkg/analyzer/lib/src/dart/analysis/results.dart:485-505 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/results.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0dd04c3ed412b9fa818c79a0c3b2ee8b31d7d80e96c0f83eb94b5c7076ecff7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/utilities.dart:144-164 | pkg/analyzer/lib/src/dart/ast/utilities.dart:295-315 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/utilities.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bd7ff36da5a31e6937b47a655aa8c8314dc7a83a39027f1dec18c9ee8cbf252"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart:85-105 | pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart:447-467 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9c7c03d891145ea48d516cc000a387f10d589d069c4baa087876f8ea4da8ea3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/exit_detector.dart:346-366 | pkg/analyzer/lib/src/dart/resolver/exit_detector.dart:370-390 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21e5a804c47c7b00cb22937cf918336323eb238921a4b0df1b693f4aaaca19b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/analyzer/lib/src/generated/resolver.dart:2315-2335 | pkg/analyzer/lib/src/generated/resolver.dart:2343-2363 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":2315}}}],"partialFingerprints":{"codehealthFindingId/v1":"d063b94937fd3e4bbc4ed127c222188ef6c1879c89e895984d4487a7b3ea3de6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart:449-469 | pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart:758-778 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"45c558b470ea3233f473d6118b71691f5737db0ec7f33989709e9dd85373b1d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/compiler/lib/src/inferrer/builder.dart:372-392 | pkg/compiler/lib/src/inferrer/builder.dart:396-416 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"556d5eca0bcaa5b0906644269dd48aab56a14a35094447280c3954bf667c5f91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/compiler/lib/src/js/placeholder_safety.dart:230-250 | pkg/compiler/lib/src/native/js.dart:256-276 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/placeholder_safety.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db9ab48bfbaa0845bf06ed93b61341690c6016c4be934f60596475392f0a25d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/compiler/lib/src/js/size_estimator.dart:902-922 | pkg/js_ast/lib/src/printer.dart:1289-1309 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/size_estimator.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 154 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":902}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bbea658157e0fb6eb1ae5f8613624b65e7cc26fd9c43630eb242b815866b2fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201321 lines \u00D7 2): pkg/dart_runtime_service/lib/src/devtools/machine_mode_command_handler.dart:270-284 | pkg/dds/lib/src/devtools/machine_mode_command_handler.dart:372-392 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devtools/machine_mode_command_handler.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9af37fd1f87354727ff969945343fe4c9d58d1114a4c2e8c4e5339c2a58bd7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4579-4599 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5181-5201 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4579}}}],"partialFingerprints":{"codehealthFindingId/v1":"273c7f45df63eac2f97758631b2884ab1c426aa5d91d9e81dc052b6382bf126f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4828-4848 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5438-5458 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4828}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8491c7a0c929e69263d52af218f5071d991de0d00c2d62993fbdf5e3a90a7b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5498-5518 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6108-6128 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5498}}}],"partialFingerprints":{"codehealthFindingId/v1":"6524982b76fa06b0c479801781e9035b7337135597b270cb58fbf48a9003fa91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8048-8068 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8917-8937 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8048}}}],"partialFingerprints":{"codehealthFindingId/v1":"fac391c479fb66c4aefa9759390c036e09d4b325b1c6642a6ad6974203e3d9a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8493-8513 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9444-9464 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8493}}}],"partialFingerprints":{"codehealthFindingId/v1":"e22bd6ab89632c76376d178341a6703acf65fc8b81c7058d58a25a4106ac0f1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): pkg/front_end/lib/src/builder/record_type_builder.dart:439-459 | pkg/front_end/lib/src/builder/record_type_builder.dart:460-479 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/record_type_builder.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9126e78e7ddadf43298c493c52cf03d08401e70f807c9853547d639b2a68b70"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): pkg/front_end/lib/src/fragment/factory/encoding.dart:923-943 | pkg/front_end/lib/src/fragment/factory/encoding.dart:959-978 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":923}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e49e275bfbbeb43c37e52b5f7449be100d03bf96c50bdbec966e2bb782f5029"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/encoding.dart:311-331 | pkg/front_end/lib/src/fragment/field/encoding.dart:382-402 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ec49226b0a4a518103201c2f1405ab37fda4dcb65bbc0fed214cdb77c1732f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:10187-10207 | pkg/front_end/lib/src/kernel/body_builder.dart:10284-10304 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10187}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1997c9bd43a8eb9431acd51412ed42d005b6f49f96e43e5ec2fe6055deb7d2f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201321 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:1772-1790 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:1881-1901 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1772}}}],"partialFingerprints":{"codehealthFindingId/v1":"268627e3443880d8e7711d9610e68c86053356b94ff9f62fde9863b8a2fae13b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201321 lines \u00D7 3): pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:1023-1043 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:1047-1067 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:1068-1080 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1023}}}],"partialFingerprints":{"codehealthFindingId/v1":"fab9dc942421335382a3ce72676d501fc92f2ee42ef9689e519ca67356ba2652"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): pkg/front_end/lib/src/type_inference/body_inference_context.dart:891-910 | pkg/front_end/lib/src/type_inference/body_inference_context.dart:1059-1079 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e11ba1e2a38ba64dd1f6a9956e2d052120361fb16bf70e112dcc1805ea7476f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:3546-3565 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:3592-3612 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":3546}}}],"partialFingerprints":{"codehealthFindingId/v1":"e03af3509b7c20002d725b21213581743ddb8a716b8258898d85714c422374d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:4960-4980 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5081-5101 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4960}}}],"partialFingerprints":{"codehealthFindingId/v1":"df4627d97a6ec0c1bdaa0e8d4ab0e71b75756c6a7edfa52cafd7619c69e71e24"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:4996-5015 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:10728-10748 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4996}}}],"partialFingerprints":{"codehealthFindingId/v1":"2858314da092c371cdc3983e9b8bd2432b79e229226f612b64e90f959bd418c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20\u201321 lines \u00D7 2): pkg/front_end/lib/src/type_inference/matching_expressions.dart:427-447 | pkg/front_end/lib/src/type_inference/matching_expressions.dart:637-656 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e817a17e307628fae814cd93e172092c65b13dd9fc50a1e0961892bedc8a91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201321 lines \u00D7 2): pkg/linter/lib/src/rules/collection_methods_unrelated_type.dart:183-195 | pkg/linter/lib/src/rules/collection_methods_unrelated_type.dart:210-230 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/collection_methods_unrelated_type.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"055cc4b042e96029818b3aafda65cd674cca633fd17922df345b6ffcf64d72cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 7): pkg/analyzer/lib/src/dart/ast/ast.dart:20485-20503 | pkg/analyzer/lib/src/dart/ast/ast.dart:20509-20527 | pkg/analyzer/lib/src/dart/ast/ast.dart:22086-22105 | pkg/analyzer/lib/src/dart/ast/ast.dart:49654-49672 | pkg/analyzer/lib/src/dart/ast/ast.dart:49678-49696 | pkg/analyzer/lib/src/dart/ast/ast.dart:53133-53151 | pkg/analyzer/lib/src/dart/ast/ast.dart:53157-53175 \u2014 all 7 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20485}}}],"partialFingerprints":{"codehealthFindingId/v1":"db00c5e24985bb67c47ce7af225640c8716b0ecd430fb9d5651e72f03b1a3db9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 6): pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart:42-61 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart:75-94 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart:108-127 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart:42-61 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart:75-94 | pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method_tearoff.dart:108-127 \u2014 there are 6 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 6 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/testcases/transformations/type_flow/transformer/unboxed_instance_method.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"b64e2a94212575fdc0ea1ef15af1a50d5c88c7b9a3a24e9c02fc775ce2b6a0c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201320 lines \u00D7 4): pkg/analyzer/tool/ast/generate.dart:636-655 | pkg/analyzer/tool/ast/generate.dart:682-701 | pkg/analyzer/tool/ast/generate.dart:897-914 | pkg/analyzer/tool/ast/generate.dart:992-1009 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"dee6e27e0333083397409afe5c55c82e482ed41bb4e04a17a1083d301fefdbe8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): sdk/lib/internal/internal.dart:537-556 | sdk/lib/internal/internal.dart:579-598 | sdk/lib/internal/internal.dart:623-642 | sdk/lib/internal/internal.dart:669-688 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3d8bf8ed4937f4d92aac295d795606e2c7843ad61c54b8ba092fc667dd2ae6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): pkg/front_end/lib/src/fragment/class/declaration.dart:76-95 | pkg/front_end/lib/src/fragment/class/declaration.dart:148-167 | pkg/front_end/lib/src/fragment/class/declaration.dart:221-240 | pkg/front_end/lib/src/fragment/class/declaration.dart:357-376 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/class/declaration.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"717356d7076e43855aed8b8fb03a7fa0ff2b390e9ff3c182cbbf840bfdca09f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 4): pkg/front_end/lib/src/type_inference/inference_visitor.dart:5559-5578 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5647-5666 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5721-5740 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5858-5877 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5559}}}],"partialFingerprints":{"codehealthFindingId/v1":"1375ac6859adac8ac8a62484a9935fd599bfe11c3d28f6826b860368787f95ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 3): pkg/front_end/tool/bench_maker.dart:416-435 | pkg/front_end/tool/bench_maker.dart:547-566 | pkg/front_end/tool/bench_maker.dart:572-591 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/bench_maker.dart"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aa8fbfc944c8cb4189fec1be27505780450cef4622d7a154ae7733618c95583"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:2054-2073 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:2072-2091 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2685-2704 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":2054}}}],"partialFingerprints":{"codehealthFindingId/v1":"c399ec30092e045e39cad2a6bab818a106639648abea809cc65d9708c656e370"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 3): pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart:27-46 | pkg/analysis_server/lib/src/services/refactoring/convert_selected_formal_parameters_to_named.dart:30-49 | pkg/analysis_server/lib/src/services/refactoring/move_selected_formal_parameters_left.dart:28-47 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/convert_selected_formal_parameters_to_named.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 48 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":"pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"a120d6f1f03fb6cb24632d11cb7d82f6b5ed2db8fb6510ff70e72cad304e7f57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 3): pkg/front_end/lib/src/builder/function_type_builder.dart:562-581 | pkg/front_end/lib/src/builder/named_type_builder.dart:1394-1413 | pkg/front_end/lib/src/builder/record_type_builder.dart:597-616 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/builder/function_type_builder.dart\u0060 and \u0060pkg/front_end/lib/src/builder/record_type_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 42 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":"pkg/front_end/lib/src/builder/function_type_builder.dart"},"region":{"startLine":562}}}],"partialFingerprints":{"codehealthFindingId/v1":"7103cf768656cc04d8c7e708d60fd85e1c7ef515b445e8366c2c845ab0d8ed0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 3): pkg/front_end/lib/src/kernel/dynamic_module_validator.dart:254-273 | pkg/front_end/lib/src/kernel/dynamic_module_validator.dart:286-305 | pkg/front_end/lib/src/kernel/dynamic_module_validator.dart:318-337 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a803dcbf0ac8d5e6ff4a83d4ccd58a70bbae184072347fe0beb64706949bfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1371-1390 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:972-990 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1371}}}],"partialFingerprints":{"codehealthFindingId/v1":"652129e155c05a86c8e0854be77468c63b7d0a1de1c51c7631c8f12f6824176a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1350-1369 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:997-1015 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1350}}}],"partialFingerprints":{"codehealthFindingId/v1":"e012bdc7d7d558ef9afdb03346bc140688d8ec84dc8f739b092ea35a3903e3a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2177-2196 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1915-1934 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2177}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85c79d500a1dd10a31770e60cf9f22565b18949cf6efcf48565159453dd4137"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart:51-70 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_with_plugin_that_times_out.dart:40-59 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4bd7f41e3ade89e8c0dd588b34b29eb1aeb7860aab2bb54fc6d347d3b2e8389"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): pkg/front_end/tool/coverage_merger.dart:1168-1187 | pkg/front_end/tool/coverage_merger.dart:1238-1256 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"d38f06b187437afc704d36b3c5774c1870c9c7ccf9333c5fd47bbe18669ad600"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/kernel/lib/type_algebra.dart:1008-1027 | pkg/kernel/lib/type_algebra.dart:1359-1378 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1008}}}],"partialFingerprints":{"codehealthFindingId/v1":"a13989b7b1feecef5f548f0fbc96ad8f49d10f58c0a736df4c6a6353d2c2d1dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:583-602 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:586-605 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"8df58f3b23ad2637d65bedea4e0d4ae5c443375a875c76fe9a520a77413015eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1088-1107 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1091-1110 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"5acd094f7c2ad704b43794b32be71c7854f88b5df94362b6b4f8312ddcded1b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_helper.dart:110-129 | sdk/lib/_internal/js_runtime/lib/js_helper.dart:375-394 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_helper.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_helper.dart\u0060 as WHOLE FILES: this scan already matched 6 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":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d79924119db9a69d692843ab6cacfb848ba6715364227fe31a532f107ffe51cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_clause.dart:26-44 | pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_stack.dart:26-45 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused_catch_clause.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa277af36944c3681dda833530864d359ecc82f9105ea7ecc3b24932f282a60f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:658-677 | pkg/analyzer/lib/src/dart/ast/ast.dart:682-701 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":658}}}],"partialFingerprints":{"codehealthFindingId/v1":"e99708b014eb1f18eddb4458989226825843ddc7da59cb60aa80d33c09f66ffb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:7381-7400 | pkg/analyzer/lib/src/dart/ast/ast.dart:7405-7424 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7381}}}],"partialFingerprints":{"codehealthFindingId/v1":"7babb0b2c80963dbd1616003537213aea429d701530ac810187b3e1aa6258f34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:8538-8557 | pkg/analyzer/lib/src/dart/ast/ast.dart:8563-8582 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":8538}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d4cc1e67b45565c4260ebddec90ade2957fde760e203f65797b36ca80b2c047"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:17238-17257 | pkg/analyzer/lib/src/dart/ast/ast.dart:17263-17282 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17238}}}],"partialFingerprints":{"codehealthFindingId/v1":"322864d6149b1717ac116fb9e4f0217f15be91873a12246d1dbde4823edef1c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/element_locator.dart:110-129 | pkg/analyzer/lib/src/dart/ast/element_locator.dart:597-616 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/element_locator.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc0e8795625e7d32d71694bf924e2f24dcb2bb6298f091573d8d467651152ed1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:380-398 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:658-677 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1542416e5c55197f56c1a555683f3f957daa6c9fe10441ae268fbe1308ae3a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_reader.dart:832-851 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:1174-1193 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":832}}}],"partialFingerprints":{"codehealthFindingId/v1":"3168baba0192c2d291aef0caf076d7ef646785d1778406fb067498ed11d20563"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_reader.dart:859-878 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:1201-1220 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":859}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8111c9fdd6e36b2c95f72ed94f84c1794db3f7e303e8e48bae3efd6f6930e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analyzer/lib/src/summary2/types_builder.dart:230-249 | pkg/analyzer/lib/src/summary2/types_builder.dart:413-432 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/types_builder.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"694dcc8308bd797b19242d668609141532ff252cc6a7ce3b1a8f2cd8ff1eebe3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201320 lines \u00D7 2): pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart:928-947 | pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart:1359-1375 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart"},"region":{"startLine":928}}}],"partialFingerprints":{"codehealthFindingId/v1":"f99bd32161cd9d0f4493b0afcd26ae28394074da6aa2f6e0852502d463d568b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart:135-154 | pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart:158-177 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/visitors/local_declaration_visitor.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f7adaea0758f8e432a14600be494201e15ac06507765e229ab87e20f40e7999"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/compiler/lib/src/inferrer/builder.dart:1727-1746 | pkg/compiler/lib/src/inferrer/builder.dart:1748-1767 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1727}}}],"partialFingerprints":{"codehealthFindingId/v1":"f96ac607a489a718fe5fbbfaf924b28f163a6e8450b536325e96f4d87982c104"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2655-2674 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2106-2125 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2655}}}],"partialFingerprints":{"codehealthFindingId/v1":"d42d163e216efa2ac39e56d9dd7ef7c9b2873a4ee55fc037bb444560a66f6801"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/compiler/lib/src/serialization/member_data.dart:150-169 | pkg/compiler/lib/src/serialization/member_data.dart:199-218 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/member_data.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f69ee80575c47744f26110512f29a09c04c5db04e0ecf3e54113e2dfd5123d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): pkg/compiler/lib/src/ssa/builder.dart:6157-6176 | pkg/compiler/lib/src/ssa/builder.dart:6205-6223 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6157}}}],"partialFingerprints":{"codehealthFindingId/v1":"042474f12e9c4e0472e15f13a9be2a8618268d9142b42729dbf734e71974d488"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/compiler/lib/src/ssa/builder.dart:6691-6710 | pkg/compiler/lib/src/ssa/builder.dart:6727-6746 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6691}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4d8cd1439ec6b0da61c45d2d01b90010e2f156c1cc0a8fae0cf0a8e426e35b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/dartdev/lib/src/commands/compile.dart:241-260 | pkg/dartdev/lib/src/commands/compile.dart:373-392 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"9255f2b79157b9bfafec42eb40c01a7bab414fd7d3dd627dc48f205e74cb7f6f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:438-457 | pkg/js_ast/lib/src/builder.dart:370-389 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc618dec0add277e7354e42c14c830afcb7b3581374cb3722a0314d3b6b355f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:1457-1476 | pkg/js_ast/lib/src/builder.dart:1264-1283 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1457}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2fbdd569ad633713c59f3822f1b9b509c8654ad8b04b7c60c6c05a622a09eab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:1483-1502 | pkg/js_ast/lib/src/builder.dart:1290-1309 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1483}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4dce6bc4d25dffdfd250c49270839d13ca5242dc02f264a37215cac4f25684e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2603-2622 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2914-2933 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2603}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0c0ebb3f5375ca92f88a9d301ec6925a6e19d8b0a4190ae5761ea7b71b6504"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5235-5254 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5845-5864 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5235}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd92eeb76dc84c5fee28f4ad11876f5aead0bad82b7639ee5a3340bc7313a25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201320 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5918-5926 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6573-6592 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5918}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd5128cf7f7c86c663f3ca8b17e63d2dc46f893a97cdfcb71149bdad5728dc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5990-6009 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6679-6698 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5990}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f573ab2a8d7e0e8fce4e36b6cddc432ed3574aa21603fe58b8c8ef557468f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/front_end/lib/src/fragment/setter/encoding.dart:353-372 | pkg/front_end/lib/src/fragment/setter/encoding.dart:678-697 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/setter/encoding.dart"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"309193b8fcd7cbebe33072776f45526f1aa571ff6660c0b1ca2571a05c926782"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:1599-1618 | pkg/front_end/lib/src/kernel/body_builder.dart:2079-2098 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":1599}}}],"partialFingerprints":{"codehealthFindingId/v1":"596d7bdc3068528c58734dcdfffe05056d3f1ff29f7d650b264c9dc761508f45"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/mixin_inferrer.dart:528-547 | pkg/front_end/lib/src/kernel/hierarchy/mixin_inferrer.dart:555-574 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/mixin_inferrer.dart"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"944764ffc6b9fe1ac441b5eda12a377c915ac20264b591a82fd844b0a8fdac4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/front_end/lib/src/kernel/resolver.dart:466-485 | pkg/front_end/lib/src/kernel/resolver.dart:760-779 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff4a5d261b473634f9a29bc892b5ffc263a69781d858808180f8e77d574f8f42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/front_end/lib/src/source/outline_builder.dart:2142-2161 | pkg/front_end/lib/src/source/outline_builder.dart:2164-2183 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2142}}}],"partialFingerprints":{"codehealthFindingId/v1":"05dbcb9d5911dcd8b4dceadb47873c5840be01966a6168b7620a178643922f7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/front_end/lib/src/source/outline_builder.dart:2378-2397 | pkg/front_end/lib/src/source/outline_builder.dart:2596-2615 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2378}}}],"partialFingerprints":{"codehealthFindingId/v1":"c72e6fc3f6a605330ff85df25c5958862b1283c2ce96a02b6c241a1c73344237"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/front_end/lib/src/type_inference/body_inference_context.dart:930-949 | pkg/front_end/lib/src/type_inference/body_inference_context.dart:1098-1117 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fe0a4dacd684fa1cc517cf8642ef4b7903e272250af271118109c92fc53761a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1104-1123 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1656-1675 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"6efdbcab829d020f40c595f53e247cee00e67a2eeec9cbfef36e25e22d2cd53c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:4353-4371 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5293-5312 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4353}}}],"partialFingerprints":{"codehealthFindingId/v1":"c863f45270a584f5e8d8280ab50d2f39ba3903ab0650ba7bc0bb319b9882333b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19\u201320 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6286-6304 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8426-8445 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6286}}}],"partialFingerprints":{"codehealthFindingId/v1":"25f9691dfe87d7e99bd2fdcfaccae9389467cbed360a858bd899ec516f091c03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6405-6424 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6510-6529 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6405}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aecc262b6a89beac0771574b513467786412e42713b9abdadf4287dce11d8ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201320 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7174-7193 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8781-8796 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7174}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e88787a5409b286f035b24b92dabd258e0bc673b8cff5084d973b5651510ed1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): pkg/kernel/lib/src/ast/expressions.dart:1608-1627 | pkg/kernel/lib/src/ast/expressions.dart:4875-4894 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1608}}}],"partialFingerprints":{"codehealthFindingId/v1":"3415a507ece26bc3cbc7f46497a287679c4526e8feec81d1ccd11f84c47f65d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 5): sdk/lib/internal/internal.dart:498-516 | sdk/lib/internal/internal.dart:538-556 | sdk/lib/internal/internal.dart:580-598 | sdk/lib/internal/internal.dart:624-642 | sdk/lib/internal/internal.dart:670-688 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"82d3af83f22ff83ad8e515f4f12a4a6a52e11f6954c99f22a079ffaa6fe1762f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 4): pkg/analyzer/lib/src/fine/library_manifest.dart:350-368 | pkg/analyzer/lib/src/fine/library_manifest.dart:452-470 | pkg/analyzer/lib/src/fine/library_manifest.dart:535-553 | pkg/analyzer/lib/src/fine/library_manifest.dart:733-751 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"384911297722495527be2eec8bba3380bac8edfb403f472d259d99dff38e8b98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 3): pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:264-282 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:301-319 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:369-386 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab29878a3463efce55ce5dbc7561553de1e6ebc419b73c61d5496bad7a1aef67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): pkg/analyzer/tool/ast/generate.dart:196-217 | pkg/analyzer/tool/ast/generate.dart:822-900 | pkg/analyzer/tool/ast/generate.dart:1187-1205 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"b43999ff4d73d4c2646b1bff3e51ec0ec5980e49b6a46ec18da7b49ad3e8086e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 3): sdk/lib/_internal/vm/lib/math_patch.dart:294-311 | sdk/lib/_internal/wasm/js_common/math_externs_patch.dart:116-134 | sdk/lib/_internal/wasm/standalone/math_externs_patch.dart:71-89 \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":"sdk/lib/_internal/vm/lib/math_patch.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"b607a50538cefd9610ed0586814f822fba02cc19f3a388dffab968fb40fcd2ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): pkg/compiler/lib/src/ssa/builder.dart:6662-6680 | pkg/compiler/lib/src/ssa/builder.dart:6698-6716 | pkg/compiler/lib/src/ssa/builder.dart:6734-6752 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6662}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e95a4b7c8c64143c0b651764cc2f3d3e6e268de390f4f7454225c60fbadc8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:104-122 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:151-169 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:198-216 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"9328efabd9eabe8935112f9ba4954a89b82da274448bc7a640806bcdab5ee261"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): pkg/observatory/lib/src/elements/code_view.dart:205-223 | pkg/observatory/lib/src/elements/megamorphiccache_view.dart:118-136 | pkg/observatory/lib/src/elements/script_view.dart:125-143 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/code_view.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6ea3d8329341c11d3392051b3e9f822b9bd4c9a56ef734b1f6edfdc5f5e5bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): pkg/observatory/lib/src/elements/instance_view.dart:384-402 | pkg/observatory/lib/src/elements/instance_view.dart:423-441 | pkg/observatory/lib/src/elements/instance_view.dart:489-507 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"8be5ba2d93456f3b9e9ac4f5ee51dd55f74ead4a70d5908c97a8ea0ac238c910"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 3): pkg/observatory/lib/src/elements/isolate_view.dart:198-216 | pkg/observatory/lib/src/elements/metric/graph.dart:78-96 | pkg/observatory/lib/src/elements/vm_view.dart:250-268 \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":"pkg/observatory/lib/src/elements/isolate_view.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f76670aebce39539153c5940c73f1c08bfd6f7af45d08e0bc965886451b6bc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2089-2107 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1353-1371 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2089}}}],"partialFingerprints":{"codehealthFindingId/v1":"39fc23adcad401a45bee0f4a30c441346d48197f7469db4172359cd195c2ea9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart:1003-1021 | sdk/lib/_internal/js_runtime/lib/async_patch.dart:725-743 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/async_patch.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":1003}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bc47fef120c31c0edc9baeebb3851fcceb148c0ebd5e4daa05e0369593d9919"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart:643-661 | sdk/lib/_internal/js_runtime/lib/core_patch.dart:646-664 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/core_patch.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4fef960e87f2ab072493424b1d9a79435a72ef4e72f40cb6c4e157b6969434d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart:292-310 | sdk/lib/_internal/js_runtime/lib/math_patch.dart:280-298 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/math_patch.dart\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 144 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"a497610f52ffa40bf6a5f05d1a4d026f480b4c3ef3952089db834941f81d1476"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:437-455 | sdk/lib/_internal/js_runtime/lib/js_array.dart:538-556 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed64a91ee963ed1c50e6154c057caf1df4ffa103f8ab7ea72608d11f09ffada"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): sdk/lib/_internal/vm/lib/async_patch.dart:572-590 | sdk/lib/_internal/wasm/common/sync_star_patch.dart:113-131 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/async_patch.dart"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b140745ae7d7f7e7a0b74bb9ae44b29af87f4595f7dcef26a7aec3dadc9d9e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/boxed_double_patch.dart:144-162 | sdk/lib/_internal/wasm/standalone/boxed_double_patch.dart:96-114 \u2014 \u0060sdk/lib/_internal/wasm/js_common/boxed_double_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/boxed_double_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 76 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/boxed_double_patch.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"cadebd0679c763516d17054f9988fa5bb87ea339ec675998c43de76b3e93398e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/code_generator.dart:893-911 | pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1127-1145 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":893}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b31ac2344a1b2748ec0aa4d9fd53733f01f2673b5983b65bb92408b319c79b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:11456-11474 | pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:11479-11497 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11456}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab76a10ff3006ae375577de37f29677b34d7701192b42d3797440676f09cabf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/handler_type_hierarchy.dart:124-142 | pkg/analysis_server/lib/src/lsp/handlers/handler_type_hierarchy.dart:172-190 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_type_hierarchy.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb41241cf7b3713abb67362545397274a261eb9815263a75ff64d7cf430783d2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart:351-368 | pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart:614-632 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab61ec6db3c67f128bdd177e84ab013523ccc3c8d4484dbb55e32cc4107cff7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/create_class.dart:208-226 | pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart:158-176 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/correction/dart/create_class.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 38 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":"pkg/analysis_server/lib/src/services/correction/dart/create_class.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad30eb22b5c6d310de08618946c79dce83b7259a6738d321b52600cf4a724dd3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/add_constructor_name.dart:83-101 | pkg/analysis_server/lib/src/services/refactoring/add_import_prefix.dart:89-107 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/add_constructor_name.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"93233719b9cf41bd5b238f04a31d7a1c94aa21c723e7be851fef3e512401faa6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201319 lines \u00D7 2): pkg/analyzer/lib/src/error/element_usage_frontier_detector.dart:48-63 | pkg/analyzer/lib/src/error/element_usage_frontier_detector.dart:154-172 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_frontier_detector.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb6616bb2db466ccf624d6da26a73c369b6a7a0c80f1dbb8a7bda508e9f7289f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart:194-211 | pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart:214-232 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"7abc88e3bc5e3b64aa9cc2702e83cc8d06212531bf7b87dad9eb0e5ab74c55f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/analyzer/lib/src/fine/library_manifest.dart:1894-1912 | pkg/analyzer/lib/src/fine/library_manifest.dart:2159-2177 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1894}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd09410ada0f8e799b8713f0dbddfdbbcc0d05148346678ce900e231b215b9de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/analyzer/lib/src/workspace/blaze.dart:664-682 | pkg/analyzer/lib/src/workspace/blaze.dart:686-704 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/blaze.dart"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec8a6ebe7b67a2ef9ffe6b91c4b9588d323467d1874fbaa22835db7f83df4e55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2538-2556 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2010-2028 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2538}}}],"partialFingerprints":{"codehealthFindingId/v1":"42f6be7a117bc17e20d6c15952da80e31ade3cf36a549cddd7095e0ac11224e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/compiler/lib/src/ssa/builder.dart:4192-4210 | pkg/compiler/lib/src/ssa/builder.dart:4279-4297 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4192}}}],"partialFingerprints":{"codehealthFindingId/v1":"86ac0ecb627fc8387a48170d2d6383c7c77e7609d1394d8ba9f89f0e8900a172"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/dartdev/lib/src/commands/compile.dart:157-175 | pkg/dartdev/lib/src/commands/compile.dart:212-230 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cb20f8218a1d9a2fe5c7e0233e223035aadfe32495df6aea3df62f93164bc94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:1069-1087 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:1377-1395 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"d947024a3bd987e7900ace8d36dbd04057c91e50229f3cb2eba561bc15f91bc2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4422-4440 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5018-5036 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4422}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e17e5ea5a3e6479a76115f6aa4929fe202830b2b44f8c9229618ecbe408096f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5256-5274 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5866-5884 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5256}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f049907a18a78bdebb86c7b257bc21b9bc1d45bbc856ea34c769614744a9e20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5429-5447 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6039-6057 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5429}}}],"partialFingerprints":{"codehealthFindingId/v1":"260fd8f829546d268c7be42074d1b2a86ec0d33bd8b81c60d890803cae8e78ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7650-7668 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8517-8535 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7650}}}],"partialFingerprints":{"codehealthFindingId/v1":"5125bf7fcdee9869cb80ce139660bc00e87c0808e26861d4146630ee271a4c3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7891-7909 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8759-8777 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7891}}}],"partialFingerprints":{"codehealthFindingId/v1":"0028bc121da29510c221302c492f58030af2df258186ff0420d996a635acde8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/front_end/lib/src/builder/type_parameter_builder.dart:261-279 | pkg/front_end/lib/src/builder/type_parameter_builder.dart:585-603 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_parameter_builder.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"15375e21094c962d0f0b92bae6196e64a5715a844c66f17ee1b36fe531525ed4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:3547-3569 | pkg/front_end/lib/src/kernel/body_builder.dart:3695-3713 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3547}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8e5ca351d378d82c13d03fa21d3a4f2af82f02974181d83a40542c49ea64472"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:6166-6184 | pkg/front_end/lib/src/kernel/body_builder.dart:6193-6211 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":6166}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd5d0360fb636f6ce193377adaf5e1e7862d06cd44e971b64610456684f2ea8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:8903-8921 | pkg/front_end/lib/src/kernel/body_builder.dart:8932-8950 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":8903}}}],"partialFingerprints":{"codehealthFindingId/v1":"98874102c6f7b58387f3d312ca1ab3a5b168ab0643354a97bd6dd475ddcbee9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:10059-10077 | pkg/front_end/lib/src/kernel/body_builder.dart:10392-10409 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10059}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff1c88cf21e34061a1c2010791db1f209a9d31c12e22d8fe169132f545f1f2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201319 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:4180-4198 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:5197-5213 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4180}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dbd0d0f8bd08b6743deb2032e568fd8a513e0441b7670ef0bd4532a09ae3134"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/front_end/lib/src/kernel/inferred_collections.dart:92-110 | pkg/front_end/lib/src/kernel/inferred_collections.dart:139-157 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/inferred_collections.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"4abfdb26d7af9700908c35e7372db0bc3bcfbe027387c5727231551de6b61d11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:4094-4112 | pkg/front_end/lib/src/kernel/internal_ast.dart:4183-4201 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":4094}}}],"partialFingerprints":{"codehealthFindingId/v1":"18df3fe3b3ec669ef85cbbc2fedc98a3b1b66e5218af63df18716523b6a66c6f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18\u201319 lines \u00D7 2): pkg/front_end/lib/src/source/outline_builder.dart:2398-2416 | pkg/front_end/lib/src/source/outline_builder.dart:2617-2634 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2398}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cdd5e9e66b35d3a5e0260ae0f4603dfe334c6a19fd787afce1d00dfc93469eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:13934-13952 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:13982-14000 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13934}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d74b6303c0f80fe7135063d8593ec9969ccad93fd1513b7e138278e0fe4a96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/front_end/lib/src/type_inference/matching_expressions.dart:490-508 | pkg/front_end/lib/src/type_inference/matching_expressions.dart:678-696 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b06dcb339908875b77a1681115cc51c7df2d986936ec7d415d4b603c97562d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/linter/lib/src/rules/specify_nonobvious_local_variable_types.dart:126-144 | pkg/linter/lib/src/rules/specify_nonobvious_property_types.dart:101-119 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/specify_nonobvious_local_variable_types.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd58cc01722d6a7521816613776b3ffdb8ce6c18f95bffc7a894abc09c2443a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/observatory/lib/src/elements/debugger.dart:2756-2774 | pkg/observatory/lib/src/elements/debugger.dart:3050-3068 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":2756}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d3b060749dd92a5900fe6b9cd334dec49c8a7ce17fabd5893c65b5d081c772d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): pkg/observatory/lib/src/sample_profile/sample_profile.dart:1268-1286 | pkg/observatory/lib/src/sample_profile/sample_profile.dart:1321-1339 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/sample_profile/sample_profile.dart"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"60e0db7dd9743cbb7d286b54cbe6c2ce42dbf4df306aac9aef9c2704624b4427"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201318 lines \u00D7 8): pkg/analyzer/tool/ast/generate.dart:400-417 | pkg/analyzer/tool/ast/generate.dart:443-460 | pkg/analyzer/tool/ast/generate.dart:477-491 | pkg/analyzer/tool/ast/generate.dart:513-527 | pkg/analyzer/tool/ast/generate.dart:554-568 | pkg/analyzer/tool/ast/generate.dart:599-613 | pkg/analyzer/tool/ast/generate.dart:729-743 | pkg/analyzer/tool/ast/generate.dart:775-789 \u2014 all 8 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5d63c2c8c6a62904332d703d09f26625087ba9f4885607dcb20b96049c12209"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 7): sdk/lib/internal/internal.dart:426-443 | sdk/lib/internal/internal.dart:462-479 | sdk/lib/internal/internal.dart:500-517 | sdk/lib/internal/internal.dart:540-557 | sdk/lib/internal/internal.dart:582-599 | sdk/lib/internal/internal.dart:626-643 | sdk/lib/internal/internal.dart:672-689 \u2014 all 7 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebfaff052ce7e889b0f74105f318ca3852aef7af081f982887c35ade78f3e521"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 6): pkg/front_end/lib/src/kernel/expression_generator.dart:1754-1771 | pkg/front_end/lib/src/kernel/expression_generator.dart:1964-1981 | pkg/front_end/lib/src/kernel/expression_generator.dart:2185-2202 | pkg/front_end/lib/src/kernel/expression_generator.dart:3732-3749 | pkg/front_end/lib/src/kernel/expression_generator.dart:4189-4207 | pkg/front_end/lib/src/kernel/expression_generator.dart:5422-5439 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":1754}}}],"partialFingerprints":{"codehealthFindingId/v1":"a674d345128b798c09c56fa4414c6e2c88ee63c3fe4411661eb27e6d209787e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 5): pkg/observatory/lib/src/elements/icdata_view.dart:114-131 | pkg/observatory/lib/src/elements/library_view.dart:136-153 | pkg/observatory/lib/src/elements/singletargetcache_view.dart:122-139 | pkg/observatory/lib/src/elements/subtypetestcache_view.dart:119-136 | pkg/observatory/lib/src/elements/unlinkedcall_view.dart:118-135 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/icdata_view.dart\u0060 and \u0060pkg/observatory/lib/src/elements/singletargetcache_view.dart\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. 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":"pkg/observatory/lib/src/elements/icdata_view.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fbc062ca2d4b99c664ed7a98cdb84fd4afd7d8715a2c08678543165d6e89002"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 4): pkg/kernel/lib/src/tool/check_equivalence.dart:344-361 | pkg/kernel/lib/src/tool/check_equivalence.dart:436-453 | pkg/kernel/lib/src/tool/check_equivalence.dart:460-477 | pkg/kernel/lib/src/tool/check_equivalence.dart:484-501 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/tool/check_equivalence.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"22970dc8f34f69674495ca53add346428d1854cbc85e5765b090c9a1ee5c83fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 3): pkg/front_end/lib/src/kernel/resolver.dart:388-405 | pkg/front_end/lib/src/kernel/resolver.dart:676-692 | pkg/front_end/lib/src/kernel/resolver.dart:832-848 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"2396ce7428e882676607ea63193a661eeb0a722539a972221992b9a788f7c285"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 3): pkg/wasm_builder/lib/src/serialize/sections.dart:1183-1200 | pkg/wasm_builder/lib/src/serialize/sections.dart:1235-1252 | pkg/wasm_builder/lib/src/serialize/sections.dart:1291-1308 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":1183}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ebad772a21071018d53ae7b266536f9a64e21f7ef472d4b71055a8fd012d547"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:35-52 | pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:59-76 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"3366821688d479e3b7e2f6b72e1985a24b4f826272bf6dbbfa5f7898736ba1d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/dart2wasm/lib/functions.dart:615-631 | pkg/dart2wasm/lib/functions.dart:672-689 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/functions.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"260613c545983acfd41b3406d113bce2ff24ecacc11d44f5223eaf0215cc318f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/parser_testcases/patterns/const_patterns.dart:18-35 | pkg/front_end/testcases/patterns/const_patterns.dart:18-35 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/parser_testcases/patterns/const_patterns.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e87f7c7eb5ec386eda520fc97d5c945b377431dbdc487f3539b03f8181a8688b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_string.dart:140-157 | sdk/lib/_internal/js_runtime/lib/js_string.dart:125-142 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_string.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_string.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 90 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_string.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc1f1d6cf841dd58fd10aa7771a962a8f27765569b4a712ca5c89c01cf070ca3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:1284-1301 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1162-1179 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 193 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1284}}}],"partialFingerprints":{"codehealthFindingId/v1":"867b2074634cb4d9cb7a122bace809548f2e76dd1d81fd6182acb31672692f20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): sdk/lib/_internal/wasm/common/convert_patch.dart:2797-2814 | sdk/lib/convert/utf.dart:648-665 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2797}}}],"partialFingerprints":{"codehealthFindingId/v1":"b45adb8389641472dc29d1cca1745b7e218c41a540735b7be7c1ce04758ccb08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/code_generator.dart:914-931 | pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1148-1165 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":914}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad38eb70e80bb66d4cb2c3d34130c435b700aa5728d4174cd4fb5268e885ed88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/kernel/lib/binary/ast_to_binary.dart:2916-2932 | pkg/kernel/lib/binary/ast_to_binary.dart:2964-2981 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":2916}}}],"partialFingerprints":{"codehealthFindingId/v1":"337d4566a5e75e68fb4fa00f15ccfcd9b3d9cbd41a848c2becdc31a9329bad92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/add_missing_parameter_named.dart:108-125 | pkg/analysis_server/lib/src/services/correction/dart/add_missing_parameter_named.dart:170-186 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_parameter_named.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e394c358291755d0a5289b71a9885d415a4a2f89b378a81b72bb0753eaad47f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart:56-72 | pkg/analysis_server/lib/src/services/refactoring/move_selected_formal_parameters_left.dart:77-94 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/move_selected_formal_parameters_left.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 66 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":"pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4c80af63d320a9b897efecb1be564dd73c3f37fb878577bd9c8c79ad8ce868"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/analysis_server/lib/src/services/snippets/dart/if_else_statement.dart:33-50 | pkg/analysis_server/lib/src/services/snippets/dart/switch_statement.dart:36-53 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/snippets/dart/if_else_statement.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"5422c129eb1e87dcf17beb3feccc8a2c6ef292607068f0fb3879ad1210d755b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:17438-17455 | pkg/analyzer/lib/src/dart/ast/ast.dart:29473-29490 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17438}}}],"partialFingerprints":{"codehealthFindingId/v1":"578b45ca4c7dd8c4d63d5d04e342f632157066040911690cc5599b59a836c32c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:482-499 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:631-647 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"128ae9eba194a086ff38123e62e3b37d3705a3603c2e42d16e0028e43c66b786"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart:454-471 | pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart:653-670 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4021698fb87e42b9ebe970346e7f1734a01d694ebab5e9d41934a9fa877daa4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart:534-551 | pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart:645-662 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"79454c1cd4e590469dc76965f467055aa06d453b1bdb4c3ff3a8364f8ea441a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/analyzer/lib/src/summary2/element_builder.dart:819-836 | pkg/analyzer/lib/src/summary2/element_builder.dart:876-893 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e08d4203270c2b1ef83bd99c76ddbf4993dbf23cac66cdb943cd27354f8909e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/analyzer/lib/src/summary2/library_builder.dart:496-513 | pkg/analyzer/lib/src/summary2/library_builder.dart:576-593 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/library_builder.dart"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a75b3de19f0df54761b8bab678684f604a6c43d6343f1b855bc47914c63cc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/compiler/lib/src/dump_info.dart:1831-1848 | pkg/compiler/lib/src/dump_info.dart:1916-1933 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1831}}}],"partialFingerprints":{"codehealthFindingId/v1":"994ca4a923ee808c9412aab01cc2e6d7796e96c8ea3c9158227c02d5838b3c15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/compiler/lib/src/universe/codegen_world_builder.dart:543-560 | pkg/compiler/lib/src/universe/resolution_world_builder.dart:856-873 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/universe/codegen_world_builder.dart\u0060 and \u0060pkg/compiler/lib/src/universe/resolution_world_builder.dart\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. 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":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"526d9adb2d33d9281206e867ce9fd7eb5e644de11d7299c3b16623f86ea8c94b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart:28-44 | pkg/dds/lib/src/devtools/memory_profile.dart:30-47 \u2014 before extracting anything, compare \u0060pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart\u0060 and \u0060pkg/dds/lib/src/devtools/memory_profile.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 78 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"271664e8eed1e02e514314ce6fab3b078c9ecd49a8725e21ebdfb1965d31b36e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/dartdev/lib/src/commands/development_service.dart:40-57 | pkg/dartdev/lib/src/commands/tooling_daemon.dart:34-51 \u2014 before extracting anything, compare \u0060pkg/dartdev/lib/src/commands/development_service.dart\u0060 and \u0060pkg/dartdev/lib/src/commands/tooling_daemon.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 57 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":"pkg/dartdev/lib/src/commands/development_service.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"77017ac586543ea3f36060fb868d4c64d5f1053382c7bd1b136c6956ef9e8c01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/dartdev/lib/src/processes.dart:37-54 | pkg/dartdev/lib/src/processes.dart:76-93 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/processes.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e04174d889232c8b74b5a5b065a310887b06473f29ce02ff684ab787862ac6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3607-3624 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4208-4225 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3607}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1a15e559a73b70d4b3296d23741150dadf4bfffe9550af967c459ae01fe8a0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4036-4053 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4632-4649 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4036}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbdb6ea83e20f607899b11b10b61d72520c983315b010410e3b16f439aefd0e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4480-4497 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5082-5099 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4480}}}],"partialFingerprints":{"codehealthFindingId/v1":"1976918718fdae494b3d7827510e6e54ea74a92cc82b6b394bbab5f729ebef55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8019-8036 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8885-8902 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8019}}}],"partialFingerprints":{"codehealthFindingId/v1":"744e38cb04a640b77bd121a98850667eb1e75c355d8b5766aeb207f57db5d710"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/front_end/lib/src/base/name_space.dart:80-97 | pkg/front_end/lib/src/base/name_space.dart:124-140 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/name_space.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"e61f5b57f736eed128d37f5b16a223d0048534b15b0a6267e2753bf118b90a2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_target.dart:47-64 | pkg/front_end/lib/src/kernel/kernel_target.dart:202-219 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_target.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd7ac8c302f5e7d9640a656190ac3fd2bb11e3b095166ec169d5fbabba7ee41a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/fragment/constructor/declaration.dart:1015-1032 | pkg/front_end/lib/src/fragment/constructor/declaration.dart:1420-1437 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":1015}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8cabdfc37c1506e0cbf289831ae4232ba12ebbf9d4e5986b5fe2839c467b6b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/fragment/constructor/declaration.dart:1071-1088 | pkg/front_end/lib/src/fragment/constructor/declaration.dart:1478-1495 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"1949c3567606313b37930624f73cc185edbdc367bacd3c7f78db904e88cbff01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/fragment/constructor/encoding.dart:239-256 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:985-1002 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de1dd6ec6ac066f5ebe0b3fdba3964358e314b93990e997b4c7989a52331069"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/encoding.dart:806-823 | pkg/front_end/lib/src/fragment/field/encoding.dart:1316-1333 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"1682604cb6a3bde731cc26d917e05175dc9b0a34f9fff47fe24fdd8da3f3cf77"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:7450-7467 | pkg/front_end/lib/src/kernel/body_builder.dart:7555-7571 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":7450}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a75927ea0e6261e5735557a6385013603c950573af3e61b17668e99f0a1e113"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:10372-10388 | pkg/front_end/lib/src/kernel/body_builder.dart:10450-10467 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10372}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d84c66b0fb32ca823f7fe09efcf9e829c547819f527d1ba263ebf4cc523e4cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_int_folder.dart:154-171 | pkg/front_end/lib/src/kernel/constant_int_folder.dart:294-311 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_int_folder.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e5ff0ee0960af88480ef9b858a3daefeafdfe29b148e806f8902f364d3e8944"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/kernel/expression_generator.dart:830-847 | pkg/front_end/lib/src/kernel/expression_generator.dart:1281-1298 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde1500261552f4d184a8a2e38e129b2a24cd4d5ceb9206d97f91f1430dcf254"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/source/diet_listener.dart:408-425 | pkg/front_end/lib/src/source/diet_listener.dart:873-890 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"4344db6211818b35f29b9f68b871d0a310118515913bdd7cb641d49c1a74e716"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/front_end/lib/src/source/source_class_builder.dart:1659-1675 | pkg/front_end/lib/src/source/source_class_builder.dart:1747-1764 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1659}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d93d0a04f8a8db60541c60d06eb2b36c9fc401055bb56aa24d939057dd29b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/source/source_type_alias_builder.dart:472-489 | pkg/front_end/lib/src/source/source_type_alias_builder.dart:535-552 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8438613d98a655ab487451244cef680cd42ef6ef71df7ae1d9fccba2dff7b35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1278-1295 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1966-1983 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1278}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8dda30eec83cf120b1978955760cfca9dd6bf8a57f835ebee8e932cdaa9f2f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:3874-3891 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6249-6266 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":3874}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d3c1ace0c0a1d62e3e6d3d7ce2baca517cddce8e56bf9461e1ea183f4733a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201318 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6386-6403 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6493-6508 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6386}}}],"partialFingerprints":{"codehealthFindingId/v1":"68bf26dd87dbe85b742a1a82581ee3d7b96eb80600bca3db0ef96e22bc8653ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/type_inference/object_access_target.dart:846-863 | pkg/front_end/lib/src/type_inference/object_access_target.dart:902-919 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"632fafb036e907e131f4a93c23e121fbf2db2867ec450be43dc22e34fe76c4d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/front_end/lib/src/type_inference/type_constraint_gatherer.dart:250-267 | pkg/front_end/lib/src/type_inference/type_constraint_gatherer.dart:271-288 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_constraint_gatherer.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"10c427ce4e34e1b6eaeb8a21d1c9fd2e29cbd10f264534cc83c49478ccbe8161"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201318 lines \u00D7 2): pkg/kernel/lib/src/bounds_checks.dart:714-731 | pkg/kernel/lib/src/replacement_visitor.dart:352-365 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dd1ec5aaf4f8197613650bf37b4a5a2c6ee5282ab5eb742cfc44b0cd1c0f816"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17\u201318 lines \u00D7 2): pkg/kernel/lib/src/tool/check_equivalence.dart:296-313 | pkg/kernel/lib/src/tool/check_equivalence.dart:365-381 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/tool/check_equivalence.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc36676e46ab9cf3c151799601d0d27c6445d2d65441fd2d109189b48519aec3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/kernel/lib/src/tool/check_equivalence.dart:320-337 | pkg/kernel/lib/src/tool/check_equivalence.dart:388-405 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/tool/check_equivalence.dart"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"26dd90db93da4e39c95935b6f155d0bc018d4f99a42ec660b73b9ccbb2568eb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:1502-1519 | pkg/observatory/lib/src/elements/process_snapshot.dart:588-605 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1502}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cb96c0b133f99b8147275b3211d381039e4628e1df960bf925aee73f551e48f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate/shared_summary.dart:69-86 | pkg/observatory/lib/src/elements/sample_buffer_control.dart:189-206 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate/shared_summary.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8fb0eb9a40bab2e89cf8b4850c345f2e223a6286ec6835f4c8b6986200ae69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/kernel/lib/testing/type_parser_environment.dart:744-761 | pkg/kernel/lib/testing/type_parser_environment.dart:803-820 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/testing/type_parser_environment.dart"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"a852427a3645056e837efe82236f148651b04b2cd832533ef386b46c89788679"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 8): sdk/lib/internal/internal.dart:393-409 | sdk/lib/internal/internal.dart:427-443 | sdk/lib/internal/internal.dart:463-479 | sdk/lib/internal/internal.dart:501-517 | sdk/lib/internal/internal.dart:541-557 | sdk/lib/internal/internal.dart:583-599 | sdk/lib/internal/internal.dart:627-643 | sdk/lib/internal/internal.dart:673-689 \u2014 all 8 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee3f32b3b102e60156b189326b4f940148825d74cc8e6b9dfc97230c88d9bed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:394-410 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:731-747 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1123-1139 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1466-1482 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1809-1825 | sdk/lib/_internal/wasm/common/typed_data.dart:2271-2287 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"324185b2860a752a026d4b2e284f94b60925e5c341c294a5a9735e61af21da94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 4): pkg/analyzer/lib/src/summary2/bundle_reader.dart:510-526 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:592-608 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:665-681 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:1119-1135 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"48b615873c874544493ff3a11b3f1a3945576124ca8fc256ca0fe6182c87dce9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201317 lines \u00D7 3): pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart:126-139 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_get_fixes_and_get_assists_requests.dart:81-97 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_hover_requests.dart:70-86 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_get_fixes_and_get_assists_requests.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_hover_requests.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 53 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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"8457a28f8b82f57ec13c8edce58292b416910fc2fb1be5018b34e537b4a9a505"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:46-62 | pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:106-122 | pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart:166-182 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference_new/infer_assign_to_index_super_upwards.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"1152b29bf7fe970f8f40157be573845a61be8a2e72cd2b515d424e585b4fbdf1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart:60-76 | pkg/analysis_server/lib/src/services/refactoring/convert_selected_formal_parameters_to_named.dart:78-94 | pkg/analysis_server/lib/src/services/refactoring/move_selected_formal_parameters_left.dart:82-98 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/convert_selected_formal_parameters_to_named.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 48 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":"pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"18e48a524cb29c88c77ba0bb59d37fe9bd1aca319562444eae328628478c1985"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): pkg/analyzer/lib/src/dart/ast/ast.dart:20405-20421 | pkg/analyzer/lib/src/dart/ast/ast.dart:49574-49590 | pkg/analyzer/lib/src/dart/ast/ast.dart:53053-53069 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20405}}}],"partialFingerprints":{"codehealthFindingId/v1":"4429f0701c284481f4715d787d20f2648cd6cc60fc40694a692cc5d3ea318e5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 3): pkg/analyzer/lib/src/dart/sdk/sdk.dart:90-106 | pkg/analyzer/lib/src/dart/sdk/sdk.dart:248-262 | pkg/analyzer/lib/src/dart/sdk/sdk.dart:515-529 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"869f45d909a3e6294893928de9745f71f453335a4a7dd1dfc2508cc03dd004c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): pkg/front_end/lib/src/fragment/getter/encoding.dart:395-411 | pkg/front_end/lib/src/fragment/method/encoding.dart:326-342 | pkg/front_end/lib/src/fragment/setter/encoding.dart:397-413 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"a26028e7eedd32a786ad226d106913bd49528bc200e5ddd9738220f92ca3f96e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): pkg/front_end/lib/src/fragment/method/encoding.dart:229-245 | pkg/front_end/lib/src/fragment/method/encoding.dart:592-608 | pkg/front_end/lib/src/fragment/setter/encoding.dart:284-300 \u2014 \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 306 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cc976fec20a0702f1da1a5a0bb8849c01a20d42b6ef1edd9ca79d21d6111b3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): pkg/front_end/lib/src/kernel/expression_generator.dart:522-538 | pkg/front_end/lib/src/kernel/expression_generator.dart:1480-1496 | pkg/front_end/lib/src/kernel/expression_generator.dart:2450-2466 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f58e2c6c4c404061f96033142a128af57fc750c6bd701a5bf14ee0cf429ee12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 3): pkg/front_end/lib/src/kernel/forwarding_node.dart:358-374 | pkg/front_end/lib/src/kernel/forwarding_node.dart:391-407 | pkg/front_end/lib/src/kernel/forwarding_node.dart:449-465 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8567f7a728d278f0b0ab2fbcc88a79ced7817d9ce468b33737825c492bc57eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/language_server_benchmark.dart:184-199 | pkg/front_end/tool/fuzz/analyzer_helper.dart:166-182 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/language_server_benchmark.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"f113da8bcb26fa33c3dbf1f161794cde5aa16121040bb31608121c06876df73f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:190-205 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:310-326 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"f801f4f0de744cf72e946da2a2ea65df24f927b79fca5dc1ab530a953f506370"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): pkg/analyzer_utilities/tool/messages/use_literate_api_in_analyzer.dart:154-170 | pkg/analyzer_utilities/tool/messages/use_new_with_arguments.dart:152-166 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/tool/messages/use_literate_api_in_analyzer.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cf45255f0f67b67a363e79518373f125a0825db1c4958ec3fc32f6817402eb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/kernel/lib/type_algebra.dart:894-910 | pkg/kernel/lib/type_algebra.dart:1452-1468 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"a96998c977b3f963ecfea4a7cb04346f9375b095a8028bfa14b87239c1ee85e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): sdk/lib/_http/http_impl.dart:304-320 | sdk/lib/internal/bytes_builder.dart:88-104 \u2014 before extracting anything, compare \u0060sdk/lib/_http/http_impl.dart\u0060 and \u0060sdk/lib/internal/bytes_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 39 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"649e4e73063fd5584ba41148fa3a350583ff62bf235330d4903e6873d2190475"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:608-624 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:598-614 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/vm_shared/lib/collection_patch.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 44 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"beccfa7ba88f8245a9f7a9593a0be8b73527d26279b7bd4027f7cae2e61a336e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): sdk/lib/_internal/vm/lib/integers.dart:290-306 | sdk/lib/_internal/wasm/common/boxed_int.dart:265-281 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/integers.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/boxed_int.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"5607e92c521f3218b5c637bd6e3f98f81e52bc47805108dc1d5132495d89579c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:596-612 | sdk/lib/_internal/wasm/common/compact_hash.dart:561-577 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"4682f6b62f06a1039f6db3a884f93b295ea3c7564d336606d6e770325188f0cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): sdk/lib/_internal/wasm/js/string_patch.dart:104-120 | sdk/lib/_internal/wasm/standalone/string_patch.dart:66-82 \u2014 \u0060sdk/lib/_internal/wasm/js/string_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/string_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 129 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js/string_patch.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e59b40d2b1cff1960fc44c287237a90afc48b392aba649c7d1de7c88bf693b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:652-668 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2143-2159 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"5df46ea6c6fc035b00c712e21670302cf4492435db5e1c40ab9e75492045a72a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1027-1043 | pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1185-1201 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1027}}}],"partialFingerprints":{"codehealthFindingId/v1":"8961deb2bef57457f54ea375318080d0fc613c75a4a823e2e35b6ae8d62f19c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:5938-5954 | pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:5969-5985 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5938}}}],"partialFingerprints":{"codehealthFindingId/v1":"3569bbddd50658576818122f0de4797142f40035c7b1cb4bbdb10658ad457d20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:8047-8063 | pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:8070-8086 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8047}}}],"partialFingerprints":{"codehealthFindingId/v1":"79abdf6e3a399261844a5489fd6f7e1cbd0a9521dc7d9b3e80f1542fd49d97a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/sdk/allowed_experiments.dart:84-100 | pkg/_fe_analyzer_shared/lib/src/sdk/allowed_experiments.dart:104-119 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/sdk/allowed_experiments.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d2cbca843ad8c5c2b283729abfd4a1a1326fe051cf3c34b5e2aa3c092f42151"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/handler_call_hierarchy.dart:217-233 | pkg/analysis_server/lib/src/lsp/handlers/handler_type_hierarchy.dart:54-70 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_call_hierarchy.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7471ace1a106f02b933eb875b0c85ab06df544a0a8986d0c29d85b7007f2fce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart:31-47 | pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart:30-44 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart\u0060 and \u0060pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 45 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":"pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a16a43e8db64b51ad4736b73ec6b5f1dfbe33ec698d68da88e511f19e334c199"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/convert_for_each_to_for_loop.dart:63-78 | pkg/analysis_server/lib/src/services/correction/dart/convert_for_each_to_for_loop.dart:93-109 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_for_each_to_for_loop.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"324aed5f12bd1b5576a61175fbf9436364bc5d123903b7030067b3615ed73d09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart:150-166 | pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart:244-259 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"41e29dbd2bed6d78088b6623110f262fbbd877080be0a78740ba2e9c8f4d0b9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201317 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:241-257 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:280-292 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"96a171978be756b86bd515ddf2080c3285d5432aa2271980705289e067f4a859"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:18939-18955 | pkg/analyzer/lib/src/dart/ast/ast.dart:18961-18977 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18939}}}],"partialFingerprints":{"codehealthFindingId/v1":"b41290709650c83d981edb6b5fabbc8d8cc2f20ae835addaed01dd897a30f976"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:22661-22677 | pkg/analyzer/lib/src/dart/ast/ast.dart:23156-23172 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":22661}}}],"partialFingerprints":{"codehealthFindingId/v1":"20af9c95f6d442d0e1ada893255d1057e56628e4bd242a4f05cef4311b788eed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:22746-22762 | pkg/analyzer/lib/src/dart/ast/ast.dart:23241-23257 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":22746}}}],"partialFingerprints":{"codehealthFindingId/v1":"e60ab2157225d9a358f102c7e4f00461c5532d5b4816058a943608cd25182626"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:22764-22780 | pkg/analyzer/lib/src/dart/ast/ast.dart:23259-23275 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":22764}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f10a3c0949818294f11a5e8711a6739d59e5a56bca1a4ff5b3bfcf9734d8a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:37227-37243 | pkg/analyzer/lib/src/dart/ast/ast.dart:37254-37270 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":37227}}}],"partialFingerprints":{"codehealthFindingId/v1":"24ba8700810e2ff55f5f7245c1a9b2b845561a36843602039ddcb2ca0794f5ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:41281-41297 | pkg/analyzer/lib/src/dart/ast/ast.dart:50960-50976 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":41281}}}],"partialFingerprints":{"codehealthFindingId/v1":"8645ed951993d12b16c04ad401f5eee28cff984923fcd6a074d24f07f839100c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:41299-41315 | pkg/analyzer/lib/src/dart/ast/ast.dart:50978-50994 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":41299}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8391a8259e0101c2f10fa3c89d4fa03478f1de95044a87d9c108d8900bdb2ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:41375-41391 | pkg/analyzer/lib/src/dart/ast/ast.dart:51054-51070 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":41375}}}],"partialFingerprints":{"codehealthFindingId/v1":"408883fcfe6ae92509b00483c87e87d306d19eabd17d7ff27acfbb263c248ca5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/replacement_visitor.dart:361-377 | pkg/analyzer/lib/src/dart/element/replacement_visitor.dart:434-450 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"b477b4a2aa02a48bc975806d57cc4ec423587f50d3cd9da62621e51ac06f46ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/subtype.dart:433-449 | pkg/analyzer/lib/src/dart/element/subtype.dart:461-477 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/subtype.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"7abbcec2a91600e2a4a168a14b3578adc005caec9246b453dbb0a5e51b3bf48d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart:258-275 | pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart:285-301 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"808a55d35492e87b4c60cd8537c872ee0f9d825431430716110f20e083a7054a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart:1025-1041 | pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart:1046-1062 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":1025}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d604ed2a55da7ff1cd231b437ce518ec70db58a47163a4a46d67a04fbbdad24"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/fasta/ast_builder.dart:5555-5571 | pkg/analyzer/lib/src/fasta/ast_builder.dart:5635-5651 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5555}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c96b349a8cefb36b775f26292ef0030ff6c474cfbdf038c63c263d94dff032"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/generated/error_verifier.dart:2131-2147 | pkg/analyzer/lib/src/generated/error_verifier.dart:2166-2182 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":2131}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b315cd5ae5945bf7154b85bd83d691266b9542e9d8a7e3e9e43ddf1845df8fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/summary2/element_builder.dart:1746-1762 | pkg/analyzer/lib/src/summary2/element_builder.dart:2208-2224 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1746}}}],"partialFingerprints":{"codehealthFindingId/v1":"154631e757fea29bef4f2b948ae059ba63a639c54ac19c9175a2ab641d4d1276"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/summary2/informative_data.dart:279-295 | pkg/analyzer/lib/src/summary2/informative_data.dart:473-489 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5e688d5278805ab10dd4811b27d63f431e396698d8e89e892f68b93a403c519"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): pkg/analyzer/lib/src/summary2/informative_data.dart:406-422 | pkg/analyzer/lib/src/summary2/informative_data.dart:450-464 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b3bdb070821b2e5aff592aea88290a2ec8144b2ce38be6874e7ca79d08fba6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/analyzer/lib/src/summary2/variance_builder.dart:154-170 | pkg/analyzer/lib/src/summary2/variance_builder.dart:189-205 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/variance_builder.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c8163cebf0472f18684426191cc89830dc52b732059892aee83cae6868f5538"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/compiler/lib/src/dump_info.dart:1849-1865 | pkg/compiler/lib/src/dump_info.dart:1935-1951 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1849}}}],"partialFingerprints":{"codehealthFindingId/v1":"2368456b481d191e952077cfb5e579a435d44fa7045a4aefc5c04e86258aa786"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/compiler/lib/src/js/size_estimator.dart:702-718 | pkg/js_ast/lib/src/printer.dart:1075-1091 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/size_estimator.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 154 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"587f5735afa5101f78c6aebe3732a9f74b791bcdb7860c6fa7397df5eae8f149"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/compiler/lib/src/serialization/binary_sink.dart:96-112 | pkg/dart2js_info/lib/src/binary/sink.dart:279-295 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/binary_sink.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"269f7f205ec49db8dd23f5ef7d756741d28d4be9d7e6091039e2b890306f55dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/compiler/lib/src/ssa/builder.dart:6434-6450 | pkg/compiler/lib/src/ssa/builder.dart:6457-6473 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6434}}}],"partialFingerprints":{"codehealthFindingId/v1":"9200305b5f1bb62c5b23ac5f5b348594033800eda36935f241b4adb55b81dbcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): pkg/compiler/lib/src/ssa/builder.dart:6502-6518 | pkg/compiler/lib/src/ssa/builder.dart:6535-6550 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6502}}}],"partialFingerprints":{"codehealthFindingId/v1":"f247d4a91752b36440ec71b387227871033343534a347c06774d727c55a922f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart:1222-1238 | pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart:1390-1406 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":1222}}}],"partialFingerprints":{"codehealthFindingId/v1":"4647e3699f91d9bc20fffb78509162d860f483e81d0f30531c49e4644d5eab7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:365-381 | pkg/js_ast/lib/src/strings.dart:122-138 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"06df13a301674be265c1260e7909e656d8f90cac4d9df5cfa8c7ba7d5af68180"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:233-249 | pkg/js_ast/lib/src/printer.dart:306-322 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"13b33fd814cbbd80d16e78987a4829a3c26b522c49b78d30096110ac589df302"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7530-7546 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8397-8413 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7530}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9880b695447a5c6a8803f28e2d6bb71a651fee346c8d764edfeb4ef6802a8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_extension_builder.dart:62-78 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:176-192 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/dill/dill_extension_builder.dart\u0060 and \u0060pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/front_end/lib/src/dill/dill_extension_builder.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"af622f6bc327e6bb5e4d7ed6cdf0ec4d48b02647adef533aa3347c10420ca115"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16\u201317 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:321-337 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:344-359 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c8f70379415bc179d9d0c16eb01d92d74eef4c6175ca2beefc27e16064b4412"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/declaration.dart:643-659 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:407-423 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/primary_constructor_field.dart\u0060 as WHOLE FILES: this scan already matched 10 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":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"6435b53f489e9aac57a35fd8de650de041b81e509f6775db3b1ff66b7e00a58f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/fragment/getter/declaration.dart:167-183 | pkg/front_end/lib/src/fragment/setter/declaration.dart:170-186 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/declaration.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/declaration.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 39 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/declaration.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cd5d883affde4adf33fa84bb7ef2ec8ed29ac8a15b890f50be622409468472c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/fragment/getter/encoding.dart:354-370 | pkg/front_end/lib/src/fragment/getter/encoding.dart:655-671 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"76e8790bada07d82ca1ec9a9376900d3a6cd0b82da19e8cd7ec8b67238da2502"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/fragment/method/encoding.dart:285-301 | pkg/front_end/lib/src/fragment/method/encoding.dart:656-672 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f395aee1c490f738be60c35cf8156acb9e59a0092c3eacc6c68f6da92128d3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/kernel/macro/metadata.dart:234-250 | pkg/front_end/lib/src/kernel/macro/metadata.dart:315-331 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/macro/metadata.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdf33e0751e822ab357ada3a2c367fdab5c4c4780ce49aefb9b7fbc4820487c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/kernel/type_builder_computer.dart:158-174 | pkg/front_end/lib/src/kernel/type_builder_computer.dart:184-200 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/type_builder_computer.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"58af16221d5b67ac495c62534260e09f67aee322568f5448faf23c9c8f9dabe7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/source/diet_listener.dart:853-869 | pkg/front_end/lib/src/source/diet_listener.dart:893-909 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":853}}}],"partialFingerprints":{"codehealthFindingId/v1":"703a526698f2636971f4281674faf6100d5b72f319a39f40b4da570922a91aa2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/source/fragment_factory_impl.dart:1339-1355 | pkg/front_end/lib/src/source/fragment_factory_impl.dart:1359-1375 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"0978ad93a49d96eb29d1bff6886b9d68d40ce60192c5a1f8497c7be007588b8d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/source/fragment_factory_impl.dart:1919-1935 | pkg/front_end/lib/src/source/fragment_factory_impl.dart:2080-2096 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":1919}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cf86f3da6475970dc6fe49bde6bc0f5af92aede7a5983dd05936d03a445d33a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/source/outline_builder.dart:1480-1496 | pkg/front_end/lib/src/source/outline_builder.dart:2849-2865 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1480}}}],"partialFingerprints":{"codehealthFindingId/v1":"d990f0ba2b31128ffda36e5681d04d95b877f9e186a6d64823c9e0b1b2fdc786"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/source/source_loader.dart:2157-2173 | pkg/front_end/lib/src/source/source_loader.dart:2177-2193 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2157}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b9ce0b46e200061692518f9537496f5539c6d11ccbece5cb849a345634de10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201317 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7049-7062 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8649-8665 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7049}}}],"partialFingerprints":{"codehealthFindingId/v1":"4817e0da406117cc807032999ebdb379477d9899a20e7d4e493b04ae1fc86ced"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201317 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:3165-3179 | pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:3320-3336 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3165}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c6c35f9c9d0cfde1f758823a397530b20f9f1b4ba96a5adad8e42743e68f6c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:3518-3534 | pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:3579-3595 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3518}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd480e87064b1932fedfb13a98566fc501d4d090edf6a2f5a03b6ae47749593f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/kernel/lib/src/ast/patterns.dart:1902-1918 | pkg/kernel/lib/src/ast/statements.dart:991-1007 \u2014 before extracting anything, compare \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 and \u0060pkg/kernel/lib/src/ast/statements.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1902}}}],"partialFingerprints":{"codehealthFindingId/v1":"e983c4ff12f05cc8b41ca3bd8eb3a33abdb9aabfa9201729ba8672c0dbf907c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:242-258 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:317-333 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"9710815d8305feaab19cbc16274e180e48c76f8defab792bf150da574e9b362d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/observatory/lib/src/elements/debugger.dart:2691-2707 | pkg/observatory/lib/src/elements/debugger.dart:2998-3014 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":2691}}}],"partialFingerprints":{"codehealthFindingId/v1":"60ea45ecf9bda1af229a5f734c13d814295fa4e4e7d24b2c64f6dc45de0d9ec1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/observatory/lib/src/elements/instance_ref.dart:197-213 | pkg/observatory/lib/src/elements/instance_ref.dart:255-271 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_ref.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"059e7a7a32b8dec6d7cd653a4349a8ff99b0b7c4378077f2241542dc7b5b48fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/observatory/lib/src/elements/sentinel_value.dart:48-64 | pkg/observatory/lib/src/elements/sentinel_view.dart:88-104 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/sentinel_value.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9569028db77f90738c2a373f23c76751a75bec9fa70c2e81c45113e84094a15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/observatory/lib/src/sample_profile/sample_profile.dart:654-670 | pkg/observatory/lib/src/sample_profile/sample_profile.dart:766-782 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/sample_profile/sample_profile.dart"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c079f51417ce07ad9f35e204a0ebb17f2900517a3ed6ded483529aa9a511f98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 14): sdk/lib/internal/internal.dart:237-252 | sdk/lib/internal/internal.dart:259-274 | sdk/lib/internal/internal.dart:283-298 | sdk/lib/internal/internal.dart:309-324 | sdk/lib/internal/internal.dart:337-352 | sdk/lib/internal/internal.dart:367-382 | sdk/lib/internal/internal.dart:399-414 | sdk/lib/internal/internal.dart:433-448 | sdk/lib/internal/internal.dart:469-484 | sdk/lib/internal/internal.dart:507-522 | sdk/lib/internal/internal.dart:547-562 | sdk/lib/internal/internal.dart:589-604 | sdk/lib/internal/internal.dart:633-648 | sdk/lib/internal/internal.dart:679-694 \u2014 all 14 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"28963ef515d43ac7728184063578847fe5de182dfc9810a270db1aca27990350"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 6): pkg/front_end/lib/src/fragment/getter/encoding.dart:435-450 | pkg/front_end/lib/src/fragment/getter/encoding.dart:765-780 | pkg/front_end/lib/src/fragment/method/encoding.dart:392-407 | pkg/front_end/lib/src/fragment/method/encoding.dart:794-809 | pkg/front_end/lib/src/fragment/setter/encoding.dart:452-467 | pkg/front_end/lib/src/fragment/setter/encoding.dart:807-822 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4618c98c332e1300e6a41ac8ddc7e3d8f8f48ede0ba0bbab0464677cf368d9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 5): pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart:31-46 | pkg/analysis_server/lib/src/services/snippets/dart/for_in_statement.dart:34-49 | pkg/analysis_server/lib/src/services/snippets/dart/function_declaration.dart:35-50 | pkg/analysis_server/lib/src/services/snippets/dart/if_statement.dart:31-46 | pkg/analysis_server/lib/src/services/snippets/dart/test_group_definition.dart:33-48 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/snippets/dart/if_statement.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 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":"pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0a45fdf3baf4f488a0a917602104aef6771e2eee5527c85cde4b4eeb632b632"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 5): pkg/analyzer/lib/src/lint/pub.dart:334-349 | pkg/analyzer/lib/src/summary2/informative_data.dart:650-665 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:1083-1100 | pkg/front_end/lib/src/kernel/resolver.dart:1538-1553 | pkg/front_end/lib/src/source/source_compilation_unit.dart:215-230 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 5 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 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/lint/pub.dart"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"349a986ecc986dc28a85a3e7f9a10771d8ef71562d27bfd3616da36e1da37793"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 5): pkg/observatory/lib/src/elements/nav/notify_event.dart:91-105 | pkg/observatory/lib/src/elements/nav/notify_event.dart:108-122 | pkg/observatory/lib/src/elements/nav/notify_event.dart:149-164 | pkg/observatory/lib/src/elements/nav/notify_event.dart:168-183 | pkg/observatory/lib/src/elements/nav/notify_event.dart:186-200 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/nav/notify_event.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef021532d6bfbc4c0ff21687c3f31fb76514cfa8af6f4e03aff3d79ec2224d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:20388-20403 | pkg/analyzer/lib/src/dart/ast/ast.dart:22026-22041 | pkg/analyzer/lib/src/dart/ast/ast.dart:49557-49572 | pkg/analyzer/lib/src/dart/ast/ast.dart:53036-53051 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20388}}}],"partialFingerprints":{"codehealthFindingId/v1":"18f92aa4279023f1a98a4b5b6982b5223813b2ac7d38b9c59a485b0e760e420a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): pkg/front_end/lib/src/fragment/constructor/encoding.dart:218-233 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:267-282 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:965-980 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:1063-1078 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"74e3940d6ecf5c9f3b4c112a61b39f19d535d8144f8b2d8744cd5225e732ae9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 3): pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:172-186 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:194-208 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:314-329 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"96e40064009763ffe0a4e7b52552579b94800f64e8bd0a3db4781232dc9a5fde"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1511-1526 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1530-1545 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2119-2134 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1511}}}],"partialFingerprints":{"codehealthFindingId/v1":"68200541871b6bc32d33e45644a6ea9c9803e7b4c1ff154310f5a334689a2eb5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 3): pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget.dart:38-52 | pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget_with_animation.dart:44-59 | pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateless_widget.dart:37-50 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget_with_animation.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 57 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":"pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"254d8f1dcfe9b4b7eda20079871d18b25efabbf1789108b191d02627cbc5c906"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:546-561 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:631-646 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:689-704 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"d31c5d9be2e23368aa5a81f4d281ee2becf430ecc68a4ffec78adbdbee30d80b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): pkg/compiler/lib/src/kernel/kernel_impact.dart:159-174 | pkg/compiler/lib/src/kernel/kernel_impact.dart:192-207 | pkg/compiler/lib/src/kernel/kernel_impact.dart:260-275 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ac69b9aa80406ede5b6b9ae59ff38ee20c7799a2b3fa915c5551a60f43272d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 3): pkg/front_end/lib/src/fragment/getter/encoding.dart:281-295 | pkg/front_end/lib/src/fragment/method/encoding.dart:225-240 | pkg/front_end/lib/src/fragment/setter/encoding.dart:281-295 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"836cfca4925eba449e96f2bcc2792e9c5b9826fee8d4d1c11c091b2e45afd39a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): pkg/front_end/lib/src/kernel/internal_ast.dart:3646-3661 | pkg/front_end/lib/src/kernel/internal_ast.dart:3736-3751 | pkg/front_end/lib/src/kernel/internal_ast.dart:4302-4317 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":3646}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce0813928b30851c7f1f4651b690d67d3d2eca0e35f89227695565a2b85850cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:5523-5538 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5608-5623 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5683-5698 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5523}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c0448c64870443c315665bf5906fce7343463f6e9e7bcccde479278561d292e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8488-8503 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8694-8709 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8948-8963 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8488}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d147b59691475b8c6273a7fb3bd7ac8d5b997bd14b30757a4389092f2a0b89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201316 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart:70-85 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_with_plugin_that_times_out.dart:73-85 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"41ef4e083128cd3b798180456b6b53562233571e0c55d9a2429c70e84030ccf2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/tool/generators/ast_generator.dart:541-556 | pkg/analyzer/tool/generators/ast_generator.dart:585-600 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"5415e94939880cc1f82875a8b87bafda9396a81398c7311f603fa23e19897774"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_property_full.dart:26-41 | pkg/front_end/testcases/inference_new/infer_assign_to_property_full.dart:24-39 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_full.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf075245ded116f6a04b036aafdc4eb4c4b596f086f2e4112e06c93dbdc972c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart:403-418 | sdk/lib/_internal/js_runtime/lib/core_patch.dart:420-435 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/core_patch.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbde31bf067f02d55cc662528b6620a18639641443d8d97b6a29771bd05caf7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart:205-220 | sdk/lib/_internal/js_runtime/lib/math_patch.dart:198-213 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/math_patch.dart\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 144 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"924485e84d3e8737436dc4c43c491f8554ec1a155246bbb73ac0d061ce4d0d66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:213-228 | sdk/lib/_internal/js_runtime/lib/js_number.dart:251-266 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"01e9fb09d4b055729aec4df9e457f72b51b9577d02dc8020f4ee83f2886bffad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:26-41 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:13-28 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/vm_shared/lib/collection_patch.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 44 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc35af2ca1b3dcfd28c2f06a3c4a17307f04dda15c7b8ec25ac89b15f39cd3ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/js_number.dart:600-615 | sdk/lib/_internal/vm/lib/integers.dart:420-434 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 and \u0060sdk/lib/_internal/vm/lib/integers.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 51 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_number.dart"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"402d25185b3f39c73d3dd03777ebdcf3d9b7bab79da8a3ba466abc600344c3da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201316 lines \u00D7 2): sdk/lib/_internal/vm/lib/growable_array.dart:50-65 | sdk/lib/_internal/wasm/common/list.dart:568-580 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a1b180855f7108555d36b361cde561d365664d2f6c4b8639fb6850b873b1d55"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201316 lines \u00D7 2): sdk/lib/core/uri.dart:2282-2297 | sdk/lib/core/uri.dart:4753-4765 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2282}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7d70e12e0da27e8758a2301f83f4c2f52c679fcffff43827e9b89ff8d563d95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart:276-291 | pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart:306-321 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"0420ad377a7ef11fae35d52946408a857ad191a4d90d5a730efa1020e381dab7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analysis_server_client/lib/src/protocol/protocol_base.dart:137-152 | pkg/analyzer_plugin/lib/protocol/protocol.dart:167-182 \u2014 before extracting anything, compare \u0060pkg/analysis_server_client/lib/src/protocol/protocol_base.dart\u0060 and \u0060pkg/analyzer_plugin/lib/protocol/protocol.dart\u0060 as WHOLE FILES: this scan already matched 5 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":"pkg/analysis_server_client/lib/src/protocol/protocol_base.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"344dded3fe99b33d8c993a575ea199b80043aa3f6ae9ca1e74300a0da91d236a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/list.dart:208-223 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/map.dart:52-67 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/list.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"42735d8236d4f5282d5a145691db8005ba4dd319561104ad9f6ef47eab9cf737"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analysis_server/lib/src/analysis_server.dart:1275-1290 | pkg/analysis_server/lib/src/analysis_server.dart:1306-1321 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":1275}}}],"partialFingerprints":{"codehealthFindingId/v1":"daba4218aae1fa52de213a42108699e3eab7c89da8cfc4ff1532fcab52ee0a34"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart:62-77 | pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart:82-95 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd3ec0e0fd2227a014936abf46aed96c25dcebadd3450d7531f08357979bf9bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/commands/organize_imports.dart:52-67 | pkg/analysis_server/lib/src/lsp/handlers/commands/sort_members.dart:65-80 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/commands/organize_imports.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"2beaaa45406f68dd57cac1f7554e1014ad077013b64a0da03fea05c5854d7bda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/convert_to_constant_pattern.dart:22-37 | pkg/analysis_server/lib/src/services/correction/dart/convert_to_wildcard_pattern.dart:22-37 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_constant_pattern.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0fb098762b75dc0f58787a50c917a0642fa1bc9fc8a9c464b1b95d410989a00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:5531-5546 | pkg/analyzer/lib/src/dart/ast/ast.dart:47268-47283 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":5531}}}],"partialFingerprints":{"codehealthFindingId/v1":"d928de59de8fb11ba4807e61edaf062bca86130b69f6afa023ac538ff160f83b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:14982-14997 | pkg/analyzer/lib/src/dart/ast/ast.dart:31608-31623 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":14982}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bc320a16da5ec9fd398e88895fecb73cbae7613e5e988dd7e09d2af3cf147dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:25552-25567 | pkg/analyzer/lib/src/dart/ast/ast.dart:26206-26221 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25552}}}],"partialFingerprints":{"codehealthFindingId/v1":"767ad72907051acef851ef4587b94d91b52a88ee92bb80e2674168b6dc057e61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/lib/src/dart/constant/value.dart:2646-2661 | pkg/analyzer/lib/src/dart/constant/value.dart:3048-3063 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2646}}}],"partialFingerprints":{"codehealthFindingId/v1":"6db7659f84fa1088126beaeb045ec41f26e3afc40bb847215a92813cfec5c745"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/least_upper_bound.dart:577-591 | pkg/analyzer/lib/src/dart/element/least_upper_bound.dart:594-609 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"092bbc3b066ede85a1b899b64034fe61b6937232d9c41b3c97450f146e6f723c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart:154-169 | pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart:173-188 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"216cb063474090f23f68aa3bdbb77176a3baeb33ae6be17101c9a78595a25e74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart:1060-1075 | pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart:1083-1098 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec0be9a65a9e61fe9c2f3778216a128ed2efad2fffce59baae45d5d7d8553b4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/lib/src/error/inheritance_override.dart:62-77 | pkg/analyzer/lib/src/error/inheritance_override.dart:106-121 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"695e0af378272620bd99ea2ad7549ddd3bea84437221440626c351194c00d159"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:547-562 | pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:1887-1902 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"afa31e77fb38b203716facebf74aed82e27161106119a45fa9dfa1d655a9dc27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:564-579 | pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:1905-1920 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc8aaf184e89216e4d4ef2ccef39adbd58ddd3aa3ec721f0b83c718c5c425bda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_reader.dart:283-298 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:478-492 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"71193358304cf2c140e65836cb1f85fc5d88813bed229765a3def119a26859a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analyzer_cli/lib/src/error_formatter.dart:501-516 | pkg/dartdev/lib/src/commands/analyze.dart:631-646 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/error_formatter.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"de82587986c375910afac19ecd3f11c76335847daa6763070cd48e29e225e76b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): pkg/compiler/lib/src/ir/scope_visitor.dart:1167-1182 | pkg/compiler/lib/src/ir/scope_visitor.dart:1186-1200 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":1167}}}],"partialFingerprints":{"codehealthFindingId/v1":"4430d24c119f991fc1110251966095d75ca079d8938376b3bbd97d9d2a2fde60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/compiler/lib/src/js/size_estimator.dart:264-279 | pkg/js_ast/lib/src/printer.dart:523-538 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/size_estimator.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 154 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c3e883ed0ae3d548fd4d1fff87e00f298b5a264bdd03540795a0419c7c3d7dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): pkg/dds/lib/src/devtools/machine_mode_command_handler.dart:103-117 | pkg/dds/lib/src/devtools/machine_mode_command_handler.dart:142-157 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/machine_mode_command_handler.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"39385428755cdaed3c4fa446661aba035824ba0cadc3ef45d091da1fd03b621c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:704-719 | pkg/js_ast/lib/src/builder.dart:622-637 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2eb1819d1a88f11d918de4f187fdf4d0d9aab6f76687faa52b5effa8c861a82"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5889-5904 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6542-6557 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5889}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfefc457a396ff9b42c6958d37934c86ae772c981fdecbeafeaec775e1e9fd89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8002-8017 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8868-8883 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8002}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d6d3e22c79791b8b3f53a5983934078f2a01391860e87eaaf6e1154f085236"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8378-8393 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9247-9262 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8378}}}],"partialFingerprints":{"codehealthFindingId/v1":"c15cf62a42ee80bc372fe1b4b02e48eede27cca427605063479ff7f2b8a8bb19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/base/incremental_compiler_utils.dart:20-35 | pkg/front_end/lib/src/base/incremental_compiler_utils.dart:49-64 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler_utils.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"08afbdfd7ac17ebdf0dcb1bb41981b6fd181a3d84bbe5b60abef50f5d3e17f30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_extension_builder.dart:182-197 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:140-155 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/dill/dill_extension_builder.dart\u0060 and \u0060pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/front_end/lib/src/dill/dill_extension_builder.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"42b0171ebc4a3ad67c33c526abcb081827f10bb5c8018eccca9845c428704755"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/fragment/method/encoding.dart:734-749 | pkg/front_end/lib/src/fragment/setter/encoding.dart:760-775 \u2014 \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 306 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"57f4b7b8bfb6237cda1ce87c39b8ed6ef4e9bed168b5d20131108a7b782eb83f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/fragment/setter/encoding.dart:296-311 | pkg/front_end/lib/src/fragment/setter/encoding.dart:636-651 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/setter/encoding.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"51437759b210e04fd6ba6d741b0807f3459efa023464ebc12ee6563a505811fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:2618-2633 | pkg/front_end/lib/src/kernel/body_builder.dart:2667-2682 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":2618}}}],"partialFingerprints":{"codehealthFindingId/v1":"d70c7e4f56173808b8bc68fb2de122be79494ece882ccb93483228784ab3f925"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:7854-7869 | pkg/front_end/lib/src/kernel/body_builder.dart:7896-7911 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":7854}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3557f2948caad2e5e85c53c9cd3900b477d5f7efde121b3ec20c314d3fd07e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/kernel/expression_generator.dart:2867-2882 | pkg/front_end/lib/src/kernel/expression_generator.dart:3338-3353 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":2867}}}],"partialFingerprints":{"codehealthFindingId/v1":"6659f3a7a6808f30d83928253c2ae4f9801562851227e3f8b84aa9fd7b199f51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/hierarchy_node.dart:223-238 | pkg/front_end/lib/src/kernel/hierarchy/hierarchy_node.dart:457-471 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/hierarchy_node.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a70d8a0ecfd4f61c6dcb8cfe82bcce7621c02a31b6f8a0a645f40ff427da4bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:823-838 | pkg/front_end/lib/src/kernel/internal_ast.dart:868-883 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":823}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef21f21a9fb31f948ea8f1fe21064f56107cf7375d9ff92abdfcf3d357761daf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/source/builder_factory.dart:428-443 | pkg/front_end/lib/src/source/builder_factory.dart:1116-1131 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"87a65a9a3ae825a65315cb74a9417cca43afaec201b8184e4068f2801e781053"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): pkg/front_end/lib/src/source/outline_builder.dart:2646-2660 | pkg/front_end/lib/src/source/outline_builder.dart:4679-4694 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2646}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f72c08fc12b44ed5f6ef1de5957ca6394f2da2bfafc8c2f397822ed6cbc66e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/source/source_compilation_unit.dart:693-708 | pkg/front_end/lib/src/source/source_loader.dart:1062-1077 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":693}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3061db211447dab99e38571f3e7fa4623b62ed1cd645735d81c2cf0ee34305d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:322-337 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1371-1386 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"973eb9387a4f61b1af7049a820be9a2c4e3c3c8f193415e8716009732c29d39a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1584-1599 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1895-1910 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1584}}}],"partialFingerprints":{"codehealthFindingId/v1":"271c729d47a899e4bbb6a6cdd2a7b663c29e8522b9149773e77c221d06d62e0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:2997-3012 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:3135-3148 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":2997}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba8f9a2fb9b0a10aa5c988b9076db95aa5b4d0d9be4287be74955cbdc5f7b541"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:3976-3990 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:4909-4924 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":3976}}}],"partialFingerprints":{"codehealthFindingId/v1":"b951347547df319b0c8a8122eb3aa7d85b1eb0ed05187e847fe2330b3968df06"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6886-6901 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8478-8493 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6886}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfc0d90043eee6a77bc7a52e5cba3d9923b3e618b79966e7540bbea212947780"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8540-8555 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8742-8755 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8540}}}],"partialFingerprints":{"codehealthFindingId/v1":"619350b963cc3eaa8a22323db5c0408d0efa383dfde0af8474967ba401dfe544"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/linter/lib/src/rules/omit_obvious_local_variable_types.dart:74-89 | pkg/linter/lib/src/rules/omit_obvious_property_types.dart:57-72 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/omit_obvious_local_variable_types.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9436258275d4a6ff46b4907f386edcc1ee42147e1b79be05f93012327943364"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/observatory/lib/src/elements/allocation_profile.dart:481-496 | pkg/observatory/lib/src/elements/persistent_handles.dart:251-266 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfd5d7d93cd2948ed4c8fb9b5af4377ac8def26a1b91c85d762ee30c7363c00d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15\u201316 lines \u00D7 2): pkg/observatory/lib/src/elements/class_view.dart:489-504 | pkg/observatory/lib/src/elements/library_view.dart:305-319 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_view.dart"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac9c29f8455179385e1f12e9f0f522a5354223450b7ef744d364f324dbaa19cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:822-837 | pkg/observatory/lib/src/elements/heap_snapshot.dart:847-862 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f7dc38473fa8b6fc4856f5a0d7de01803b210b44d684dc2893813f400b5ceb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201316 lines \u00D7 2): pkg/observatory/lib/src/elements/inbound_references.dart:102-117 | pkg/observatory/lib/src/elements/retaining_path.dart:105-118 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/inbound_references.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"160a78553891c94de0c28657a76bf3ec3cc7ca13f67870abdb3e6f1e7c4ae366"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/observatory/lib/src/elements/script_inset.dart:596-611 | pkg/observatory/lib/src/elements/script_inset.dart:615-630 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dcf86c74bfc5e1e3382d1c072bf28df3805cff58257ac0ff7f207d778211aed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/observatory/lib/src/sample_profile/sample_profile.dart:1249-1264 | pkg/observatory/lib/src/sample_profile/sample_profile.dart:1305-1320 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/sample_profile/sample_profile.dart"},"region":{"startLine":1249}}}],"partialFingerprints":{"codehealthFindingId/v1":"49bf7236618f2aa18906528e324fcdadb230ba69a1cdac67b64cc56adb205361"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/wasm_builder/lib/src/builder/instructions.dart:343-358 | pkg/wasm_builder/lib/src/builder/instructions.dart:371-386 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"baf3dff1ae6fe23daf7b67d36eb7d73b0d06783b566a9a568a3a85c5dc26d031"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/vm/lib/transformations/dynamic_interface_annotator.dart:664-679 | pkg/vm/lib/transformations/type_flow/rta.dart:88-103 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/dynamic_interface_annotator.dart"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b1ecad44e1d70648c3815140d0319d8de0e701ca42aa6dea4f92262e50aacee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 8): pkg/front_end/lib/src/kernel/internal_ast.dart:2670-2684 | pkg/front_end/lib/src/kernel/internal_ast.dart:2863-2877 | pkg/front_end/lib/src/kernel/internal_ast.dart:3193-3207 | pkg/front_end/lib/src/kernel/internal_ast.dart:4436-4450 | pkg/front_end/lib/src/kernel/internal_ast.dart:4592-4606 | pkg/front_end/lib/src/kernel/internal_ast.dart:4735-4749 | pkg/front_end/lib/src/kernel/internal_ast.dart:4879-4893 | pkg/front_end/lib/src/kernel/internal_ast.dart:5007-5021 \u2014 all 8 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":2670}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe1604e2478545e6cc2088494d310d46d22769ca6ab7fe86e8c603383e4b63e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 6): pkg/analyzer/lib/src/lint/pub.dart:334-348 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:239-253 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:985-999 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:1083-1097 | pkg/front_end/lib/src/kernel/resolver.dart:1538-1552 | pkg/front_end/lib/src/source/source_compilation_unit.dart:215-229 \u2014 there are 6 copies across 4 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 6 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/lint/pub.dart"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb1b2d70da1aad79a2372a4620a9dd0ee13dd8ebc8e796e5fb430121a9b36cf1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/patch/isolate_patch.dart:45-59 | sdk/lib/_internal/js_runtime/lib/isolate_patch.dart:57-71 | sdk/lib/_internal/vm/lib/isolate_patch.dart:432-446 | sdk/lib/_internal/wasm/common/isolate_patch.dart:54-68 \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":"sdk/lib/_internal/js_dev_runtime/patch/isolate_patch.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"8044f7c2c2dc418c2bca54a72b41aef2cb41a49ccf91fa0a61f9a540d80a78bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:24519-24533 | pkg/analyzer/lib/src/dart/ast/ast.dart:24541-24555 | pkg/analyzer/lib/src/dart/ast/ast.dart:37234-37248 | pkg/analyzer/lib/src/dart/ast/ast.dart:37261-37275 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24519}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d568f28080562f0884f526ab4b9720836ec0420a7f073dfbc8ca0ae247b0ac3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:25648-25662 | pkg/analyzer/lib/src/dart/ast/ast.dart:25670-25684 | pkg/analyzer/lib/src/dart/ast/ast.dart:26296-26310 | pkg/analyzer/lib/src/dart/ast/ast.dart:26315-26329 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25648}}}],"partialFingerprints":{"codehealthFindingId/v1":"bad54c1f6b507b079ef0a79c43b8368ad8e89713ffd90cf849615fd2cbc1692e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): pkg/front_end/lib/src/fragment/getter/encoding.dart:334-348 | pkg/front_end/lib/src/fragment/getter/encoding.dart:635-649 | pkg/front_end/lib/src/fragment/setter/encoding.dart:357-371 | pkg/front_end/lib/src/fragment/setter/encoding.dart:682-696 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 15 separate duplicated blocks between them, totalling at least 276 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc12a6b11ac7d03ed975c9fd53b303f5641794030c80e375973a5b9993681182"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 4): pkg/front_end/lib/src/type_inference/inference_visitor.dart:2454-2468 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8639-8653 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8835-8849 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:9102-9116 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":2454}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ebca28c23f4eb11da203a5bf01dec7dc75b3a7ed06fcdecb272ed48b5b71f31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201315 lines \u00D7 3): pkg/dart2wasm/lib/dynamic_dispatchers.dart:103-117 | pkg/dart2wasm/lib/dynamic_dispatchers.dart:140-154 | pkg/dart2wasm/lib/dynamic_dispatchers.dart:184-195 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dynamic_dispatchers.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"cff26cbe73626fbad724295909260debe70f32d59f1d24d2daec4a156fbff1cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1413-1427 | sdk/lib/_internal/wasm/common/convert_patch.dart:1599-1613 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1291-1305 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1413}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a0c0e7cc5add712977c1e7c4b8868590de17b1739481c47563bf4f20c90ca07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): pkg/analysis_server/lib/src/status/pages/ast_page.dart:24-38 | pkg/analysis_server/lib/src/status/pages/contents_page.dart:27-41 | pkg/analysis_server/lib/src/status/pages/element_model_page.dart:29-43 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/ast_page.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"de70be829dc07aa55fab3c24191836ce18877b0247240d620729d98e61e6c9b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): pkg/analyzer/lib/src/binary/string_table.dart:69-83 | pkg/compiler/lib/src/serialization/binary_source.dart:99-113 | pkg/dart2js_info/lib/src/binary/source.dart:256-270 \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":"pkg/analyzer/lib/src/binary/string_table.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"af6060b8938e3b97ad4894f3c2248137057e79a12242d613af23694f4442358b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): pkg/analyzer/lib/src/dart/ast/ast.dart:17528-17542 | pkg/analyzer/lib/src/dart/ast/ast.dart:17548-17562 | pkg/analyzer/lib/src/dart/ast/ast.dart:29589-29603 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17528}}}],"partialFingerprints":{"codehealthFindingId/v1":"293c8f8b8e0ece261dc06b6a2b70bbb5943c41491ba955bf52e8d4783908306c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): pkg/analyzer/lib/src/dart/ast/ast.dart:20320-20334 | pkg/analyzer/lib/src/dart/ast/ast.dart:49470-49484 | pkg/analyzer/lib/src/dart/ast/ast.dart:52968-52982 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20320}}}],"partialFingerprints":{"codehealthFindingId/v1":"5797e969f73fa65542bdab7e9ee24f60500d2906cfd59dee7d11bbe0dd4192a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 3): pkg/analyzer/lib/src/dart/element/element.dart:1076-1090 | pkg/analyzer/lib/src/dart/element/element.dart:9006-9019 | pkg/analyzer/lib/src/dart/element/element.dart:10880-10893 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"1401f74226a18f57b197a96c0fba8c4f361e2ef19bd1009847ae55cfda65adfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 3): pkg/analyzer/lib/src/summary2/metadata_resolver.dart:53-66 | pkg/analyzer/lib/src/summary2/metadata_resolver.dart:99-112 | pkg/analyzer/lib/src/summary2/metadata_resolver.dart:140-154 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/metadata_resolver.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"8569dcce11aa0e13af468218fe51f5e3a11c48624a83144a8c5cc0a101d90358"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): pkg/front_end/lib/src/fragment/getter/encoding.dart:312-326 | pkg/front_end/lib/src/fragment/method/encoding.dart:269-283 | pkg/front_end/lib/src/fragment/setter/encoding.dart:337-351 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfff78c6aba1816b18d54502a343fa9befdd8f5f6621ba19e5dd7b9fcfe99c44"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): pkg/front_end/lib/src/fragment/method/encoding.dart:1031-1045 | pkg/front_end/lib/src/fragment/util.dart:181-195 | pkg/front_end/lib/src/fragment/util.dart:207-221 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1031}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f1f9aa4007f0b7c0fea6c9721781e01afbac43cd47d857ab290d8222ca7a6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): pkg/front_end/lib/src/fragment/method/encoding.dart:1157-1171 | pkg/front_end/lib/src/fragment/util.dart:261-275 | pkg/front_end/lib/src/fragment/util.dart:287-301 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"a81d89c88e03e7cc51b9e3a4527cdc1c7f945fa2434442fc56d138d7dd519688"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:12619-12633 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:13034-13048 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:13189-13203 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12619}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e1d954d37443f933db4e4f82edeba6b05b4a70d75e889801c6d55d615c562c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 3): pkg/front_end/lib/src/type_inference/object_access_target.dart:1264-1278 | pkg/front_end/lib/src/type_inference/object_access_target.dart:1291-1305 | pkg/front_end/lib/src/type_inference/object_access_target.dart:1343-1357 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1264}}}],"partialFingerprints":{"codehealthFindingId/v1":"4795f52d0bb7b11cc4a34388c7fdc986b8517236ff808e8d03a5ecb85c674d1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1610-1624 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1225-1239 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1610}}}],"partialFingerprints":{"codehealthFindingId/v1":"f01a09b110469a4a845bf2cbc47284ab2ac385e02f29d0bbedcf61e9aa207e1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1533-1547 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1686-1700 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1533}}}],"partialFingerprints":{"codehealthFindingId/v1":"090f393380677a748630e825fd56b9a51d688b4a484b049ab2b81342b80debc9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1812-1826 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1899-1913 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1812}}}],"partialFingerprints":{"codehealthFindingId/v1":"71337d6a9947c2072451ced0ce0340887109e71cda5d0028b6e1ea21e3d108b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:190-204 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:63-77 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"9485ed18ab403f0245cf5359f01c9df1060d33a9439e61f1832190bc1fa25cde"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1192-1207 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1518-1532 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"862d4c734ea3d05bb8a0917d95407b36c0184ff1b292d02377f4fd1425b99868"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2552-2566 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2628-2642 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2552}}}],"partialFingerprints":{"codehealthFindingId/v1":"0069a1f9afe459ea9691e0b2d49b11278aa410c04630791abf9325d63c9a8f92"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): pkg/analyzer/tool/element/generate.dart:196-209 | pkg/analyzer/tool/element/generate.dart:228-242 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/element/generate.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"058bd2034c50e565a18ab3ea6b28b275707545cdc40f8c5ae3c565a498b4bda8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/dart2wasm/lib/translator.dart:3707-3721 | pkg/dart2wasm/lib/translator.dart:3753-3767 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":3707}}}],"partialFingerprints":{"codehealthFindingId/v1":"61a8ee861f184f97a85fb48a557c4f84325aedd9ab757997ecffd111104203be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart:61-75 | pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart:61-75 \u2014 \u0060pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart\u0060 and \u0060pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 49 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"55621aafbf0da2bbf7688d23e38e5ef25958560f3dc3d5e4728b3db12eddfdb6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): pkg/front_end/tool/flame/instrumenter_suite.dart:79-93 | pkg/front_end/tool/flame/instrumenter_suite.dart:95-108 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/flame/instrumenter_suite.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcee5b524586b14fa24f36539f353ed7979e9e4655a475eacacd3efc4ddc4990"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/kernel/lib/type_algebra.dart:961-975 | pkg/kernel/lib/type_algebra.dart:1312-1326 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":961}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d2409723c152b589d8bf1d3d2772b38ab74eeb34277aa798fafb2392845918"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart:314-328 | sdk/lib/_internal/js_runtime/lib/math_patch.dart:301-315 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/math_patch.dart\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 144 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"c52658d1d0c3bcab7a2a2b35b0bd5bf13e9daee024731b82b541e4f5db5eb687"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:1310-1324 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:246-260 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 63 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":1310}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5da1c8741804f04ef8be2407c21275b055a5cd6785860938baea14b858fe953"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:571-585 | sdk/lib/_internal/wasm/common/compact_hash.dart:536-550 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee3a4a265602298cbcb80bff53d01ddf0baf65d4338d9f26efda919de2366f78"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1269-1283 | pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1297-1311 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1269}}}],"partialFingerprints":{"codehealthFindingId/v1":"20fd747aaf0ab8a601e81c9613ca5af8739c6cf8e764354964b6a2e45df990e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/kernel/lib/binary/ast_from_binary.dart:1672-1686 | pkg/kernel/lib/binary/ast_from_binary.dart:1746-1760 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":1672}}}],"partialFingerprints":{"codehealthFindingId/v1":"d18a16026cf83eac09772b037ea3ff66a5120af22d0a3f40c0674a1f0f7f0e36"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/dart2js_info/lib/src/binary/sink.dart:335-349 | pkg/kernel/lib/binary/ast_to_binary.dart:3829-3843 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/binary/sink.dart"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"889fccc74a8014288dd66cba99902703bbde18c0773a4ab5d0b9391cb6765ffb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): sdk/lib/collection/list.dart:154-168 | sdk/lib/internal/iterable.dart:139-153 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/list.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cdc033479aca4069b7a1498f3452230a46b8abf263aaaf28438750beaca139f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): sdk/lib/io/directory_impl.dart:144-158 | sdk/lib/io/directory_impl.dart:173-187 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/directory_impl.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e85bfe08f87115df5832edb6fbcdba8e23eb2a9643ae421acfa6d1825733d8a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analysis_server_client/lib/src/protocol/protocol_base.dart:156-170 | pkg/analyzer_plugin/lib/protocol/protocol.dart:186-200 \u2014 before extracting anything, compare \u0060pkg/analysis_server_client/lib/src/protocol/protocol_base.dart\u0060 and \u0060pkg/analyzer_plugin/lib/protocol/protocol.dart\u0060 as WHOLE FILES: this scan already matched 5 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":"pkg/analysis_server_client/lib/src/protocol/protocol_base.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"9740a293950994be6bb43ce9e34fc389c65e3ba090317a0aefe99b95d1084464"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart:168-181 | pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart:227-241 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6f080c588874d84d5298d9752bb9744d11422d1cc1f0765475a178d505ffe1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201315 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart:127-139 | pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart:216-230 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"836d809d57db41223cfba2c548392e4bd3c97659db872a65804be10b4b7d9dbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart:83-97 | pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart:102-116 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 39 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":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aba2d8a5bce98ca877204f75f2b3df6a875a714b9fed5ef82efd3b0fdd53ae0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart:110-124 | pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart:133-147 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 39 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":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d0479ce899959cdbd3fe8273c64362b7b7c81fb493a128ac8e09eb3f6e3888a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/analysis_options/analysis_options.dart:343-357 | pkg/analyzer/lib/src/analysis_options/analysis_options.dart:374-388 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb58b6f3e4a9d13c681c204147632d05c769ad7063b1fb9cf8030ac93be8d90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/analysis/index.dart:830-844 | pkg/analyzer/lib/src/dart/analysis/index.dart:1156-1170 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"52b8bfb93d55502049e0a25f8b01cc1f49e33f623a576594cf4c7ccd89b02553"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:5437-5451 | pkg/analyzer/lib/src/dart/ast/ast.dart:47174-47188 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":5437}}}],"partialFingerprints":{"codehealthFindingId/v1":"17e7393fa621d7c3e1c22a41a6d91adf0ba3ce89432ee3fe8a010e443f06cc41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:8377-8391 | pkg/analyzer/lib/src/dart/ast/ast.dart:8396-8410 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":8377}}}],"partialFingerprints":{"codehealthFindingId/v1":"caf9c4b44fbf22c2c43323f320bef4ff83420defa71a79fa652144455cdfb925"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:16706-16720 | pkg/analyzer/lib/src/dart/ast/ast.dart:16725-16739 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":16706}}}],"partialFingerprints":{"codehealthFindingId/v1":"d857ae2ea3ddbd03f23be83a53f4878b67475ab1d9d7e7570c7c52881ce31fd1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:17457-17471 | pkg/analyzer/lib/src/dart/ast/ast.dart:29492-29506 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17457}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f898a04e9ca274688f14eb7b112aca160701c084c82b7bd2c03f18e9c989b7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:19471-19485 | pkg/analyzer/lib/src/dart/ast/ast.dart:19628-19642 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":19471}}}],"partialFingerprints":{"codehealthFindingId/v1":"aca15bae1e8c4e73803bcd07398220c15b065ee01bb1120353b61e4d9fba611a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:19940-19954 | pkg/analyzer/lib/src/dart/ast/ast.dart:19960-19974 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":19940}}}],"partialFingerprints":{"codehealthFindingId/v1":"52963dce47b6437388dce5baa2f0fbcedfbb4b1b47b948b4e66e83862589b1df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:25121-25135 | pkg/analyzer/lib/src/dart/ast/ast.dart:25154-25168 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25121}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3e71a3f14f34864dca9e969468f77912d6f67f753ae68dc7bff66547b91b0a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:28460-28474 | pkg/analyzer/lib/src/dart/ast/ast.dart:28482-28496 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":28460}}}],"partialFingerprints":{"codehealthFindingId/v1":"97eaa9b7c9c21888e2d532a811fd5300f6aa73a247e3ce55d6e5849c57920196"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:45953-45967 | pkg/analyzer/lib/src/dart/ast/ast.dart:45972-45986 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":45953}}}],"partialFingerprints":{"codehealthFindingId/v1":"7606bcccf6d51765407f72083db55b3656f92eed6bd1d813d6c6959abd9d6463"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:202-216 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:552-566 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"985de5ef11d41ab6c72e1535568c13c799e747a608d3c22d262d9113ddafbd8d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/fine/manifest_context.dart:44-58 | pkg/analyzer/lib/src/fine/manifest_context.dart:335-349 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_context.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"20fe65bb6e3371f36ff51dbe23bf9f900c66039ae6156cca57582bcc5194fc0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/generated/resolver.dart:2126-2140 | pkg/analyzer/lib/src/generated/resolver.dart:4471-4485 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":2126}}}],"partialFingerprints":{"codehealthFindingId/v1":"623abf44c13e2a3b43d0cad326a62ab2739ed95a8380f2509bf551e41a6f5a77"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:713-727 | pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:801-815 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_writer.dart"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c4dfad5451e99513bd6a394fee9bc47434b14489bd06a143a994e4ca5d60f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2558-2572 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2030-2044 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2558}}}],"partialFingerprints":{"codehealthFindingId/v1":"175c68969b21e851864e583508c58b66b56184f960d5defdab84a37d3bcb550f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2676-2690 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2127-2141 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2676}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c51bf4c580055c4bf096d7c7967fe4eb8ca3efbb09f8c3a747ebcd458a3af81"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/compiler/lib/src/js_model/elements.dart:783-797 | pkg/compiler/lib/src/js_model/elements.dart:859-873 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"44ac43e58102c2fbf8480980a8b21813d5c45c7b136e9ac684169935d0d3397c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:677-691 | pkg/js_ast/lib/src/builder.dart:555-569 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"3979fe19b8518b47b438ea1a0001843d81d64c3fa0082ecb873dec1feac71253"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:590-604 | pkg/js_ast/lib/src/printer.dart:648-662 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"57cbfb73435df2fd3361ac47a8698fc2b1d5012c3d80573843332e06a3ca5b53"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5394-5408 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6004-6018 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5394}}}],"partialFingerprints":{"codehealthFindingId/v1":"298d1d8fbd8e84cf669a8033dab7bd6dc78926d1a5a4295d788909591567cdbe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_extension_builder.dart:181-195 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:300-314 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/dill/dill_extension_builder.dart\u0060 and \u0060pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/front_end/lib/src/dill/dill_extension_builder.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"640c320278c566085d7f13bdaf0f2126f748d8dec57e57b413b0d7f08bdcf114"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/fragment/constructor/encoding.dart:409-423 | pkg/front_end/lib/src/fragment/constructor/encoding.dart:746-760 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"565021bb1ffe03e2938e49446f79f087e745c1ac3477f25fb787193e7162d3c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:3165-3179 | pkg/front_end/lib/src/kernel/body_builder.dart:3180-3194 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3165}}}],"partialFingerprints":{"codehealthFindingId/v1":"37558e364047facd94ee272d12b1cf53cfc0cc41b5b6386b1836b2df84799751"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:3490-3504 | pkg/front_end/lib/src/kernel/body_builder.dart:5843-5857 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3490}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0d366545d534d99039298832d31f93d90758ab6c4111ee8dc99eeb71bcc67b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:3525-3539 | pkg/front_end/lib/src/kernel/body_builder.dart:4110-4124 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3525}}}],"partialFingerprints":{"codehealthFindingId/v1":"9501e19f38fcbb2a2111daf8a863cbee0c6c9b118bdad07051044b125e4c28b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:3275-3289 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:3383-3397 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3275}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cc3b083951d55d4d3aa459e9f8ff341d316902f5f115da532441f2b86db2838"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/kernel/expression_generator.dart:2836-2850 | pkg/front_end/lib/src/kernel/expression_generator.dart:3305-3319 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":2836}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba9669b67a350baf5cbd6f24eee2eb2d6a686baabe54f40e6ab7fc76e9b5e330"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/source/fragment_factory.dart:564-578 | pkg/front_end/lib/src/source/fragment_factory.dart:614-628 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory.dart"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"86d58378e18b70b09ed6d0e49aaf887b767320dbf084670914e824c7a8249a56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/source/fragment_factory.dart:581-595 | pkg/front_end/lib/src/source/fragment_factory.dart:648-662 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory.dart"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"a893fe94b48e7e8e3812819bcad8a213f4735a35585d8646c6bac0e09a6ff0fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/source/fragment_factory_impl.dart:1808-1822 | pkg/front_end/lib/src/source/fragment_factory_impl.dart:1853-1868 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":1808}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29a75f7a920ac3c40fba61d04e242872ceb37b6a8c83f9b96f9c5319be20a31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/source/source_class_builder.dart:250-264 | pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart:154-168 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/source/source_class_builder.dart\u0060 and \u0060pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 45 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":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"414b75fd62d696132667cc0f881bdd9f99bcb2d14e065be18bc7bdab96fae521"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/type_inference/body_inference_context.dart:588-602 | pkg/front_end/lib/src/type_inference/body_inference_context.dart:609-623 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"b32ac3ff438dfc72d2097b8189ba70bb1452036cbe4573a7a9de78b348c8b48d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/type_inference/body_inference_context.dart:951-966 | pkg/front_end/lib/src/type_inference/body_inference_context.dart:1119-1133 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b1b44b6484f557cfff42bc212b4d49eeb43a122f3da301f4d77e6b8b62e6e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8516-8530 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8975-8989 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8516}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ef347977b855e2926e0fed1c0441774cc2cfc48b7eefc58976199aa3216eb6c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:13890-13904 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:14178-14192 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13890}}}],"partialFingerprints":{"codehealthFindingId/v1":"70a842e5c0000ba10363c98ce95e20c4039f40c5e59786d9fd1ec56a6cd04b99"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:13905-13918 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:13970-13984 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13905}}}],"partialFingerprints":{"codehealthFindingId/v1":"778f5ab3afb945212172c6ec55458d001b2b3562c5e6d00f0dbfed9d1fd99fd8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:2350-2364 | pkg/front_end/lib/src/type_inference/inference_visitor_base.dart:2365-2379 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2350}}}],"partialFingerprints":{"codehealthFindingId/v1":"d709175d76054d27c276f119a121583480688916c0f8141697950aacc2b76a1a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): pkg/observatory/lib/src/elements/allocation_profile.dart:325-338 | pkg/observatory/lib/src/elements/allocation_profile.dart:367-381 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"960548f448281dc0fd98ff848e4a132996aa234a186c292b99c2b54409c18e40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/observatory/lib/src/elements/context_ref.dart:84-98 | pkg/observatory/lib/src/elements/instance_ref.dart:73-87 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/context_ref.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0bfbddb2fcef77eb1de2b2b441baba63d3bbf85b590b1e33d40ac63c9f34be1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:643-656 | pkg/observatory/lib/src/elements/process_snapshot.dart:329-343 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"947df2f2564047a77d12aaf24493795683db9fc8c7f1acf7805acc3b6827b3f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): pkg/observatory/lib/src/elements/instance_view.dart:409-422 | pkg/observatory/lib/src/elements/instance_view.dart:473-487 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f6d86e240fdae9a5a686a2abbd0823219d8e770fa8bccece7feac2b1ad6d1f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/observatory/lib/src/elements/metric/details.dart:155-169 | pkg/observatory/lib/src/repositories/metric.dart:144-158 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/metric/details.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3df3e72edead7b5cbcc830b749cb71e8729d7420e523f4519ec81243435cd0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/observatory/lib/src/elements/vm_view.dart:123-137 | pkg/observatory/lib/src/elements/vm_view.dart:183-197 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/vm_view.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"0118b33c2bd915b80828a6a6ccc1f9778b6b804fa0e527fe99376b23d979ad6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 2): pkg/observatory/lib/src/service/object.dart:1990-2003 | pkg/observatory/lib/src/service/object.dart:2029-2043 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":1990}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf6110be0563f54163145ac53909ebf015fa27f6b1534a3d8390e942b3d3768"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/vm/lib/transformations/type_flow/analysis.dart:1543-1557 | pkg/vm/lib/transformations/type_flow/rta.dart:76-90 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6de76c91519d2988be00801dabd13555868fc219f8bebcb37269fc67a55fc86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 7): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1413-1426 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1494-1507 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1756-1769 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1948-1961 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2154-2167 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2340-2353 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7276-7288 \u2014 all 7 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1413}}}],"partialFingerprints":{"codehealthFindingId/v1":"b212147a7d370a6f7ff93452706c4a7fc0fa9b0f8be40ea62dd04cdf18de0b39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 6): pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart:135-147 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_get_fixes_and_get_assists_requests.dart:93-105 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_hover_requests.dart:82-94 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_typing_temporary_missing_end_brace.dart:114-127 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/lsp_completion_after_change.dart:118-130 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/lsp_typing_temporarily_missing_end_brace_in_string_interpolation.dart:89-101 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_get_fixes_and_get_assists_requests.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_hover_requests.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 53 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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/legacy_many_files_in_flutter_set_subscriptions.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"a939ff1be1c8a0c0f376ef51d21cb188d5185751370fddfaa72037dd4c911b09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 6): pkg/front_end/lib/src/fragment/getter/encoding.dart:393-406 | pkg/front_end/lib/src/fragment/getter/encoding.dart:695-708 | pkg/front_end/lib/src/fragment/method/encoding.dart:324-337 | pkg/front_end/lib/src/fragment/method/encoding.dart:696-709 | pkg/front_end/lib/src/fragment/setter/encoding.dart:395-408 | pkg/front_end/lib/src/fragment/setter/encoding.dart:721-734 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc7f49fc14767246f71bac4bc8244805397f7a1384004cb19128e969802f184a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 5): pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types.dart:95-107 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types.dart:204-217 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/list.dart:225-238 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/map.dart:69-82 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/record.dart:105-118 \u2014 there are 5 copies across 4 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 5 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bfb3ec1b850ea39feacc0251f2f4e4fa85c1e8322e50f1e8bd983f04ef53cb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 5): pkg/observatory/lib/src/elements/heap_snapshot.dart:1068-1081 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1109-1122 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1132-1143 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1149-1162 | pkg/observatory/lib/src/elements/process_snapshot.dart:473-486 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1068}}}],"partialFingerprints":{"codehealthFindingId/v1":"963a3109e0cb1d96627f1515a89c2ba0dda17228651a8397e0ed3a06bf5cd2de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart:585-598 | sdk/lib/_internal/js_runtime/lib/core_patch.dart:581-594 | sdk/lib/_internal/wasm/js_common/string_buffer_patch.dart:63-76 | sdk/lib/_internal/wasm/js_compatibility/string_buffer_patch.dart:49-62 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/core_patch.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"7750180e6db7416500a5c3057de254f217920d8a7d12bc403897e738154f28d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): sdk/lib/_internal/wasm/common/typed_data.dart:2600-2613 | sdk/lib/_internal/wasm/common/typed_data.dart:2664-2677 | sdk/lib/_internal/wasm/common/typed_data.dart:2728-2741 | sdk/lib/_internal/wasm/common/typed_data.dart:2792-2805 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":2600}}}],"partialFingerprints":{"codehealthFindingId/v1":"039c2777ea90575154d7ae111c88a1624d37f87638c7313ec77d2272dec109a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:34354-34367 | pkg/analyzer/lib/src/dart/ast/ast.dart:34609-34622 | pkg/analyzer/lib/src/dart/ast/ast.dart:36432-36445 | pkg/analyzer/lib/src/dart/ast/ast.dart:50733-50746 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":34354}}}],"partialFingerprints":{"codehealthFindingId/v1":"d29456eacadd57dfe3452cb16e824fe69bb556d17435a72c235f437e85cf1d2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): pkg/compiler/lib/src/js_model/elements.dart:564-577 | pkg/compiler/lib/src/js_model/elements.dart:700-713 | pkg/compiler/lib/src/js_model/elements.dart:780-793 | pkg/compiler/lib/src/js_model/elements.dart:856-869 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"393a74c9d1c3a3d00620e35d28f9c0f1fd045a6ba7d95fe707e82859d56f85ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): pkg/dartdev/lib/src/commands/compile.dart:159-172 | pkg/dartdev/lib/src/commands/compile.dart:214-227 | pkg/dartdev/lib/src/commands/development_service.dart:46-59 | pkg/dartdev/lib/src/commands/tooling_daemon.dart:40-53 \u2014 before extracting anything, compare \u0060pkg/dartdev/lib/src/commands/development_service.dart\u0060 and \u0060pkg/dartdev/lib/src/commands/tooling_daemon.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 57 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":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"742e1e6b68353098d7529ac8d20003441dfae1434be0c17388cba46ff05c17a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1420-1433 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1501-1514 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1955-1968 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2045-2058 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"e05a313f8890f405e264071f267460af3407b1ec24a23bc3f55dba1ec033b21c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1784-1797 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2368-2381 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7316-7329 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8923-8936 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1784}}}],"partialFingerprints":{"codehealthFindingId/v1":"040678ab9ee5370519e397ad9902440edcdf3849804b8dd8da1f5265a14ad334"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 4): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7096-7109 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7352-7365 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8686-8699 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8940-8953 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7096}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd8ff6256028fb8c101cc874c3cf84ba67d227f9de8614d39cc1a3b97a9e7f20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/analyzer/lib/src/binary/binary_reader.dart:246-259 | pkg/dart2bytecode/lib/bytecode_serialization.dart:313-326 | pkg/kernel/lib/binary/ast_from_binary.dart:219-232 \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":"pkg/analyzer/lib/src/binary/binary_reader.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8924c76e9fd93b7ae277948a7c36f6a00d2be8663689b86a8a6e83d95bbbc1f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:39-52 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:117-130 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:195-208 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d4b184eddb84b8ca054b4244aca7d8912e6d50e32563aab3cde1ce6708c3f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart:352-365 | sdk/lib/_internal/js_runtime/lib/developer_patch.dart:321-334 | sdk/lib/_internal/wasm/standalone/developer_patch.dart:140-153 \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":"sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c63b376e9c639ad34818ece143ddb17dcad69fe0cd7d0e67c94a1ff3228cbda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 3): pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart:37-50 | pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart:31-43 | pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart:30-42 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart\u0060 and \u0060pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 45 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":"pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"c27bfb569530b4ff04ceabfc2d96d50f0e0fd877a814bd9d52baed7e907c60b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart:71-84 | pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart:56-69 | pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart:51-64 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/lsp/handlers/handler_format_range.dart\u0060 and \u0060pkg/analysis_server/lib/src/lsp/handlers/handler_formatting.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 45 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":"pkg/analysis_server/lib/src/lsp/handlers/handler_format_on_type.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4a3fdd430e2a974c172052a924c54dc5cd2a9d09a926f2f87131219f0cba3d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 3): pkg/analyzer/lib/src/dart/analysis/driver.dart:1788-1801 | pkg/analyzer/lib/src/dart/analysis/driver.dart:1871-1884 | pkg/analyzer/lib/src/dart/analysis/driver.dart:2071-2083 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":1788}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb66288ed9741502e0f694fe18e3a0cebe535ffc2fb53a807625323c34d1cd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/analyzer/lib/src/dart/analysis/index.dart:831-844 | pkg/analyzer/lib/src/dart/analysis/index.dart:1157-1170 | pkg/analyzer/lib/src/dart/analysis/index.dart:1235-1248 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f2d2471d05a59ae256118fa2d32b9c9122e6ec6a4e39d51e2de44d669fbe13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/analyzer/lib/src/fine/manifest_item.dart:251-264 | pkg/analyzer/lib/src/fine/manifest_item.dart:440-453 | pkg/analyzer/lib/src/fine/manifest_item.dart:1341-1354 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_item.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8d1bb63ce592ba91094c177cd1310a1a672120032047cd85e7e7d39639994c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 3): pkg/analyzer/lib/src/summary2/bundle_writer.dart:139-152 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:265-277 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:660-672 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"aad9035b4e7004ea4c502bff961cf451062649f78aa4830050bc59c4ead7ae4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/compiler/lib/src/js_model/env.dart:802-815 | pkg/compiler/lib/src/js_model/env.dart:1037-1050 | pkg/compiler/lib/src/js_model/env.dart:1083-1096 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"037599d9763d3b0bbcf6d39997b873a3ae276d89731ef5d7f652675a4e3790f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/dartdev/lib/src/commands/dart_mcp_server.dart:56-69 | pkg/dartdev/lib/src/commands/development_service.dart:49-62 | pkg/dartdev/lib/src/commands/tooling_daemon.dart:43-56 \u2014 before extracting anything, compare \u0060pkg/dartdev/lib/src/commands/development_service.dart\u0060 and \u0060pkg/dartdev/lib/src/commands/tooling_daemon.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 57 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":"pkg/dartdev/lib/src/commands/dart_mcp_server.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9d0c3d6eb3e6018cda525a57ac98d0b1a0a69c703cb181f2042a808fa2b16fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/front_end/lib/src/kernel/body_builder.dart:10108-10122 | pkg/front_end/lib/src/kernel/body_builder.dart:10376-10389 | pkg/front_end/lib/src/kernel/body_builder.dart:10454-10468 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10108}}}],"partialFingerprints":{"codehealthFindingId/v1":"32f58a003bf3244fd3ba8a7e00c94020e8f82405c756dd06cc5b63c55c8abf47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/front_end/lib/src/source/outline_builder.dart:1479-1492 | pkg/front_end/lib/src/source/outline_builder.dart:1575-1588 | pkg/front_end/lib/src/source/outline_builder.dart:2848-2861 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1479}}}],"partialFingerprints":{"codehealthFindingId/v1":"52541c79c871519aa5d8c2fc577bcae928ddebf0460d43b486691c1f14c96177"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6898-6911 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7106-7119 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7362-7375 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6898}}}],"partialFingerprints":{"codehealthFindingId/v1":"5341b504d59bc746cac4986b7eaed58719e8adf332875f2403441552175f5109"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:13826-13839 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:14112-14125 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:14259-14272 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13826}}}],"partialFingerprints":{"codehealthFindingId/v1":"c79f91a8aa62cca631b7cd1683aa4fb0c3e02deaf9ece95595618b289a244e9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/observatory/lib/src/elements/heap_snapshot.dart:672-685 | pkg/observatory/lib/src/elements/isolate/shared_summary.dart:63-76 | pkg/observatory/lib/src/elements/process_snapshot.dart:360-373 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b16bbaf5428d0abf28e9672be1176e0db041bc03f78dde75ffd3a7684c1623"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/observatory/lib/src/elements/instance_ref.dart:200-213 | pkg/observatory/lib/src/elements/instance_ref.dart:258-271 | pkg/observatory/lib/src/elements/instance_ref.dart:383-396 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_ref.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"9621e39510f4e85fb1eda84946238dced113369cefd71992a28cfabba1957ed1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2269-2282 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1318-1331 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2269}}}],"partialFingerprints":{"codehealthFindingId/v1":"b239eac01906039688e8551499ee50bc199cc9f1ab2bee3523d36aba02d4183b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2284-2297 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1333-1346 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2284}}}],"partialFingerprints":{"codehealthFindingId/v1":"40f818a049f684a2e96e3e4590f5725f35a5f5a2849a6baf39f8bdf5c56922a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1402-1415 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1498-1511 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1402}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8160579071323ca8ec6c4067ce15c7e07e5dd4b1556436a0eb1015ee55f6e11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2444-2457 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1655-1668 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2444}}}],"partialFingerprints":{"codehealthFindingId/v1":"47169e3d25d33f78f18dd2b6f3e1c5fcb1b8ed270450e27c90db95c91903ed3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1570-1583 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1709-1722 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1570}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cdce48aac44b3364dce66483ba1b7673683f43878500bbbbb86dc61f6d689f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1417-1430 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1749-1762 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1417}}}],"partialFingerprints":{"codehealthFindingId/v1":"208de59c1eff56bfddc37197a06ee047232c016c7420ebd9fa0771db9709e4ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:143-156 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:97-110 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"085558843710b5249f2d1a940f018c94358e8cb0232b3f1445c9ecaa3b2a115f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/tool/ast/generate.dart:214-227 | pkg/analyzer/tool/ast/generate.dart:253-266 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"b60f85b06897d488ed28a4257b68e17ec7422054ada0d179a6d2c1e4e403332e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/tool/ast/generate.dart:1202-1215 | pkg/analyzer/tool/ast/generate.dart:1232-1245 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":1202}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d3ff6dd4edbb257824ad0fb40cec1b41ef239cf6392009416631c96301f8295"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/dart2wasm/lib/async.dart:392-405 | pkg/dart2wasm/lib/sync_star.dart:295-307 \u2014 before extracting anything, compare \u0060pkg/dart2wasm/lib/async.dart\u0060 and \u0060pkg/dart2wasm/lib/sync_star.dart\u0060 as WHOLE FILES: this scan already matched 5 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":"pkg/dart2wasm/lib/async.dart"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"862687e0c412cda92b60f4c0532502b2a4d3c98e3003c24b173423313d61d17c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): pkg/dart2wasm/lib/code_generator.dart:2289-2300 | pkg/dart2wasm/lib/code_generator.dart:2407-2420 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":2289}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6904e0ee9edaa7c5f4ff878e5a74bdc27bc521ed0881f7547dde2386867e468"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/testcases/general/flutter_issue64155.dart:6-19 | pkg/front_end/testcases/nnbd/flutter_issue64155.dart:6-19 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/flutter_issue64155.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"d147c913e308d8064ab5b3f29f92d1cf990a38fad5f3a95607e9d2a14ae85050"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/testcases/general/type_variable_uses.dart:8-21 | pkg/front_end/testcases/general/type_variable_uses.dart:30-43 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/type_variable_uses.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"549dde4275177bfff86f71691d74666f2846111dca9b9e99c640cb34be39450b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/testcases/nnbd/pure_index_expressions.dart:23-36 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:56-69 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/pure_index_expressions.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bf768f69a7f260ba29ab93c55639cd8d3e59e50a85ca9b1849c7d3cc32002dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/base/incremental_compiler.dart:2158-2171 | pkg/front_end/tool/dart_doctest_impl.dart:1128-1141 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2158}}}],"partialFingerprints":{"codehealthFindingId/v1":"18caf3b52605e2c74e6b9bbc7110400c8426358109c75b9d06e9f180097e6afe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/kernel/lib/class_hierarchy.dart:1026-1039 | pkg/kernel/lib/class_hierarchy.dart:1041-1054 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1026}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f02bebf9eb65dded9bd2902e8f9239b48a65975ea02ca4ee21c1f48022c792"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/kernel/lib/type_algebra.dart:993-1006 | pkg/kernel/lib/type_algebra.dart:1344-1357 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":993}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec26c4cd9a5da6f87e3269893a495a5d12709059b4c349b3e99452f184d5baff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:162-175 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:162-175 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"02e8c426ebe6f6b9b2ab60153a5172ae09f5781ee971372a605ad806eb7ddee4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart:224-237 | sdk/lib/_internal/js_runtime/lib/math_patch.dart:216-229 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/math_patch.dart\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 144 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"c631d233e46308f9c76303bce1e310e5566dbc2f159f7b458a1b21ce82ca4bbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:505-518 | sdk/lib/_internal/js_runtime/lib/js_array.dart:691-704 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d225087184708722a26b5f529f3ff530f5fcef37df6cde10b94a1839e30ca3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_helper.dart:322-335 | sdk/lib/_internal/js_runtime/lib/js_helper.dart:650-663 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_helper.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_helper.dart\u0060 as WHOLE FILES: this scan already matched 6 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":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0d19fbac018d2f41bf8c0924626ccf74cd5770e09dad341e6b52f2fd4cf91dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart:196-209 | sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart:268-281 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad6d8ec20c64cfaa54803a8ae97e365edd91179b9bf0bda77109e4c482624d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:1807-1820 | sdk/lib/_internal/vm/lib/convert_patch.dart:1871-1884 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1807}}}],"partialFingerprints":{"codehealthFindingId/v1":"d00a1a204fe32c0022ab73e6a6f7fc769e8680db08c201654c070db2be1e1061"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/vm/lib/internal_patch.dart:121-134 | sdk/lib/_internal/wasm/common/internal_patch.dart:19-32 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/internal_patch.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"e25434e6d54aeaef400df034b209fe494c589dd2674c17acd4a674a004e8c98e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:614-627 | sdk/lib/_internal/wasm/common/compact_hash.dart:579-592 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91494daddc27073d68ff8990a0505f55df1fd7cf2f45ebfd5a5368699c434bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:224-237 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:166-179 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f643fe3590b091c5309a25f645727798d3cfaa358a06b2da1a14a2d5d88d86b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:259-272 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:200-213 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"01845fa4466d518fefbc7f8d8bd222403999af3fe807007dfd1caabcf9737e5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2367-2380 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2494-2507 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":2367}}}],"partialFingerprints":{"codehealthFindingId/v1":"75653a7c0412402cfb704557009ebd80ed2a5151f97ce7c4b2ac4fd619d8c60b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/code_generator.dart:717-730 | pkg/native_compiler/lib/back_end/arm64/code_generator.dart:747-759 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"171b30778d389a76182d933cc92da3b4a315a20482bd0de612acbfb1910b0a8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:580-593 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:629-642 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ea983868a4c9a46eedb7765c7d0780324015de1bb62a193803bcf9540797871"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart:57-70 | pkg/analysis_server/lib/src/services/correction/dart/add_missing_switch_cases.dart:137-148 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"38adc26b6aabdbfae335318f77adda1ee3e99cb8b82397d9a203cf6f0810cd4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/convert_to_in_body_constructor.dart:107-120 | pkg/analysis_server/lib/src/services/correction/dart/convert_to_in_body_constructor.dart:240-251 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_in_body_constructor.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"27889361e200dcf831dac6f1625f7a7547e0137752e6bd471aa32fa341c89e75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart:182-195 | pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart:238-251 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"c00ea0ae2023df6dad74806b590a44e4a1e388e398612d1f26904dddc4d79721"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart:159-172 | pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart:213-226 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7491f9994cceadf107e70084767df131f2368af4e1e50e34091549bd0ad5937"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart:167-180 | pkg/analysis_server/lib/src/services/correction/dart/create_setter.dart:61-74 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_getter.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"41fbd3243e5125e2acbac129898f785aa09ed56b678a75b28dcaf9c33954e6cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:394-407 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:435-448 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"2473d171847efee97d94356b1da67594b539ff62690724f5b8eb0a818aff062e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/use_eq_eq_null.dart:25-38 | pkg/analysis_server/lib/src/services/correction/dart/use_not_eq_null.dart:25-38 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/use_eq_eq_null.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a0637710908f7e97742c348a4eaae651452c6381c6a9117f4887108e4c849c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/analyzer/lib/src/dart/analysis/library_context.dart:579-591 | pkg/analyzer/lib/src/dart/analysis/library_diagnostics.dart:55-68 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_context.dart"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"660581e3969226f593d3f6a7161e6ab5ca771d91c7869b1c058c5a8957ee8185"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:7864-7877 | pkg/analyzer/lib/src/dart/ast/ast.dart:7882-7895 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7864}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac576f5c18fc21313bc569b17808c3e250297ce6407551a29e0a07aea8ddd19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:24424-24437 | pkg/analyzer/lib/src/dart/ast/ast.dart:37143-37156 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24424}}}],"partialFingerprints":{"codehealthFindingId/v1":"e44d14de52f00b3900bd2e36af42e5e5d2ec0d36e231366835957faf2112eac3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:25572-25585 | pkg/analyzer/lib/src/dart/ast/ast.dart:26226-26239 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25572}}}],"partialFingerprints":{"codehealthFindingId/v1":"342b22856372f44f8649b3fc4aecaabe17e554cbe5ddb5cc4f8dbfca5f800423"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:34369-34382 | pkg/analyzer/lib/src/dart/ast/ast.dart:50748-50761 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":34369}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9d4dc36b0534fa6e2279f77a8033a7af79f32ae6967e014ad397668087c9066"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:34624-34637 | pkg/analyzer/lib/src/dart/ast/ast.dart:36447-36460 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":34624}}}],"partialFingerprints":{"codehealthFindingId/v1":"1558d4c8a3d7a6f2632df1c94b58e6bfe954958d5409f649f841de1cc2218658"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:43649-43662 | pkg/analyzer/lib/src/dart/ast/ast.dart:43668-43681 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":43649}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9f238c564796f7536d81b48c9d17f427e73b4e24b407bce26c289332f4acce9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:56004-56017 | pkg/analyzer/lib/src/dart/ast/ast.dart:56022-56035 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":56004}}}],"partialFingerprints":{"codehealthFindingId/v1":"24ae47cf24cb99fb40beda0bc556fbfc6f82d7eac74968ce36345ebbca736a14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart:135-148 | pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart:452-465 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3909a47b6cf5b58dcbdb7554162ee0c1c3d371ee31e907cf721c859e903f370"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:232-245 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:575-588 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fe48bf14a81d586acc6706290203bc5416e61bf7835f4762d6a82c8208ce2e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:301-314 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:361-374 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b62c4a093a0db0ee59d6ccb0c3392dce33150dfbaac6ee4c5517a351ca5c0aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/error/inheritance_override.dart:85-98 | pkg/analyzer/lib/src/error/inheritance_override.dart:128-141 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c3a7452fd50a8ad07ceab7acdd902d821b6a328e2d75019575356e7d2246350"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/analyzer/lib/src/generated/error_verifier.dart:1005-1017 | pkg/analyzer/lib/src/generated/error_verifier.dart:1136-1149 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":1005}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfc66ac033cf2551b5199c2afb375e1dd5abb0368365e96c131621beb75933b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): pkg/analyzer/lib/src/generated/exhaustiveness.dart:167-178 | pkg/front_end/lib/src/kernel/exhaustiveness.dart:536-549 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/exhaustiveness.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"00af4cebb24fe646c7d21486b1a3b00de74ed9aa46e37f0c796bd1f365263c7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/generated/resolver.dart:4689-4702 | pkg/analyzer/lib/src/generated/resolver.dart:4841-4854 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":4689}}}],"partialFingerprints":{"codehealthFindingId/v1":"643714306e676bba303a72360ade31b5157b4aa6cf86d567af2f7647b62c8022"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/analyzer/lib/src/summary2/element_builder.dart:1352-1364 | pkg/analyzer/lib/src/summary2/element_builder.dart:1663-1676 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1352}}}],"partialFingerprints":{"codehealthFindingId/v1":"99b554b276778f5e7724e2331e6a6eeb5cef74d99abcd7309e9c216b3800ed69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analyzer/lib/src/summary2/element_builder.dart:1813-1826 | pkg/analyzer/lib/src/summary2/element_builder.dart:1955-1968 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1813}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b13165149cd52ea47f9c1dd91705fec7fe8ff53e32ce5be63ae320a9c387225"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/compiler/lib/src/inferrer/builder.dart:1195-1207 | pkg/compiler/lib/src/inferrer/builder.dart:1212-1225 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1195}}}],"partialFingerprints":{"codehealthFindingId/v1":"3354cef505e7e5d4e62e3257c2591bf3a59255364a8b175ac5d09098a2996a5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart:315-328 | pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart:409-422 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"47f708d99cf38f6ced04d803fffdd0fca0dffc7e043899b26ab69fceb85f02c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/compiler/lib/src/js_backend/string_reference.dart:386-398 | pkg/compiler/lib/src/js_backend/type_reference.dart:451-464 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/string_reference.dart"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b6176a4f7b9d840df0cbecd1352f4532146a5a239597d7bebd9e7be413519f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:664-677 | pkg/compiler/lib/src/kernel/element_map_impl.dart:336-349 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac145579ee9dcf45f5b83d930cfc8f7180d0b9096ac273399bfaa8168cdb3f66"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart:1451-1464 | pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart:1546-1559 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":1451}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad16f136c48906b9329a7269348e6246260aa2875c91d11ab79ea7275b15d226"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/dartdev/lib/src/commands/compile.dart:307-320 | pkg/dartdev/lib/src/commands/compile.dart:437-450 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"000c3e297d4fda7e6cde71bd5f43bb45a024c69538d5efd08f167f736721ab6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:1215-1228 | pkg/js_ast/lib/src/builder.dart:1063-1076 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1215}}}],"partialFingerprints":{"codehealthFindingId/v1":"344eb4f6253ca462a3670f77112dcee47371dbdfdf7f1d193ef58e0aa80ff48c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:1245-1258 | pkg/js_ast/lib/src/builder.dart:1091-1104 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c74cb832ceac508397a384499a2552dfe818e1dabbd312022d5a3e5076a57c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3454-3467 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:3981-3994 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3454}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e16f189705c1d57691c07cff1c4c8106dc1e08bdebe1b3f5ade83169de253d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5835-5848 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6490-6503 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5835}}}],"partialFingerprints":{"codehealthFindingId/v1":"288a99c5c6d33de31a041802423d687abcf17ff1a5b1e71b885bc4fc0a9893e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/front_end/lib/src/builder/named_type_builder.dart:1180-1192 | pkg/front_end/lib/src/builder/named_type_builder.dart:1208-1221 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcdd6fea499a30b70185c4769aefa99df1b415b0244b07da13d8130f13264098"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/front_end/lib/src/codes/type_labeler.dart:518-530 | pkg/front_end/lib/src/codes/type_labeler.dart:536-549 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19285748b9b8df469943d2d2473e8f4f4c679128ddaa54b9c36fa5272c212d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_class_builder.dart:65-78 | pkg/front_end/lib/src/dill/dill_class_builder.dart:174-187 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"2201a24287184ce6d7dbe064bc72892c7601a28672de1852eb03b987d7b4e4e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:124-137 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:301-314 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"e636888c21a7b086ce613771629df35233c2505522e0215405b4300dc70e52cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:124-137 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:140-153 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f282d9b887cfc92981ccf8b9b472ba1c31c1f736ec3182880d76e7995ff9b7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/kernel/collections.dart:228-241 | pkg/front_end/lib/src/kernel/internal_ast.dart:7710-7723 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/collections.dart\u0060 and \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 73 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":"pkg/front_end/lib/src/kernel/collections.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"326d48980fd6c3bd2a9539b2563bc8b920dd0681fd6e77c7cf387ede4d639a28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/kernel/expression_generator.dart:2899-2912 | pkg/front_end/lib/src/kernel/expression_generator.dart:3372-3385 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":2899}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b2ed17f6047c6f75c4386fa38580059c1c5b887644d3974c138ecc0bcbca12b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/class_member.dart:603-615 | pkg/front_end/lib/src/kernel/hierarchy/class_member.dart:1024-1037 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bbb7a82bd22cfcdb5afacdde31c6856391dec10f66f7b0f1fd60bd25dd29d9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:193-206 | pkg/front_end/lib/src/kernel/internal_ast.dart:7476-7489 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aebd4af94f3ef280e18cf11efce465d1a3fcf0aad8f053c91e224400818841b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/kernel/kernel_target.dart:1079-1092 | pkg/front_end/lib/src/kernel/kernel_target.dart:1099-1112 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1079}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0665fc5484362df1397c2c86231de6644a58ba0af937d28e0b01ef1f0506e09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/testing/id_testing_utils.dart:844-857 | pkg/front_end/lib/src/testing/id_testing_utils.dart:872-885 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_testing_utils.dart"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f1b74566da9bd950b9402f8f02744c6e32131b58656f6e3a96ecc5328398b97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1039-1052 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1590-1603 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1039}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f53d15340b239c918ccc3457aba76ecc72bf7b8c2f927c258e72c11447d5cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:10741-10754 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:13319-13332 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":10741}}}],"partialFingerprints":{"codehealthFindingId/v1":"50669a70ba94d341e8e9f13f05e2f298d2a019275d4af26217c43c498a116a6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/kernel/lib/src/ast/expressions.dart:2659-2672 | pkg/kernel/lib/src/ast/expressions.dart:2763-2776 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2659}}}],"partialFingerprints":{"codehealthFindingId/v1":"158965f48f3ce7d6585a63e697d426c6c127412de30c76d062f99a4dd74daf05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/kernel/lib/src/ast/patterns.dart:2006-2019 | pkg/kernel/lib/src/ast/statements.dart:892-905 \u2014 before extracting anything, compare \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 and \u0060pkg/kernel/lib/src/ast/statements.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":2006}}}],"partialFingerprints":{"codehealthFindingId/v1":"47b49d399ee5ae1383db874f528cbf6e2e51056ad3bd73d93a45b00818951f4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/observatory/lib/src/elements/field_ref.dart:59-71 | pkg/observatory/lib/src/elements/field_view.dart:108-121 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/field_ref.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c63a1c21d219a5006c3e783f1ff8e74028ed477d8a06a7e573491a0691726fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:886-899 | pkg/observatory/lib/src/elements/heap_snapshot.dart:908-921 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d4e1400199def34e1d5584ed001002f0cc12137b1fe1a0694023bf24d3f0ae9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:996-1009 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1023-1036 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":996}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa2dc73dcdcf9141a68104cb162e54f0dce35f8132d6a3b4c3536923fbe5e1b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate/location.dart:68-81 | pkg/observatory/lib/src/elements/isolate/location.dart:106-119 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate/location.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"9112289b9b1dead49a4415476c78be8b701d589f7efa5cc94e36d7fb8fca221b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/observatory/lib/src/elements/script_inset.dart:413-425 | pkg/observatory/lib/src/elements/script_inset.dart:428-441 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"89577146a73cad8e2293fb358cb0a393ca2897587eb55119d13e66c9e7ecad4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/observatory/lib/src/elements/timeline_page.dart:184-197 | pkg/observatory/lib/src/elements/timeline_page.dart:199-213 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/timeline_page.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"810331f1109ce89d43a012348564e2c6ae8a8e5ce4105aae99cf1a24cd32009d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/observatory/lib/src/sample_profile/sample_profile.dart:155-167 | pkg/observatory/lib/src/sample_profile/sample_profile.dart:474-487 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/sample_profile/sample_profile.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"35901cac03a2abc572b7116cacc1280110c10f3adff60358d37abe9b0756d095"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13\u201314 lines \u00D7 2): pkg/wasm_builder/lib/src/ir/element.dart:51-64 | pkg/wasm_builder/lib/src/ir/element.dart:113-125 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/element.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a9fbc0167a72bf7e41c25688144f3955dd0182543ddbbca1bed1265c75d505b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 5): sdk/lib/_internal/vm/lib/typed_data_patch.dart:515-527 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:858-870 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:976-988 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1319-1331 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1662-1674 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca8cff7786565a65a65bf02905975ddab860e7d8318221e7904a6f1833282061"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 5): sdk/lib/_internal/vm/lib/typed_data_patch.dart:546-558 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:889-901 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1007-1019 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1350-1362 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1693-1705 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"1778675869dab273e05f18360571d8dfc8a0099fc732bf03aa5c8ba24c8f5608"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 5): pkg/analyzer/lib/src/fine/library_manifest.dart:2007-2019 | pkg/analyzer/lib/src/fine/library_manifest.dart:2033-2045 | pkg/analyzer/lib/src/fine/library_manifest.dart:2059-2071 | pkg/analyzer/lib/src/fine/library_manifest.dart:2085-2097 | pkg/analyzer/lib/src/fine/library_manifest.dart:2111-2123 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":2007}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc902e45f04de3d22c58ebc0fc161a82edd07c7e9709647b2af683cce411fe46"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 5): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1705-1716 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2453-2464 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8637-8649 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8833-8845 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:9100-9112 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1705}}}],"partialFingerprints":{"codehealthFindingId/v1":"31a0d177f05b73ea99ecc55fafa484577e0769064aac3af94dd0ee1c4a557959"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:165-177 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:257-269 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:294-306 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart:386-398 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c9ddd86df1121becf7ab5a6b99b08ec40a48e0c2aef420caf6b658b364c5195"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): pkg/front_end/testcases/general/pure_index_expressions.dart:32-44 | pkg/front_end/testcases/general/pure_index_expressions.dart:63-75 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:41-53 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:74-86 \u2014 \u0060pkg/front_end/testcases/general/pure_index_expressions.dart\u0060 and \u0060pkg/front_end/testcases/nnbd/pure_index_expressions.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 7 separate duplicated blocks between them, totalling at least 89 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/pure_index_expressions.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"9081660a33f5ae9d53ffb130a0806fec417a6226527ce04b0767240c7a4318ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart:782-794 | sdk/lib/_http/http_impl.dart:1120-1132 | sdk/lib/_internal/vm_shared/lib/string_buffer_patch.dart:102-114 | sdk/lib/io/io_sink.dart:298-310 \u2014 before extracting anything, compare \u0060sdk/lib/_http/http_impl.dart\u0060 and \u0060sdk/lib/io/io_sink.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"772f7ab7ce3fea3a32d95bdb923e0d20b55d45333a68990bb21d425456059361"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:6175-6187 | pkg/analyzer/lib/src/dart/ast/ast.dart:14684-14696 | pkg/analyzer/lib/src/dart/ast/ast.dart:15420-15432 | pkg/analyzer/lib/src/dart/ast/ast.dart:57207-57219 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6175}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb4f64daff2f1cdc32bc5e1ec79dfde6c613ea029eef44b764cad1fd91046da5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:6242-6254 | pkg/analyzer/lib/src/dart/ast/ast.dart:14758-14770 | pkg/analyzer/lib/src/dart/ast/ast.dart:15487-15499 | pkg/analyzer/lib/src/dart/ast/ast.dart:57278-57290 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6242}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f080dc6ffa9b04e205eb4354aec2e0255c503df79f982c42eb6370632c2ba70"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): pkg/analyzer/lib/src/summary2/library_builder.dart:463-475 | pkg/analyzer/lib/src/summary2/library_builder.dart:482-494 | pkg/analyzer/lib/src/summary2/library_builder.dart:543-555 | pkg/analyzer/lib/src/summary2/library_builder.dart:562-574 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/library_builder.dart"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"9878a7f5dfbec5942fb7ebc7a47fc8e3ba2e640689819f083cc207885189aa37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 4): sdk/lib/vmservice/devfs.dart:226-238 | sdk/lib/vmservice/devfs.dart:283-295 | sdk/lib/vmservice/devfs.dart:340-352 | sdk/lib/vmservice/devfs.dart:400-412 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/devfs.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9992df762e8cd9f9dd7d450be1f8a28f3c40b8c3ea8e36b70453d184cad3bae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:2107-2119 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:2125-2137 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:3030-3042 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":2107}}}],"partialFingerprints":{"codehealthFindingId/v1":"4800c3c7eef6766adb7754eb45dde256992fecf64526abd77a955c3167289aba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:366-378 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:362-374 | sdk/lib/_internal/wasm/common/io_patch.dart:362-374 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee1058af8e36e85687f6116dc133c0a3ecbbcf354718ee082c014558de57ddc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:380-392 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:376-388 | sdk/lib/_internal/wasm/common/io_patch.dart:376-388 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"652234f325034fe599fdd06ed1e73fec22e8a80c64af12f8cf98f97bc48e6c4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:389-401 | sdk/lib/_internal/js_runtime/lib/js_array.dart:493-505 | sdk/lib/collection/list.dart:388-398 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bda60355786df52ad27b0dfd25df6354c05d6007b46e6e94044fc5e6586ec0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): sdk/lib/_internal/wasm/js/string_patch.dart:55-67 | sdk/lib/_internal/wasm/js/string_patch.dart:106-118 | sdk/lib/_internal/wasm/standalone/string_patch.dart:68-80 \u2014 \u0060sdk/lib/_internal/wasm/js/string_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/string_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 129 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js/string_patch.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"ace9958c9b374eb62165100ea881bed1801e2655f28613f6a7e48ce4312761d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201313 lines \u00D7 3): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1748-1757 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2647-2659 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2736-2748 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":1748}}}],"partialFingerprints":{"codehealthFindingId/v1":"e15c00a2db10d95c77e6d52bccada814334c3f6a2b93f72eff41c47c6a48c85e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): pkg/analysis_server/lib/protocol/protocol.dart:179-191 | pkg/analysis_server_client/lib/src/protocol/protocol_base.dart:163-175 | pkg/analyzer_plugin/lib/protocol/protocol.dart:193-205 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/protocol/protocol.dart\u0060 and \u0060pkg/analysis_server_client/lib/src/protocol/protocol_base.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 53 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/protocol/protocol.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c574dc56d000ac842871fe92e377e0b3e5fcfe923c81426e8af9f1837051d3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): pkg/analyzer/lib/src/dart/ast/ast.dart:9779-9791 | pkg/analyzer/lib/src/dart/ast/ast.dart:14090-14102 | pkg/analyzer/lib/src/dart/ast/ast.dart:27850-27862 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":9779}}}],"partialFingerprints":{"codehealthFindingId/v1":"351b94b433aa05eb671911a26547b82db958f5286d4862926207b5508e999d7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): pkg/analyzer/lib/src/dart/ast/ast.dart:28047-28059 | pkg/analyzer/lib/src/dart/ast/ast.dart:34809-34821 | pkg/analyzer/lib/src/dart/ast/ast.dart:35422-35434 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":28047}}}],"partialFingerprints":{"codehealthFindingId/v1":"13c2e565d9189e168751f50028cc9f80a17e601a0dca3df58197763776b9671f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 3): pkg/analyzer/lib/src/summary2/bundle_reader.dart:260-272 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:461-472 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:1069-1081 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"6207dd30a5609a51b0a17dd6ef79dfa4ee8297a655a2d134f7d95d00f11fbc20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): pkg/analyzer/lib/src/summary2/bundle_reader.dart:466-478 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:622-634 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:1075-1087 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7111a7e6d34542f2bbfb9094b4748642903b274cb2828aa7d4938709c1e42e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): pkg/front_end/lib/src/kernel/expression_generator.dart:2866-2878 | pkg/front_end/lib/src/kernel/expression_generator.dart:3337-3349 | pkg/front_end/lib/src/kernel/expression_generator.dart:3695-3707 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":2866}}}],"partialFingerprints":{"codehealthFindingId/v1":"52204bb0c7407e56b318ae61e1302aef3cb79b611ebc907d0f7ff57c211d7e18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1038-1050 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1589-1601 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1900-1912 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"c615e351d812c9158b942d6fa3eb80b54624ba8e5d9bdc63f213626f9875375b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6428-6440 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6532-6544 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6774-6786 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6428}}}],"partialFingerprints":{"codehealthFindingId/v1":"92e285d6f7264e449f0b52a5e9ce43862b3b6f4a1e41b449c6123256712356db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:8520-8532 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8721-8733 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8979-8991 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8520}}}],"partialFingerprints":{"codehealthFindingId/v1":"d508c3705f04eb90c25f14089e649fdf6a56e20e8ba717594083f3c0ff9e1867"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1519-1531 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1484-1496 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee122a183b681ce9fd67e2a4b90b18bf05ef37a703565a7bfe3ba666d508319"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2616-2628 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:2126-2137 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2616}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb40440a482496d0d92033f128a4edb2c3bac06659fe41991f794a1eab7faaa7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2570-2582 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2646-2658 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2570}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e570d4a8822dfbb8912167d61bf5da76dc07641d61b91a0d98ce791afb5bf7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dart2bytecode/lib/declarations.dart:947-959 | pkg/dart2bytecode/lib/declarations.dart:1292-1304 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":947}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a36067c59f6687d2b5c09c83853485199824caff84f8b69cc9c03c4db82a67c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dart2bytecode/lib/declarations.dart:992-1004 | pkg/dart2bytecode/lib/declarations.dart:1312-1324 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca13a6b5a457e4088e22fa15c9fef2d56c749b830f203eeed6c09ed92bb048cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dart2bytecode/lib/object_table.dart:1949-1961 | pkg/dart2bytecode/lib/object_table.dart:1965-1977 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/object_table.dart"},"region":{"startLine":1949}}}],"partialFingerprints":{"codehealthFindingId/v1":"999ab932a38ea2d601e27325cefcd3cbf009a320cc923855e81ca5d501389ed7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dart2wasm/lib/code_generator.dart:1458-1470 | pkg/dart2wasm/lib/state_machine.dart:985-997 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"50974d2f606f9740130aa308818369feea69a7a00ab9820423a7d8b8aa526f9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dart2wasm/lib/constants.dart:1188-1200 | pkg/dart2wasm/lib/constants.dart:1226-1238 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1188}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f812c34d7c351ca6b8011fffc5027057a8f425c24acfbde88b5d86e35c0f396"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dart2wasm/lib/transformers.dart:1292-1304 | pkg/dart2wasm/lib/transformers.dart:1445-1457 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/transformers.dart"},"region":{"startLine":1292}}}],"partialFingerprints":{"codehealthFindingId/v1":"f80d4fb469caa14474f20b989aaa324a316fd39878e5e032f753ae9152d86148"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/testcases/general/pure_index_expressions.dart:16-28 | pkg/front_end/testcases/general/pure_index_expressions.dart:47-59 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/pure_index_expressions.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"99202ac7a21859e9a921b994f9be2329382692f4c41947585c234e1bc0b6fd3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/testcases/general/pure_index_expressions.dart:94-106 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:107-119 \u2014 \u0060pkg/front_end/testcases/general/pure_index_expressions.dart\u0060 and \u0060pkg/front_end/testcases/nnbd/pure_index_expressions.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 7 separate duplicated blocks between them, totalling at least 89 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/pure_index_expressions.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"f43520f7169ff6a51b438b4524560d3ae0252b5d5bb305a3be1aad3c549a3779"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/testcases/general/pure_index_expressions.dart:127-139 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:142-154 \u2014 \u0060pkg/front_end/testcases/general/pure_index_expressions.dart\u0060 and \u0060pkg/front_end/testcases/nnbd/pure_index_expressions.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 7 separate duplicated blocks between them, totalling at least 89 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/pure_index_expressions.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed4416fc80435b42c874f2801679a3332b85db2d2f9f86df9bf4f9e6fa9c4e2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/testcases/general/pure_index_expressions.dart:167-179 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:184-196 \u2014 \u0060pkg/front_end/testcases/general/pure_index_expressions.dart\u0060 and \u0060pkg/front_end/testcases/nnbd/pure_index_expressions.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 7 separate duplicated blocks between them, totalling at least 89 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/pure_index_expressions.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd6ffc7dbc7bb71ccdcc0d18f084dc78e78ec1d5a382ee3e2a333a722be1db09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/testcases/general/pure_index_expressions.dart:198-210 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:217-229 \u2014 \u0060pkg/front_end/testcases/general/pure_index_expressions.dart\u0060 and \u0060pkg/front_end/testcases/nnbd/pure_index_expressions.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 7 separate duplicated blocks between them, totalling at least 89 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/pure_index_expressions.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eb75f36f7072c105506a1b436bc17048edaa93519c060253efe1ab7cabadbe3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_index_full.dart:34-46 | pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart:31-43 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_index_full.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"b288afbd13e4ed5235bfdc66e0da501e51f10811d7e860a668a0dc6cb7669c2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/tool/bench_maker.dart:115-127 | pkg/front_end/tool/bench_maker.dart:134-146 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/bench_maker.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f53fa4eec041136777194a79408b0ea231664ee9b8f23d7c47361ff2013ac39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/kernel/lib/type_checker.dart:660-672 | pkg/kernel/lib/type_checker.dart:688-700 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad06f5af0467e1cc67467d67a2cd983629898d71a85b1ee22b9584f060197312"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): tools/generate_uri_parser_tables.dart:445-457 | tools/generate_uri_parser_tables.dart:460-472 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/generate_uri_parser_tables.dart"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a33bab75728d447142d790ae17f2a02fa8d0e2ea3635a2809b7d909cb041eb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart:928-940 | sdk/lib/_internal/js_runtime/lib/async_patch.dart:646-658 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/async_patch.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":928}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1191f4118ecbb6251cb267f8c6622864e57f895f62af3663d19cebf6df93e88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:253-263 | sdk/lib/_internal/js_runtime/lib/js_array.dart:351-363 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"f24eaa0a5d45327f7d583da4fbe41a187492c0cff6a2af1f4fcff7796386424c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:288-298 | sdk/lib/_internal/js_runtime/lib/js_array.dart:392-404 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"871c0dc151402e8884c2a6722ed6d1a99dafe4a799ed61e807773a0594670698"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:517-529 | sdk/lib/_internal/js_runtime/lib/js_number.dart:608-620 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"3918d2691280e7498a1254ab4395deb8817be5dcf9192649aa47ff85b8005c37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_string.dart:337-349 | sdk/lib/_internal/js_runtime/lib/js_string.dart:317-329 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_string.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_string.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 90 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_string.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a6210343c52bd3c96fbb0b68bb00a3c2ecc999b4c5d525a0ee53011f625e2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:716-728 | sdk/lib/_internal/js_runtime/lib/collection_patch.dart:1180-1192 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"4450ad6acf1b5dcd2b26ed393ee43e97cf10d80ff3468bf068bc162a4f8cb48e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/core_patch.dart:672-684 | sdk/lib/_internal/wasm/common/errors_patch.dart:190-202 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/core_patch.dart"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"16a94e1aed516b2842dfeeaeed77fd7d112645d5cd3c02d7a9257e6797aefcee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:2055-2067 | sdk/lib/_internal/wasm/common/typed_data.dart:2926-2938 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":2055}}}],"partialFingerprints":{"codehealthFindingId/v1":"e93e9b3133c247b1f78519c5b2fe3cd6fcd2b9160536f655c7af19db8ed6cd3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): sdk/lib/_internal/wasm/js/string_patch.dart:23-35 | sdk/lib/_internal/wasm/standalone/string_patch.dart:21-33 \u2014 \u0060sdk/lib/_internal/wasm/js/string_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/string_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 129 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js/string_patch.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd410caff178db76596ed2047f8f46ceff194bdf2b830c9be848cd9cf608f060"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): sdk/lib/_internal/wasm/js/string_patch.dart:39-51 | sdk/lib/_internal/wasm/standalone/string_patch.dart:34-46 \u2014 \u0060sdk/lib/_internal/wasm/js/string_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/string_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 129 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js/string_patch.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bab73aa23ad9922ccffc32d780d6102c9e9e5bb4e2f68e9dcdef6f37894516e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:285-297 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:228-240 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc5cc1614be8fc188c8d870c7c47917d40d7f2de647084b210814ee29040dc25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/options.dart:197-209 | pkg/_fe_analyzer_shared/lib/src/util/options.dart:222-234 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/options.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"a962d005c28cd1196c5ca2c397f03bb1ede6d0954da0a538c122ac2ab8c1b7b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/lib/src/handler/legacy/edit_get_postfix_completion.dart:21-33 | pkg/analysis_server/lib/src/handler/legacy/edit_get_statement_completion.dart:21-33 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_get_postfix_completion.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebfe39420209759b3a9c18c9dd8658fd7a2d401f218e80bad3d897f2c67c7ad1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/analysis_server/lib/src/handler/legacy/edit_organize_directives.dart:40-51 | pkg/analysis_server/lib/src/handler/legacy/edit_sort_members.dart:40-52 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_organize_directives.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a0701b3823468a3b5cc13b8382a85c3bf5e3bc58166ab511b6c780e3d7bbaf1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart:225-237 | pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart:251-263 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac18093a985f430600fe0e2e2b17e742aa85030a85fc143e97aee8e34cb277c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:2871-2883 | pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:3062-3074 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2871}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad9075f1563dd3a5195e0556b1b1cf460b060b7ffe976c5cf70d8ba8b41076ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart:63-75 | pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart:89-101 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"50262ca6ca276896e9a7b060e3f93404c12559ec4aceb32b020de7a2afe055fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart:100-112 | pkg/analysis_server/lib/src/services/correction/dart/add_missing_switch_cases.dart:186-196 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d2e9d8e8bc569c8ab7aaa5afc8a291ac7f065be66817aeb0eb1b2081c561c65"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/create_class.dart:180-192 | pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart:130-142 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/correction/dart/create_class.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 38 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":"pkg/analysis_server/lib/src/services/correction/dart/create_class.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"a721a1415ddfc0f874c19155bad622cfb4bda47b48786e489ae9ad3ac65b2187"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart:291-303 | pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart:355-367 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4339954a74b858adbf5377b68662f162e86d68dc079e139a62a07b907b058f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/move_annotation_to_library_directive.dart:180-192 | pkg/analysis_server/lib/src/services/correction/dart/move_doc_comment_to_library_directive.dart:51-63 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/move_annotation_to_library_directive.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce216e873abbaa703b3dd0f9375e17a6d2ca3b58583e6ca4bb55ca30f57086e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart:144-155 | pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart:182-194 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"75d4514949f547b1696e3812f0c60cf36a87c9133cad7db7112d11e9b885f56f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/add_constructor_name.dart:124-136 | pkg/analysis_server/lib/src/services/refactoring/remove_constructor_name.dart:71-83 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/add_constructor_name.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b2b9d20ee715b9bfb3bd7554e05deb60dd972372e11f71337b185b20f8df283"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/add_import_prefix.dart:131-143 | pkg/analysis_server/lib/src/services/refactoring/remove_import_prefix.dart:67-79 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/add_import_prefix.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa1068e37cc685b805f08be778e64d1c547932cc7a816fd7af8fe2f3a451310"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/analysis/results.dart:313-325 | pkg/analyzer/lib/src/dart/analysis/results.dart:469-481 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/results.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"10d284f711b2050439688de9ca215bb1670c840a0aee1f5baf6b91090c59c9be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:1837-1849 | pkg/analyzer/lib/src/dart/ast/ast.dart:33480-33492 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":1837}}}],"partialFingerprints":{"codehealthFindingId/v1":"58a79e24a4fc7970078a8271cd4e114ac7e6afa239a116b17644ff471c8030bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:2086-2098 | pkg/analyzer/lib/src/dart/ast/ast.dart:2377-2389 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":2086}}}],"partialFingerprints":{"codehealthFindingId/v1":"8505814918f157e7bee439e0f1c86c7daddc71f59ea68ad7f8db40f0745a1274"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:2142-2154 | pkg/analyzer/lib/src/dart/ast/ast.dart:2433-2445 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":2142}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a5f7bb004955284a6ac81d1b41d84170bd35409365d7f4b524aa3ac5a892d17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:2156-2168 | pkg/analyzer/lib/src/dart/ast/ast.dart:2447-2459 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":2156}}}],"partialFingerprints":{"codehealthFindingId/v1":"c950f3cdd701dac8508195fa34be96b1dd7411fe448633ec4fb5e75b575403d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:10433-10445 | pkg/analyzer/lib/src/dart/ast/ast.dart:10450-10462 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":10433}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e9e56ab3c2eae6f9991fdc303d518dcdbbf7a3baecb177fe553e5c9becac70f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:12951-12963 | pkg/analyzer/lib/src/dart/ast/ast.dart:39061-39073 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":12951}}}],"partialFingerprints":{"codehealthFindingId/v1":"187511be34f756afaca0d79c7a1e448b878e63b69d677c26090306a2fe5b3cfb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:24404-24416 | pkg/analyzer/lib/src/dart/ast/ast.dart:37122-37134 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24404}}}],"partialFingerprints":{"codehealthFindingId/v1":"a387d3f86b958bdebfb509e7544cafd4d6b2eb157f8144e9ddb74469a42f00bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:24926-24938 | pkg/analyzer/lib/src/dart/ast/ast.dart:42746-42758 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24926}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6c7742058063fca617f9d31761ac4a618072cd22a55b5f14cc361565ccd2e5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:35016-35028 | pkg/analyzer/lib/src/dart/ast/ast.dart:35629-35641 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":35016}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17b7f560ab36a74544144a0cd4f86e81de69ac418025d9c948c2c12d5c867c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:37926-37938 | pkg/analyzer/lib/src/dart/ast/ast.dart:37951-37963 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":37926}}}],"partialFingerprints":{"codehealthFindingId/v1":"11b310c7506acb31d0224b8afab27f56cbf833ff37c4aa6726edb202043051e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:43829-43841 | pkg/analyzer/lib/src/dart/ast/ast.dart:44408-44420 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":43829}}}],"partialFingerprints":{"codehealthFindingId/v1":"773eab4ed4658ad506023a250de425cff9911a510093076ac6136d43b2e26eae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:46787-46799 | pkg/analyzer/lib/src/dart/ast/ast.dart:46987-46999 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":46787}}}],"partialFingerprints":{"codehealthFindingId/v1":"203164554029eb21e7897e5cbc28d8015a35b5b104a642d47a825be4fbd96f67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:49316-49328 | pkg/analyzer/lib/src/dart/ast/ast.dart:52677-52689 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":49316}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae5199dccc65af434758fca5b5d89613c826252c2e98274a4d365687758b34e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:49372-49384 | pkg/analyzer/lib/src/dart/ast/ast.dart:52733-52745 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":49372}}}],"partialFingerprints":{"codehealthFindingId/v1":"186e24eaf018af5f860867d8d1852b7b69d31705dd9b04ecf40e2c8e023ba7de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:49386-49398 | pkg/analyzer/lib/src/dart/ast/ast.dart:52747-52759 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":49386}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd2533041b4632b938c14bd37261de92cdb81447ddaa4a6bb37388872026327c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:54444-54456 | pkg/analyzer/lib/src/dart/ast/ast.dart:54461-54473 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":54444}}}],"partialFingerprints":{"codehealthFindingId/v1":"c62c36e1bd3ac91745d150ae6ab1358cda56eccd3c3061aa36c0ce8eae1eae98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:58616-58628 | pkg/analyzer/lib/src/dart/ast/ast.dart:58634-58646 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":58616}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fdcdd401bdd644d3dcb84884173c383f8244eecbfedbf6520af9eda09414b21"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201313 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/replacement_visitor.dart:245-255 | pkg/analyzer/lib/src/dart/element/replacement_visitor.dart:330-342 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2c518e69757967729bb056fa9b06b2c043df5f90519129057ee1e50c95600ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:174-186 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:525-537 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"c082fdab2aae1c24ed57409567d95d2773e873f5f1cb72539cf4f549c8ea2184"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:787-799 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:865-876 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"b93b53ac7479a5be42c7883745055b763c2ebd887df999e7f5ffae536aae2caf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/error/annotation_verifier.dart:168-180 | pkg/analyzer/lib/src/error/annotation_verifier.dart:252-264 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"737bab430147eed6ece31b4c4cd23e8de0534287d46aed81d7e6f24fdc02a759"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/error/type_arguments_verifier.dart:104-116 | pkg/analyzer/lib/src/error/type_arguments_verifier.dart:178-190 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/type_arguments_verifier.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"509f136dd3f74f984841977b45f1ae91139f5fe50c3e71f6ceeb40869a93b845"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/fasta/ast_builder.dart:3842-3854 | pkg/analyzer/lib/src/fasta/ast_builder.dart:4038-4050 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":3842}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce4d4f14dae084aa1fac6eb5dee1f7a7ef4e325c77ceb022e90a3f8b7eb391c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/generated/ffi_verifier.dart:209-221 | pkg/analyzer/lib/src/generated/ffi_verifier.dart:1801-1813 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0a380d953f4452ab1d25c3a9d2e88cccb4f430fa02b9c2961cb60711e6cad1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/generated/resolver.dart:2261-2273 | pkg/analyzer/lib/src/generated/resolver.dart:3760-3772 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":2261}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e49ab6a36f4d26d31e5fa0acc1fe15e92787efb1dbd6d8f54cd6a25e00628f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_writer.dart:158-170 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:281-293 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc612b9adc8049b6254d93161075e463800ce44c9a2908247c03ebb5787a9cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/analyzer/lib/src/summary2/informative_data.dart:179-191 | pkg/analyzer/lib/src/summary2/informative_data.dart:208-220 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"52585ce38b5a11c1328ba39530868369dc9e6216ce5cc6a153d37024d3be5505"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/compiler/lib/src/dump_info.dart:1281-1293 | pkg/compiler/lib/src/dump_info.dart:1350-1362 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1281}}}],"partialFingerprints":{"codehealthFindingId/v1":"838e72332fce5e613b7f70500a1837627611f760035fa41064a581be742366a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/compiler/lib/src/dump_info.dart:1866-1878 | pkg/compiler/lib/src/dump_info.dart:1953-1965 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1866}}}],"partialFingerprints":{"codehealthFindingId/v1":"56767421004b058dc3e46c22310177421cd948149e414ba2f8a86abdfb67db31"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/compiler/lib/src/inferrer/builder.dart:1229-1241 | pkg/compiler/lib/src/inferrer/builder.dart:1245-1257 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1229}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bb0492f6ef82f74f3e1c5812542365e93747df011ac3768ea5616f195d91fb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/compiler/lib/src/js/size_estimator.dart:588-600 | pkg/js_ast/lib/src/printer.dart:944-956 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/size_estimator.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 154 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"5097010d9fd7d07c472f53f882d8ba0e6edab7c57efc887be3efe8c2d32b4f2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/compiler/lib/src/js_backend/string_reference.dart:361-373 | pkg/compiler/lib/src/js_backend/type_reference.dart:430-441 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/string_reference.dart"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a06966ee339be006d93c537d7c6a0f256c4be4cbc3dfc8dd50a4a0c4f306f07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/compiler/lib/src/universe/codegen_world_builder.dart:529-541 | pkg/compiler/lib/src/universe/resolution_world_builder.dart:839-851 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/universe/codegen_world_builder.dart\u0060 and \u0060pkg/compiler/lib/src/universe/resolution_world_builder.dart\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. 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":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"5049a4c88e428e5b079ee14b35b6700bf720c8cf756759ef8a5a4671fbeeebfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart:55-67 | pkg/dds/lib/src/devtools/memory_profile.dart:60-72 \u2014 before extracting anything, compare \u0060pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart\u0060 and \u0060pkg/dds/lib/src/devtools/memory_profile.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 78 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"f450ca0a38574886c6f5de0fcd9288c087b8eb89bd050a7e8e4ca7dd4df076bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dartdev/lib/src/commands/fix.dart:152-164 | pkg/dartdev/lib/src/commands/migrate.dart:117-129 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/fix.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"c014af211dc890e570f64a00f4647e71e1e861e0faecaa5161b52657b1daa40f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dartdev/lib/src/processes.dart:23-35 | pkg/dartdev/lib/src/processes.dart:58-70 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/processes.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebe90fafd908cdf830a0eeddb2917d8678d332d20064b8a930522e9414769f28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:1038-1050 | pkg/js_ast/lib/src/builder.dart:858-870 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"7855ef18ed42a7338978f5dbe7163e85df12db89235897889d87f1a8f0d93514"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:501-513 | pkg/js_ast/lib/src/printer.dart:557-569 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"c300c5339d4f7a5b470c88a435936d2ac751975c109480aeb9162a3881b3118a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:1646-1658 | pkg/js_ast/lib/src/printer.dart:1756-1768 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1646}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4728f5d1c8316f7e8d40705522382720284d9d61a60803c48cb6fb36825c1cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:1909-1921 | pkg/js_ast/lib/src/printer.dart:2090-2102 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1909}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0165b0e579fa11bbc86ac4f51a7de290fc93934992e878691a9b37c77cd7094"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3158-3170 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:3672-3684 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3158}}}],"partialFingerprints":{"codehealthFindingId/v1":"e66f2b708c2d9ff8037fdc854e99fd001dd4d1c5ebcf8c02bf1411fb833b5ae8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3342-3354 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:3857-3869 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3342}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee515187ec3f1975527a5423fb615ae7c41815cec586ccba0a4bc2898b1f159"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_loader.dart:189-201 | pkg/front_end/lib/src/source/source_loader.dart:935-947 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_loader.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9cdd95cb043a5d0909d9267d31d4bbd69a81d8545cf892896748973a48ea058"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/fragment/factory/encoding.dart:748-760 | pkg/front_end/lib/src/fragment/factory/encoding.dart:762-776 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":748}}}],"partialFingerprints":{"codehealthFindingId/v1":"00f6b10053c053bc397c267ae3e612dd4433e75827a3eb076b69c34cc2db9c95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/fragment/getter/encoding.dart:557-569 | pkg/front_end/lib/src/fragment/setter/encoding.dart:575-587 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 15 separate duplicated blocks between them, totalling at least 276 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"107e335d09654f47a63cff7a152d545510c59acd33ad9455e15d960066df2ba2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/fragment/getter/encoding.dart:615-627 | pkg/front_end/lib/src/fragment/setter/encoding.dart:664-676 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 15 separate duplicated blocks between them, totalling at least 276 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba932dabf789fe3b4b345912fe5374d2488f7159270a7d7257aca6ed3ea9d18a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:6791-6803 | pkg/front_end/lib/src/kernel/body_builder.dart:6813-6825 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":6791}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c8f74860530cd65ffaf93c6804eb556bbabc4cbf2cbf1cd25243cfce921e0ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/kernel/collections.dart:187-199 | pkg/front_end/lib/src/kernel/internal_ast.dart:6563-6575 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/collections.dart\u0060 and \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 73 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":"pkg/front_end/lib/src/kernel/collections.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"c68418303c898b340cd36593e8c49cb7ecd7a8361563665b57b6bc8c27ff5fb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:4377-4389 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:4410-4422 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4377}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f92cea6d57d90da5818c33d053b213008a2d3f1ad17e23db20999f1ac91824b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:6694-6705 | pkg/kernel/lib/src/ast/types.dart:1565-1577 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":6694}}}],"partialFingerprints":{"codehealthFindingId/v1":"307887973980e52451bf3cf220d0b41dd957896c6d7a0d1b650f34498a7c160a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/front_end/lib/src/source/diet_listener.dart:750-762 | pkg/front_end/lib/src/source/diet_listener.dart:905-916 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"5578c37ddf373e21a1232715e3280149ad3e310aff62eaab0b2e55e3e3cceeae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:1055-1067 | pkg/front_end/lib/src/type_inference/collection_encoding.dart:1606-1618 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":1055}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae99f8d81bbc16ecada8ba39fda5ba12751a9b14c108fd0309281225985e1a44"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:3933-3945 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:4863-4876 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":3933}}}],"partialFingerprints":{"codehealthFindingId/v1":"65f9ffb65357f641e7c1ae50aaf41bc1012db0c2e158e76e7b892873368403c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/front_end/lib/src/type_inference/type_schema_environment.dart:105-117 | pkg/front_end/lib/src/type_inference/type_schema_environment.dart:136-147 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_schema_environment.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bec06679b94501084cac071d368261a98fce4e94191437bbf7edd2c08bb7752"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/kernel/lib/src/ast/constants.dart:440-452 | pkg/kernel/lib/src/ast/constants.dart:504-516 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee93f87b8aeea4fdb95d2b7d0489833b103d6102dfff742d22f46b8de738653"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/kernel/lib/src/ast/expressions.dart:1040-1052 | pkg/kernel/lib/src/ast/expressions.dart:1119-1131 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0c8e09b9f6017b2bc50c64299136e1606eb1e2c5053ff2fba92a608f5b74ea0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/linter/lib/src/rules/pub/depend_on_referenced_packages.dart:26-37 | pkg/linter/lib/src/rules/remove_deprecations_in_breaking_version.dart:37-49 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/pub/depend_on_referenced_packages.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"850644a3382f9d66c0d8ef96d28816f2265bacbb09d38195c89ec454e64929d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/observatory/lib/src/elements/allocation_profile.dart:467-479 | pkg/observatory/lib/src/elements/persistent_handles.dart:237-249 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"60bc10aabccec6c81840b35d5712222964514a72ec693fdf2a0018a0bbd36a75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/observatory/lib/src/elements/class_allocation_profile.dart:104-116 | pkg/observatory/lib/src/elements/cpu_profile.dart:139-151 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_allocation_profile.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"569c14d37863cbce41535215ea44f69ea42457bb346e5c5314527dda16cd68bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:164-176 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:185-197 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"d024d9da9fdf981eb64a032227619b0df6fddaa89513e1440367360f4aa6ebaf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/observatory/lib/src/elements/debugger.dart:220-232 | pkg/observatory/lib/src/elements/debugger.dart:257-269 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"e017771af05666b6fea61c3ab1b5e71c62fc486e1a04e6067d883ffc65b5e02b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:1285-1297 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1316-1328 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1285}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd0e78ae8f84e0ea0e23cec0b69b11dc5174bd0cd788253fda96bd8c2fb9f7e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201313 lines \u00D7 2): pkg/observatory/lib/src/sample_profile/sample_profile.dart:138-149 | pkg/observatory/lib/src/sample_profile/sample_profile.dart:454-466 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/sample_profile/sample_profile.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0e9103c282ae6120509e924e7543fcfcf1f3127bcf86d37f15f763584b76d3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/vm_service/lib/src/vm_service.dart:5178-5190 | pkg/vm_service/lib/src/vm_service.dart:5765-5777 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":5178}}}],"partialFingerprints":{"codehealthFindingId/v1":"74b5f1606181f6e27adfb1f19053e743ca80ddb79bbebb53222a203fcdfb923f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/vm/lib/transformations/type_flow/native_code.dart:152-164 | pkg/vm/lib/transformations/type_flow/native_code.dart:282-294 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/native_code.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a844a0411a26c5be2bca3c6aa1b3964c557e2b43f508b264d85f426337fb4de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/vm/lib/transformations/type_flow/transformer.dart:2434-2446 | pkg/vm/lib/transformations/type_flow/transformer.dart:2482-2494 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2434}}}],"partialFingerprints":{"codehealthFindingId/v1":"3650eda00f15170fd9e64c9d9ec68c3d94bca4ece5718bb088dabe7467bf1ed3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201313 lines \u00D7 2): sdk/lib/vmservice/running_isolates.dart:323-335 | sdk/lib/vmservice/running_isolates.dart:490-498 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/running_isolates.dart"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"a339ac2fdff342b2527f1ef7f5be47815fac8d9e5fc71c912841a5a7748a1a36"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 7): pkg/front_end/lib/src/type_inference/inference_visitor.dart:1420-1431 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1501-1512 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1763-1774 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1955-1966 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2045-2056 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2161-2172 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:2347-2358 \u2014 all 7 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"8566f4d86f1d95099d3836c90e9be3771cbbe887d82c2fd96940bbc7129d0a40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 7): pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:161-172 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:182-193 | pkg/observatory/lib/src/elements/heap_snapshot.dart:972-981 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1053-1062 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1080-1089 | pkg/observatory/lib/src/elements/process_snapshot.dart:458-467 | pkg/observatory/lib/src/elements/process_snapshot.dart:485-494 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe40f42549d62227a48d0aa659faceece5b5ae292e487653a79cbbb14de6cdf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 6): pkg/analyzer/tool/ast/generate.dart:398-409 | pkg/analyzer/tool/ast/generate.dart:475-486 | pkg/analyzer/tool/ast/generate.dart:552-563 | pkg/analyzer/tool/ast/generate.dart:634-645 | pkg/analyzer/tool/ast/generate.dart:727-738 | pkg/analyzer/tool/ast/generate.dart:895-906 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"86255f56f0b9dfe12b124ce0d7a054649f843be18a7f5edc4ae979f09edf327d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 6): pkg/analyzer/tool/ast/generate.dart:441-452 | pkg/analyzer/tool/ast/generate.dart:511-522 | pkg/analyzer/tool/ast/generate.dart:597-608 | pkg/analyzer/tool/ast/generate.dart:680-691 | pkg/analyzer/tool/ast/generate.dart:773-784 | pkg/analyzer/tool/ast/generate.dart:990-1001 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c5634833e4293815b2c1eba488b931ccd3d28af3e9d0a956dbea7aff07aa84e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 5): pkg/analyzer/lib/src/dart/ast/ast.dart:25646-25657 | pkg/analyzer/lib/src/dart/ast/ast.dart:25668-25679 | pkg/analyzer/lib/src/dart/ast/ast.dart:36879-36890 | pkg/analyzer/lib/src/dart/ast/ast.dart:37227-37238 | pkg/analyzer/lib/src/dart/ast/ast.dart:37254-37265 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25646}}}],"partialFingerprints":{"codehealthFindingId/v1":"a60ea2cd3eddee3f0f8bf2a1bb3636ec05762534b1f66a4666843688aa100b47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 5): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6424-6434 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6769-6780 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6960-6971 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7162-7173 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7422-7433 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6424}}}],"partialFingerprints":{"codehealthFindingId/v1":"37dfa65cb2eb57213a839a1ab95b3c45d610b06496e2fba5079eb911698e1ad4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:44-55 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:122-133 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:200-211 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart:232-243 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference_new/infer_assign_to_index_this_upwards.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa0df9d7059a2521af71c1b3016e8af8d5e1d78e77a4ec57bc2d4fdd54fc1d35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:543-554 | sdk/lib/_internal/js_runtime/lib/js_number.dart:633-644 | sdk/lib/_internal/vm/lib/integers.dart:452-463 | sdk/lib/_internal/wasm/common/boxed_int.dart:345-356 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"5abc83a38333ca26d49dc3c705cb2571655dae8bf966c93960523b28d2cdb6c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u201312 lines \u00D7 5): pkg/analysis_server/lib/src/lsp/handlers/custom/handler_augmentation.dart:28-39 | pkg/analysis_server/lib/src/lsp/handlers/custom/handler_augmented.dart:28-39 | pkg/analysis_server/lib/src/lsp/handlers/custom/handler_super.dart:31-42 | pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart:41-52 | pkg/analysis_server/lib/src/lsp/handlers/handler_signature_help.dart:60-63 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 5 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 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/handler_augmentation.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"35e558d9c60ff36806228691c44c05023fed6c0fe67d159bca21db0f23d7dc81"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:250-261 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:285-296 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:318-329 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:470-481 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"55beed6bca310f574941eb8f8b6801cbedbf205b901f97081cda1fd59b97d618"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:18939-18950 | pkg/analyzer/lib/src/dart/ast/ast.dart:18961-18972 | pkg/analyzer/lib/src/dart/ast/ast.dart:38321-38332 | pkg/analyzer/lib/src/dart/ast/ast.dart:38348-38359 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18939}}}],"partialFingerprints":{"codehealthFindingId/v1":"9946f4ab3fe73adc3cbbd2e5225b8d49df345cd9b7d64aefb05e3b865923cdc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 4): pkg/observatory/lib/src/elements/instance_view.dart:355-365 | pkg/observatory/lib/src/elements/instance_view.dart:391-402 | pkg/observatory/lib/src/elements/instance_view.dart:430-441 | pkg/observatory/lib/src/elements/instance_view.dart:496-507 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed159b8c5ce25fffb558c091ac2d64350a2e68679aadc64137490dbc0c86f238"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 4): pkg/observatory/lib/src/elements/library_view.dart:212-223 | pkg/observatory/lib/src/elements/library_view.dart:246-256 | pkg/observatory/lib/src/elements/library_view.dart:271-281 | pkg/observatory/lib/src/elements/library_view.dart:339-349 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/library_view.dart"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e43725ff2440524b57dd63d2cb8708cbda2539e9d37ae3c8a749db47ce04768"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart:64-75 | pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart:43-54 | pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart:64-75 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1fc3ca3bf071061644ccc2564a569cd87ae222bebac62c023614bbc962e7bc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/kernel/lib/type_algebra.dart:1018-1029 | pkg/kernel/lib/type_algebra.dart:1369-1380 | pkg/kernel/lib/type_algebra.dart:1674-1685 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1018}}}],"partialFingerprints":{"codehealthFindingId/v1":"954c0ef6558f03405b27b2048a02f0aa7a7d6da022219531cd4bc7e2525cd413"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/private/string_helper.dart:97-108 | sdk/lib/_internal/js_runtime/lib/string_helper.dart:110-121 | sdk/lib/_internal/wasm/common/string_helper.dart:70-81 \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":"sdk/lib/_internal/js_dev_runtime/private/string_helper.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a69072c9468b36f6a8780dbdf97b7a837db3281aed85168b6f386470537c92d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1326-1337 | sdk/lib/_internal/wasm/common/convert_patch.dart:1512-1523 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1204-1215 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1326}}}],"partialFingerprints":{"codehealthFindingId/v1":"50976d7bac5f644bbd8c7e434712affef66ca9f6a0fb5e848a4859f99d3d77da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 3): sdk/lib/_internal/vm/lib/mirrors_impl.dart:251-260 | sdk/lib/_internal/vm/lib/mirrors_impl.dart:348-357 | sdk/lib/_internal/vm/lib/mirrors_impl.dart:722-733 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ce8bdccb68023d1c62b0183cc9770308ed3e044dd0ac8dc186192bec426f346"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:7338-7349 | pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:8047-8058 | pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart:8070-8081 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7338}}}],"partialFingerprints":{"codehealthFindingId/v1":"aca35f062fa36b4a0171d86a62b9060d8f4363e94bbbd109eafac03b54612f09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/analysis_server/lib/src/protocol/protocol_internal.dart:286-297 | pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart:538-549 | pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart:621-632 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/protocol/protocol_internal.dart\u0060 and \u0060pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/protocol/protocol_internal.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"4205357035590b4cac440a0deaef033dbd7d846d395da6906fa9f483d2bd739d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 3): pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart:56-67 | pkg/analysis_server/lib/src/services/correction/dart/add_missing_switch_cases.dart:136-145 | pkg/analysis_server/lib/src/services/correction/dart/add_missing_switch_cases.dart:175-184 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"244a893adb5feacf7e81ee1ed3e784c588e6ab86061be3fb46f627e96bd0b456"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201312 lines \u00D7 3): pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:206-215 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:381-390 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:424-435 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"140112f2354308dd56a5317348b88ee6cb1c23cd5fbf1b5002686c56f63a5866"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/analyzer/lib/src/analysis_options/analysis_options.dart:265-276 | pkg/compiler/lib/src/kernel/kernel_world.dart:114-125 | pkg/kernel/lib/src/ast/patterns.dart:513-524 \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":"pkg/analyzer/lib/src/analysis_options/analysis_options.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b5ea887232cc267f9f88dc5d8b7b1205cfda21eec444155c369050290d474e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/analyzer/lib/src/dart/ast/ast.dart:25569-25580 | pkg/analyzer/lib/src/dart/ast/ast.dart:26223-26234 | pkg/analyzer/lib/src/dart/ast/ast.dart:37136-37147 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25569}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fed0788e676755979df984d00a4ac95fe1c6aa744ca420a32073d199a8b5919"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/analyzer/lib/src/dart/constant/value.dart:2055-2066 | pkg/analyzer/lib/src/dart/constant/value.dart:2332-2343 | pkg/analyzer/lib/src/dart/constant/value.dart:2432-2443 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2055}}}],"partialFingerprints":{"codehealthFindingId/v1":"37b2d5d22fbd02fa0cdb76fc2698d67e8eddd143032ce393e33b9d6fcece7d07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/analyzer/lib/src/summary2/bundle_writer.dart:272-283 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:379-390 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:667-678 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"702b349278bafce40bcaffbaa66621a841458c3abe5cd33a5eec22f3cbb1d59e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/analyzer/lib/src/summary2/bundle_writer.dart:300-311 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:405-416 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:695-706 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"0568e050de4cd3dc6acd5a0781117f837e2e207597c06ea59beb829f565be0cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 3): pkg/compiler/lib/src/ir/scope_visitor.dart:1140-1150 | pkg/compiler/lib/src/ir/scope_visitor.dart:1168-1179 | pkg/compiler/lib/src/ir/scope_visitor.dart:1186-1197 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":1140}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fee38c6f6b37a47b01886dd55bc7811b8b25b75e3014b121f67eae24ddc2865"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/dartdev/lib/src/templates/cli.dart:11-22 | pkg/dartdev/lib/src/templates/console.dart:11-22 | pkg/dartdev/lib/src/templates/web.dart:13-24 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/templates/cli.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b281bb5c18fdb23290c44a3f83ba8329ca0ab64325c6c0260a4b9497315ac9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/front_end/lib/src/codes/type_labeler.dart:137-148 | pkg/front_end/lib/src/codes/type_labeler.dart:294-305 | pkg/front_end/lib/src/codes/type_labeler.dart:329-340 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfd7cd01205d3a098741bba76d66c93ba403b0f4fbb8aa372975b718eafcd27f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): pkg/front_end/lib/src/fragment/getter/encoding.dart:613-624 | pkg/front_end/lib/src/fragment/method/encoding.dart:632-643 | pkg/front_end/lib/src/fragment/setter/encoding.dart:662-673 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d3868df95cfae7d8efbffac8e41de63a58e1cda5808a395e3ad306d8d10145e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7030-7040 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7231-7242 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7496-7507 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7030}}}],"partialFingerprints":{"codehealthFindingId/v1":"23d6a12fa51effecf82ee15dfdd31a4c52b6ab73e9fcfb00690acd32f1d7f24f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2109-2120 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1373-1384 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2109}}}],"partialFingerprints":{"codehealthFindingId/v1":"789f8aad40021370f8944428cb25807ba9fed359bfc7a0eb3e6aaf00dd924653"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2416-2427 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1631-1642 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2416}}}],"partialFingerprints":{"codehealthFindingId/v1":"34d79d8e25d2f756e29cd93897f3d5cabfc53d17d85a12ab2ebdbb82d4ee8423"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:206-217 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:32-43 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"29ef23933bdd2b1a5f845a1f8190b8f0057abba659164385268f8567dca55d57"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:79-90 | pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:290-301 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd00fd768da02e1d9d08cb233c6784dd2e22e5aab46b996f27562ee7fe519617"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:223-234 | pkg/front_end/tool/fuzz/analyzer_helper.dart:443-453 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart\u0060 and \u0060pkg/front_end/tool/fuzz/analyzer_helper.dart\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":"pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"74da9a2b8d72c1f38f5b975b627f75408908277ea752ba0e9bbc024661c70bf4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:255-266 | pkg/front_end/tool/fuzz/analyzer_helper.dart:468-479 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart\u0060 and \u0060pkg/front_end/tool/fuzz/analyzer_helper.dart\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":"pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"f741704a912948e75e6840eec95a6a8c20ed1d158dc4924d4d39e44f81b5d2f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dart2bytecode/lib/assembler.dart:222-233 | pkg/dart2bytecode/lib/assembler.dart:243-254 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/assembler.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"95467371b0479ca0f29ab29ff9d688074ce940d4810c46fbab37ba0b03fbb1ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dart2bytecode/lib/bytecode_serialization.dart:242-253 | pkg/native_compiler/lib/snapshot/snapshot.dart:2300-2311 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_serialization.dart"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"193b2fa4bf7d6c84b3338b2adb475a5e29549b7ee5a9350165a43c322f9b00d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dart2wasm/lib/code_generator.dart:352-363 | pkg/dart2wasm/lib/code_generator.dart:5104-5115 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f232d26600ae7e4e5bb014ce2f1313e678895062f35e75d7c97012fbb9a9424"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dart2wasm/lib/constants.dart:2175-2186 | pkg/dart2wasm/lib/constants.dart:2206-2217 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":2175}}}],"partialFingerprints":{"codehealthFindingId/v1":"719b0c788d2f44cf218129493e821e5f289280218af46393307b5b10474b33e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): pkg/dart2wasm/lib/target.dart:503-513 | pkg/dart2wasm/lib/target.dart:522-533 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/target.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5cbcc43c9bf03f03cde7763cc229cf90fd114de9ea9934c56321ad77c895260"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dart2wasm/lib/transformers.dart:673-684 | pkg/dart2wasm/lib/transformers.dart:840-851 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/transformers.dart"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"0101c2c7722026b4e44a39e27a58f1cef7546c7fbd95a5e02c3e4b800f09be24"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/testcases/general/pure_index_expressions.dart:79-90 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:91-102 \u2014 \u0060pkg/front_end/testcases/general/pure_index_expressions.dart\u0060 and \u0060pkg/front_end/testcases/nnbd/pure_index_expressions.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 7 separate duplicated blocks between them, totalling at least 89 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/pure_index_expressions.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"f40e8757030777028e3100ec6a66e0841411a016ba0a75a6e735fd9b954a54ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/testcases/general/pure_index_expressions.dart:183-194 | pkg/front_end/testcases/nnbd/pure_index_expressions.dart:201-212 \u2014 \u0060pkg/front_end/testcases/general/pure_index_expressions.dart\u0060 and \u0060pkg/front_end/testcases/nnbd/pure_index_expressions.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 7 separate duplicated blocks between them, totalling at least 89 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/pure_index_expressions.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"846976bc8b5676124a5203133f39c5110583a6b818e6ee4826c268f765d06132"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): sdk/lib/_http/http_impl.dart:2384-2395 | sdk/lib/_http/http_impl.dart:2398-2408 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":2384}}}],"partialFingerprints":{"codehealthFindingId/v1":"4649c49b6e27a16e726c49cb2c334f2beb879d0709b1bd790437c96bd20e9126"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart:490-501 | sdk/lib/_internal/js_runtime/lib/async_patch.dart:219-230 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/async_patch.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"23ec3f1766471bbc4cf83f26ece3d336502260cf347143649129632edd09832c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:407-418 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:410-421 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"d60d4ea84106bfa5b5e12da65cf30b81579dcc6e8596f973c61ffe62fdd1a6af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart:96-107 | sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart:129-140 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/collection_patch.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"011c7757b082f003799d473f7ffb9bf69fb5a5840ac70b60e6e7a7e5fb640354"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_string.dart:321-332 | sdk/lib/_internal/js_runtime/lib/js_string.dart:302-313 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_string.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_string.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 90 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_string.dart"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"360edf8647d79e54b9177db1bcd3a4153ceb9836b737326746893bf60f5af417"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart:103-114 | sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart:154-165 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"36b332ab22d252543639358a6f0842c745baa764cb5658edbe9fe1c46e80b34e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart:114-124 | sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart:136-147 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"855d015dc9e675dd6c97d6797138b560a622b4229c2682beee97657772208640"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1247-1258 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1537-1548 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1247}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bcd906e90ed6fcfea337c3b9dfc699cd0647b8a8d2ba2398277df3b1daaa345"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:2032-2043 | sdk/lib/_internal/wasm/common/convert_patch.dart:2600-2611 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":2032}}}],"partialFingerprints":{"codehealthFindingId/v1":"45d81807ebdad2e34429e6a5d75b7025f0f70723c23e095868440b13e024eb3b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/vm/lib/growable_array.dart:160-171 | sdk/lib/_internal/vm/lib/growable_array.dart:174-185 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"590e7b006563f0f7a2f5ae07fa91f87e01b97aaba8865e4e06b9ce390f574c5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/vm/lib/string_patch.dart:1162-1173 | sdk/lib/_internal/vm/lib/string_patch.dart:1195-1206 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"9948785b28091cfce6f4e8fbcecfbb6a34a1371730c7850d849a5638d7423931"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/vm/lib/string_patch.dart:1460-1471 | sdk/lib/_internal/wasm/common/string_helper.dart:64-75 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1460}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a0470bb233f17a9af0bff6a022649c9527c9ff42e98dd538ba89ceb39e11d27"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/collection_patch.dart:273-284 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:492-503 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/collection_patch.dart"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"752c4380a886d0ef350910bf58503b04388dc00681ce9c10fe69654cbbf52b47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:405-416 | sdk/lib/_internal/wasm/common/compact_hash.dart:336-347 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"c36c1102a63ab44aa3b3dff1c82cffd83b7d39b31af08542c3acfdd2fa06416d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1068-1079 | sdk/lib/_internal/wasm/common/compact_hash.dart:988-999 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1068}}}],"partialFingerprints":{"codehealthFindingId/v1":"515abe019a0d767bd7f42d35f736ea9b03c8273ef4d888648bdf37176d82a7b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/integers_patch.dart:111-122 | sdk/lib/_internal/wasm/common/int_patch.dart:80-91 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/integers_patch.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"5856437b32ebd2473f2466454bde7cfbec3bd76ebff4018397546aaea6b89a03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:2070-2082 | sdk/lib/_internal/wasm/common/typed_data.dart:2426-2437 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":2070}}}],"partialFingerprints":{"codehealthFindingId/v1":"100cd9f53aa8a034161d224f1deff79d27ec58e3cfaa14ad2b1691ab754e0caa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/assembler.dart:686-697 | pkg/native_compiler/lib/back_end/arm64/assembler.dart:715-726 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"02793484af812befc05c7b76315914c72d5298debfa9bba8a34bf58c985a7157"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1694-1705 | pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1811-1822 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1694}}}],"partialFingerprints":{"codehealthFindingId/v1":"88941911259a86496ca40a8332cd0ec55696d52667e8dd7a620a000a7091e651"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): pkg/dart_runtime_service/lib/src/dart_runtime_service_options.dart:74-84 | pkg/dwds_test_common/lib/fixtures/utilities.dart:140-151 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/dart_runtime_service_options.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a660aa3212f064a847a4ec603a30d6996e8f14fa9cc5910103c391836ad588"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/vm/lib/modular/transformations/ffi/definitions.dart:599-610 | pkg/vm/lib/modular/transformations/ffi/definitions.dart:654-665 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"15ab012fad57e6986668a734905e702261a9a8bb503e55d2f9dd1e00bb3aae24"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2375-2386 | pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2424-2435 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2375}}}],"partialFingerprints":{"codehealthFindingId/v1":"329622218ad25b45b306cc2ce1b7cb8b622f1927c4fdd4b1bfd81cc864046400"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analysis_server/lib/src/computer/computer_highlights.dart:861-872 | pkg/analysis_server/lib/src/computer/computer_highlights.dart:887-898 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":861}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e767c2675fbc803b843e353c2b4179c7067f06e7fe39c87faa36ebc204cdda9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart:203-214 | pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart:254-264 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_states.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"3443288b50d50d44d6d373d2a9200b084aae485a8bd7174c8898cfc373458fdc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analysis_server/lib/src/protocol/protocol_internal.dart:242-253 | pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart:497-508 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/protocol/protocol_internal.dart\u0060 and \u0060pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/protocol/protocol_internal.dart"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eba2f1d24c4049c829620e3bb5f2a4325107a455538ff57459d01572179f6d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:970-981 | pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:3604-3615 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"909d90c9aa5faf466fdef0884999bf4da776c7e983109fa088c71be55716b451"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analysis_server/lib/src/status/pages/analysis_options_page.dart:21-32 | pkg/analysis_server/lib/src/status/pages/contexts_page.dart:37-48 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/analysis_options_page.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa8fd93fd8b37234df31dc4b3ace78a789670a5f3367a01c649e29754df4e662"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analysis_server/lib/src/status/pages/legacy_plugins_page.dart:111-122 | pkg/analysis_server/lib/src/status/pages/plugins_page.dart:295-306 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/legacy_plugins_page.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"7639fa3903594d72377680b07f56e7e4b6c8d0517ecc9cec8e7cfbdd3423a370"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/analysis/index.dart:1380-1392 | pkg/analyzer/lib/src/dart/analysis/index.dart:1491-1502 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":1380}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde9e7753f7084d765694bba1051ff991520ca5c96b681cd89b2f0aca2801208"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/analysis/search.dart:291-302 | pkg/analyzer/lib/src/dart/analysis/search.dart:435-446 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f66294b6bf9b788f4e86b6bfda135fe99b8a0b29b669d190b15545d9cc9b93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:13017-13028 | pkg/analyzer/lib/src/dart/ast/ast.dart:39141-39152 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13017}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e876084b31cc3ac0ae9cadc7f9e4ee324bdb7f1363942c8af7fd7395e8880bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:13014-13025 | pkg/analyzer/lib/src/dart/ast/ast.dart:19468-19479 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13014}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ffa25e4e78e3e5cfb5b4fe0e925321ba5910af0d31bfdbe1d2e4b2f8343bef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:17525-17536 | pkg/analyzer/lib/src/dart/ast/ast.dart:29561-29572 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17525}}}],"partialFingerprints":{"codehealthFindingId/v1":"b06b953eb1ad4993c182a0dce86bba9c0fedab1fed3f960b3f910a210f81d68c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:19625-19636 | pkg/analyzer/lib/src/dart/ast/ast.dart:39138-39149 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":19625}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9420e162ddf1edc0c1d2f1fb7800c9bf7d8b30812b9d789e943d7a83830ea7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:24006-24017 | pkg/analyzer/lib/src/dart/ast/ast.dart:24026-24037 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24006}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6802c2eee33112c5f561f6cb94d691111cb80df70e5f86dc3fba51473ffd98d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:26557-26568 | pkg/analyzer/lib/src/dart/ast/ast.dart:26574-26585 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":26557}}}],"partialFingerprints":{"codehealthFindingId/v1":"7468f7924d5499f028b6f07df717022d585c79dff76536abef5faf2c801cb0a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart:381-392 | pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart:721-732 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"de9ea6c8a7fcb9fa45fdb576728416e8f599af88aa117d3fb436fca7264dd286"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201312 lines \u00D7 2): pkg/analyzer/lib/src/dart/constant/evaluation.dart:1103-1114 | pkg/analyzer/lib/src/dart/constant/evaluation.dart:2428-2436 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1103}}}],"partialFingerprints":{"codehealthFindingId/v1":"83212020465bb8e4f044fd1211b1aa68ac93237461a5c704e23e485e45565c2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/constant/potentially_constant.dart:224-235 | pkg/analyzer/lib/src/dart/constant/potentially_constant.dart:238-249 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7718f20128aa5c3887cf79361ad3ab66723245e52c929298262f3a05e1a9f2c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/constant/value.dart:2392-2403 | pkg/analyzer/lib/src/dart/constant/value.dart:2412-2423 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2392}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e722271438c98e0ac5066cf4916d6fc9125a3e4b7bdc69d1d2d4c33efefea5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/type.dart:974-985 | pkg/analyzer/lib/src/dart/element/type.dart:1012-1023 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":974}}}],"partialFingerprints":{"codehealthFindingId/v1":"76393dc89009b4f06beb1e542047bff4b9a222f23b75aefce8e9fbd23d3c0f5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:244-255 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:455-466 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"c90706ecbca76740020971770afbcede58d72e13dfdb2150f32f2b173f2d7a0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart:1141-1152 | pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart:1348-1359 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":1141}}}],"partialFingerprints":{"codehealthFindingId/v1":"73dcc4ebc5668b887cac1ce78eaed3516011a5243ae903bc31a6021c266f4bb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_writer.dart:425-436 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:825-836 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5716b1b74e7f175c6689dd37fd96d784761007ceb3499d99907fe3cba3991da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_writer.dart:537-548 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:758-769 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"4342a12baac85070b71ab9ceccab04a7aa6946eccf9b9104fb798b61e1c2b127"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/summary2/top_level_inference.dart:30-41 | pkg/analyzer/lib/src/summary2/top_level_inference.dart:142-153 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/top_level_inference.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"31b0001f01801afc9578d55c6b894a70748b8850fa3f0e754d58d46b6124f80b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart:1159-1169 | pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart:1275-1286 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":1159}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce66b9ee176486f56b1f9e112cb1daf9c70070e45553bf82d1ffd7f9fddd4aa7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:648-659 | pkg/compiler/lib/src/kernel/element_map_impl.dart:321-332 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"88eab214eddac8d8bb991297fb51d3c4817f109c017a3d447cee7c627e61f712"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/compiler/lib/src/serialization/task.dart:132-143 | pkg/compiler/lib/src/serialization/task.dart:184-195 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/task.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"109ca8be100f14f8ccf86010c3e8ae154213b8b9b102909f1bef40746279ac86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/compiler/lib/src/source_file_provider.dart:411-422 | pkg/compiler/lib/src/source_file_provider.dart:447-458 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/source_file_provider.dart"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4b769952cbf1c2502b1a0ed48e8222280c1a74b66cac2bb7c9ed2f95608adf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/compiler/lib/src/ssa/codegen.dart:4202-4213 | pkg/compiler/lib/src/ssa/codegen.dart:4225-4236 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":4202}}}],"partialFingerprints":{"codehealthFindingId/v1":"067b4fd75b4f38336bb3f4faa014113dbf16d952211020c9bc59a2867102f851"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart:1210-1221 | pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart:1286-1297 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee25015a1d90d6f3487db879e0765e5bc63e5bba6a8086fb5ff866d4a083595c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/compiler/lib/src/universe/member_usage.dart:314-325 | pkg/compiler/lib/src/universe/member_usage.dart:466-477 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"b29c2b74778f45c2c438cc648b5d1270e99bcd933c336a3eeda78389cc3042f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/compiler/lib/src/universe/member_usage.dart:327-338 | pkg/compiler/lib/src/universe/member_usage.dart:482-493 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"0be3c6d837022cb96fe67ca73ce9b1c2a61e20445b5324cfe34c7a936bce37bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart:564-575 | pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart:597-608 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"4578e39bea55d409369db7d4316fa6bfbdc8cd7e0b6ddea600eef2985b3593b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3514-3525 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4041-4052 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3514}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e33628af75b96e2b34edd93c31e2f1baeceae517c4197fdf8c5bdb5239dd0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4203-4214 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4799-4810 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4203}}}],"partialFingerprints":{"codehealthFindingId/v1":"55215e879b56c7c19938c8298c5e7516c7d1fd4a3069c6ca14ab650982dbcc0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4255-4266 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4851-4862 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4255}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dfe0a354496fc4aaf8d0f3d4b5dd70d5c74bcf5664b648f136ffc9a09059327"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7745-7756 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8612-8623 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7745}}}],"partialFingerprints":{"codehealthFindingId/v1":"64f7bac8c15c73734a649cb1679e0f724053c8dc0535cb894f2831ab4797c561"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/base/lookup_result.dart:89-101 | pkg/front_end/lib/src/base/lookup_result.dart:107-118 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/lookup_result.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"12cacd7d97f6c87d02e6ff52f4bef5131e082ce1d02ecc7e52f5a0f5fe19dd4f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/builder/named_type_builder.dart:1053-1064 | pkg/front_end/lib/src/builder/named_type_builder.dart:1066-1077 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":1053}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc8a9d79140bd4ef1aef2ea168cc98f8900a7ba258de4d51b9562074d067116"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/codes/type_labeler.dart:222-233 | pkg/front_end/lib/src/codes/type_labeler.dart:574-585 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ddf618e671fcfa9146d173af2f71c380e660586d3fc5efc34c10de02303bdaf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/encoding.dart:999-1010 | pkg/front_end/lib/src/fragment/field/encoding.dart:1066-1077 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"a15dc3f654513e9bb078b5fd75228a9dee9d7161667f128ff403d73e6e6e1bbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/kernel/collections.dart:99-110 | pkg/front_end/lib/src/kernel/internal_ast.dart:8257-8268 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/collections.dart\u0060 and \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 73 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":"pkg/front_end/lib/src/kernel/collections.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99b8fe58847f7712804344fc03dabec7a559e9356912342ea6a85aa792a2a5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_collection_builders.dart:120-131 | pkg/front_end/lib/src/kernel/constant_collection_builders.dart:204-215 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_collection_builders.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0e46524099f292bd64246a265ff2891f70d60f9eba6f99c6f7837f09e473500"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:996-1007 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:2073-2085 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":996}}}],"partialFingerprints":{"codehealthFindingId/v1":"55a4ef4baa2960c5fd856b092f809f56ed579339aa04938cdfa937385e8b798b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/source/outline_builder.dart:3855-3866 | pkg/front_end/lib/src/source/outline_builder.dart:3879-3890 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":3855}}}],"partialFingerprints":{"codehealthFindingId/v1":"87e8e887dbceaff0c425f13d99db07b78e08d116225052dc3b9f2b239f35d39b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/source/outline_builder.dart:4426-4437 | pkg/front_end/lib/src/source/outline_builder.dart:4442-4453 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":4426}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1988c5b0025ea657bf9a443dc91a7e939cffb310d4cc580168d051438a55c0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/source/source_class_builder.dart:837-848 | pkg/front_end/lib/src/source/source_class_builder.dart:864-875 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ef1e5d2cd9f0fc05d115eff33aa25c31b95f0dde16fc75ccff6bdeee2c0a7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/type_inference/delayed_expressions.dart:1298-1309 | pkg/front_end/lib/src/type_inference/delayed_expressions.dart:1472-1483 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/delayed_expressions.dart"},"region":{"startLine":1298}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c9e89a7b3eff020e67d10093403edb4356475a59b3bdc811001b8ae13e5073"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6483-6494 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8734-8744 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6483}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb774a4d3ba5d76989d65a1f1ac616b138efc48c15e777aa8b3f4f7a16d98f01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/type_inference/object_access_target.dart:1207-1218 | pkg/front_end/lib/src/type_inference/object_access_target.dart:1231-1243 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"152805564d40f49be65c777454b4541ee6d556ebda832a5990fe750a21e4b46a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/kernel/lib/src/ast/declarations.dart:784-795 | pkg/kernel/lib/src/ast/declarations.dart:1099-1110 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/declarations.dart"},"region":{"startLine":784}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3628754f066e383c610109def5619a5822ab9d53bda9651b869feaaeba51565"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/linter/lib/src/rules/library_private_types_in_public_api.dart:124-135 | pkg/linter/lib/src/rules/library_private_types_in_public_api.dart:239-251 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/library_private_types_in_public_api.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bed55ae801e529a9d941c95db6da86d3fba307cfe7d9588f46c172142148638"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/observatory/lib/src/elements/class_view.dart:483-494 | pkg/observatory/lib/src/elements/instance_view.dart:436-447 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_view.dart"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bf53e2467cab12b52c2a6e88cd5f686df9d82c56b8fae4a12ffe4c699549c90"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/observatory/lib/src/elements/cpu_profile_table.dart:316-327 | pkg/observatory/lib/src/elements/cpu_profile_table.dart:364-375 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile_table.dart"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"af2c044b0f6b9488674554a59fe8b27ca60b0ae310dd669d227010d06c4833b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/observatory/lib/src/elements/field_view.dart:79-90 | pkg/observatory/lib/src/elements/function_view.dart:81-92 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/field_view.dart\u0060 and \u0060pkg/observatory/lib/src/elements/function_view.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 33 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":"pkg/observatory/lib/src/elements/field_view.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff685f7b14a58d80ced460a63e8ba4d999ba705277f783edd3288b9e1ce19cd8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:376-387 | pkg/observatory/lib/src/elements/process_snapshot.dart:103-114 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0fa70288617cbd97be993abb04bdf0be9b359819ec5715681e6847d5a66878b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/observatory/lib/src/elements/inbound_references.dart:63-74 | pkg/observatory/lib/src/elements/retaining_path.dart:62-73 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/inbound_references.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d7f3a9253b04ba998142841002981b91e45f807eee75a776801258fa82e61b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/vm_service/lib/src/vm_service.dart:4387-4398 | pkg/vm_service/lib/src/vm_service.dart:4494-4505 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":4387}}}],"partialFingerprints":{"codehealthFindingId/v1":"568c8a59d0244e2a7e96e5df05b80bed6b1c2f573ef6aeb934c6c50bcad2e225"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/vm_service/lib/src/vm_service.dart:4737-4748 | pkg/vm_service/lib/src/vm_service.dart:4859-4870 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":4737}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d1fd0865ef2aca9adcd92a60f2acce7447924890c49870972c1c07666df1c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/vm_service/lib/src/vm_service.dart:5166-5177 | pkg/vm_service/lib/src/vm_service.dart:5751-5762 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":5166}}}],"partialFingerprints":{"codehealthFindingId/v1":"08aa46118ec89882d7df2e8296a996650c4f53650fff7d8e67bf70c5ea438c01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/wasm_builder/lib/src/ir/instruction.dart:2935-2946 | pkg/wasm_builder/lib/src/ir/instruction.dart:2985-2996 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/instruction.dart"},"region":{"startLine":2935}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a9328befbe7799d749581cfeea8ae569b93de7d761f5b5e8980a2d28b64ff7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/wasm_builder/lib/src/serialize/sections.dart:1170-1181 | pkg/wasm_builder/lib/src/serialize/sections.dart:1278-1289 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":1170}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae51d8c01e00564413012152f5543cee44f5d9665e116b8e7c1d0f1ffe572dad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 10): pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart:19-29 | pkg/analysis_server/lib/src/services/snippets/dart/do_statement.dart:19-29 | pkg/analysis_server/lib/src/services/snippets/dart/for_statement.dart:19-29 | pkg/analysis_server/lib/src/services/snippets/dart/function_declaration.dart:19-29 | pkg/analysis_server/lib/src/services/snippets/dart/if_else_statement.dart:19-29 | pkg/analysis_server/lib/src/services/snippets/dart/if_statement.dart:19-29 | pkg/analysis_server/lib/src/services/snippets/dart/switch_expression.dart:19-29 | pkg/analysis_server/lib/src/services/snippets/dart/switch_statement.dart:19-29 | pkg/analysis_server/lib/src/services/snippets/dart/try_catch_statement.dart:19-29 | pkg/analysis_server/lib/src/services/snippets/dart/while_statement.dart:19-29 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/snippets/dart/if_statement.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 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":"pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcad4cf386c3a35faad6eb4012d743db284ec3f39ec66eb409d28a341da8e959"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 9): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_constructor.dart:121-131 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart:105-115 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_import.dart:145-155 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_label.dart:58-68 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_library.dart:60-70 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_local.dart:233-243 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_parameter.dart:139-149 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_type_parameter.dart:73-83 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_unit_member.dart:160-170 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 9 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_constructor.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"d888ae398bcbd322e99cb8885360ede042d30d94e797eadcd666eced26b11ab2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 9): pkg/wasm_builder/lib/src/builder/instructions.dart:6016-6026 | pkg/wasm_builder/lib/src/builder/instructions.dart:6031-6041 | pkg/wasm_builder/lib/src/builder/instructions.dart:6046-6056 | pkg/wasm_builder/lib/src/builder/instructions.dart:6061-6071 | pkg/wasm_builder/lib/src/builder/instructions.dart:6076-6086 | pkg/wasm_builder/lib/src/builder/instructions.dart:6091-6101 | pkg/wasm_builder/lib/src/builder/instructions.dart:6106-6116 | pkg/wasm_builder/lib/src/builder/instructions.dart:6121-6131 | pkg/wasm_builder/lib/src/builder/instructions.dart:6226-6236 \u2014 all 9 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":6016}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd7066e07e8b4dc45eb6ee1f639cf891bc85b1a4ae8393c241d8d72e9a22771"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 7): pkg/analyzer/lib/src/dart/ast/ast.dart:25664-25674 | pkg/analyzer/lib/src/dart/ast/ast.dart:26840-26850 | pkg/analyzer/lib/src/dart/ast/ast.dart:36875-36885 | pkg/analyzer/lib/src/dart/ast/ast.dart:37250-37260 | pkg/analyzer/lib/src/dart/ast/ast.dart:41373-41383 | pkg/analyzer/lib/src/dart/ast/ast.dart:51052-51062 | pkg/analyzer/lib/src/dart/ast/ast.dart:55522-55532 \u2014 all 7 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25664}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d6346d40488e588a44ea09d269f8cfaa38062e4940eead183ca86c3a2b8887b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 7): pkg/front_end/lib/src/type_inference/inference_visitor.dart:2454-2465 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8617-8627 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8639-8650 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8813-8823 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8835-8846 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:9078-9088 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:9102-9113 \u2014 all 7 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":2454}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc04b00901e6b104cd3458d5fde9e5b3be55f2ee86f6e1994015e0f35518a16a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:282-292 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:618-628 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:964-974 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1307-1317 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1650-1660 | sdk/lib/_internal/wasm/common/typed_data.dart:2159-2169 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"543c3e3af5d2357aa182f4585f5674fb890a4ad64cb2f66d174e7f59e68bffff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 6): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1227-1237 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1350-1360 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1475-1485 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1598-1608 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1794-1804 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1898-1908 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":1227}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a20afb8b3eb3dd268c6f92e650d0c8d081579ed3852a7eb4f7104a7b0ab4278"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 6): sdk/lib/vmservice/devfs.dart:182-192 | sdk/lib/vmservice/devfs.dart:204-214 | sdk/lib/vmservice/devfs.dart:224-234 | sdk/lib/vmservice/devfs.dart:281-291 | sdk/lib/vmservice/devfs.dart:338-348 | sdk/lib/vmservice/devfs.dart:398-408 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/devfs.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2c0f6a1c2ab0491d71cafc791ee0e9def8927aedd2b8b2e96954b8f1abe7e3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 5): sdk/lib/_internal/vm/lib/typed_data_patch.dart:534-544 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:877-887 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:995-1005 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1338-1348 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1681-1691 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"3557badc7f87724b88d875ef2e0db4b189edfb80572a7da94434857d7be18f5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 5): pkg/analyzer/lib/src/dart/ast/ast.dart:13527-13537 | pkg/analyzer/lib/src/dart/ast/ast.dart:20481-20491 | pkg/analyzer/lib/src/dart/ast/ast.dart:49650-49660 | pkg/analyzer/lib/src/dart/ast/ast.dart:53129-53139 | pkg/analyzer/lib/src/dart/ast/ast.dart:58612-58622 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13527}}}],"partialFingerprints":{"codehealthFindingId/v1":"22f6c55eb5b6664d441544333a4d2175e4204231b2e1d8be9f4db8c15d9a4d96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 5): pkg/analyzer/lib/src/dart/ast/ast.dart:13541-13551 | pkg/analyzer/lib/src/dart/ast/ast.dart:20505-20515 | pkg/analyzer/lib/src/dart/ast/ast.dart:49674-49684 | pkg/analyzer/lib/src/dart/ast/ast.dart:53153-53163 | pkg/analyzer/lib/src/dart/ast/ast.dart:58630-58640 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13541}}}],"partialFingerprints":{"codehealthFindingId/v1":"1da200495c4ac0299a106cec7fe011bf3a15101cf7c11da86ac60e40591a10a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 5): pkg/dartdev/lib/src/commands/compile.dart:162-172 | pkg/dartdev/lib/src/commands/compile.dart:217-227 | pkg/dartdev/lib/src/commands/dart_mcp_server.dart:56-66 | pkg/dartdev/lib/src/commands/development_service.dart:49-59 | pkg/dartdev/lib/src/commands/tooling_daemon.dart:43-53 \u2014 before extracting anything, compare \u0060pkg/dartdev/lib/src/commands/development_service.dart\u0060 and \u0060pkg/dartdev/lib/src/commands/tooling_daemon.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 57 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":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"182631aee985417e133ecbde6bba8427117307c528ec42ca4afa49963f9bc752"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:8534-8544 | pkg/analyzer/lib/src/dart/ast/ast.dart:18935-18945 | pkg/analyzer/lib/src/dart/ast/ast.dart:26553-26563 | pkg/analyzer/lib/src/dart/ast/ast.dart:38317-38327 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":8534}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e365eb06380a589a737e3683e1bbe01ebfead2565cf9bb22abf85bd79e5c5cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:8559-8569 | pkg/analyzer/lib/src/dart/ast/ast.dart:18957-18967 | pkg/analyzer/lib/src/dart/ast/ast.dart:26570-26580 | pkg/analyzer/lib/src/dart/ast/ast.dart:38344-38354 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":8559}}}],"partialFingerprints":{"codehealthFindingId/v1":"162afbbc41fc2b3c8303799d093902242cc033c50ce2b7fec195532fa00a7777"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): pkg/analyzer/lib/src/fine/manifest_item.dart:86-96 | pkg/analyzer/lib/src/fine/manifest_item.dart:276-286 | pkg/analyzer/lib/src/fine/manifest_item.dart:467-477 | pkg/analyzer/lib/src/fine/manifest_item.dart:1370-1380 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_item.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"f11c412426ab9ec966e4596b7cef6fd1fa2add035d03821144d5d59697af7726"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): pkg/analyzer/lib/src/summary2/informative_data.dart:278-288 | pkg/analyzer/lib/src/summary2/informative_data.dart:314-324 | pkg/analyzer/lib/src/summary2/informative_data.dart:342-352 | pkg/analyzer/lib/src/summary2/informative_data.dart:472-482 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"95c095d5cc7aeba74863f2671a71e0e1c50faa4e1f95515750f00076aeabf1d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:218-228 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:255-265 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:293-303 | pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:330-340 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"da0254020539dec5804fd15ac0673a5310e6dd4e74869e2b65019709ad9a8741"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1362-1372 | sdk/lib/_internal/wasm/common/convert_patch.dart:1548-1558 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1240-1250 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1362}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b4eff05eebb4ee7982b9f99b6fef66ee7994b987f7a368055f96427f83a71a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1382-1392 | sdk/lib/_internal/wasm/common/convert_patch.dart:1568-1578 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1260-1270 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1382}}}],"partialFingerprints":{"codehealthFindingId/v1":"736e9880f6c6d96f45c8c2abed342899016bfa5093e09c56db798c7e1b7f3be8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:880-890 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:997-1007 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1116-1126 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":880}}}],"partialFingerprints":{"codehealthFindingId/v1":"e48d818683a9ed32cd498491f370b4e8c121ace49e216a1e686b892e0a4d4a13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analysis_server/lib/protocol/protocol.dart:166-176 | pkg/analysis_server_client/lib/src/protocol/protocol_base.dart:144-154 | pkg/analyzer_plugin/lib/protocol/protocol.dart:174-184 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/protocol/protocol.dart\u0060 and \u0060pkg/analysis_server_client/lib/src/protocol/protocol_base.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 53 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/protocol/protocol.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f349ffe67072ea5b60c4d67fa0b3c44704cc734f8ae1a0ecea44f3854b0de2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart:1521-1531 | pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart:1534-1544 | pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart:1547-1557 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":1521}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bb558040a8b6508fc32cd18b76a69dccc16cb66229dee55b3d83c9f7474fa59"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analysis_server/lib/src/services/snippets/dart/for_statement.dart:31-41 | pkg/analysis_server/lib/src/services/snippets/dart/test_definition.dart:35-45 | pkg/analysis_server/lib/src/services/snippets/dart/while_statement.dart:31-41 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/snippets/dart/for_statement.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/snippets/dart/while_statement.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 38 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":"pkg/analysis_server/lib/src/services/snippets/dart/for_statement.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4e29a103480b7f1b78ae688c68251973bac0608d0e0011168bfaa840fc169d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analyzer/lib/src/dart/analysis/search.dart:289-299 | pkg/analyzer/lib/src/dart/analysis/search.dart:386-396 | pkg/analyzer/lib/src/dart/analysis/search.dart:433-443 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/search.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d74761928af30e11368858cd53dd1c222b57c661f753c56914543cae16aa472"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analyzer/lib/src/dart/ast/ast.dart:24002-24012 | pkg/analyzer/lib/src/dart/ast/ast.dart:25642-25652 | pkg/analyzer/lib/src/dart/ast/ast.dart:37223-37233 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24002}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8da63c371267931970a8510bb6c1283de9947286a4899ddf2816f0e0c559223"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analyzer/lib/src/dart/element/well_bounded.dart:93-103 | pkg/analyzer/lib/src/error/type_arguments_verifier.dart:104-114 | pkg/analyzer/lib/src/error/type_arguments_verifier.dart:178-188 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/well_bounded.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"d318db82595c5bf2a6cd00c3448b536c7341b81cd24ed362db689562857454d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:168-178 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:182-192 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:196-206 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"226dcf807b214c38a6082339966860089aa5e2f7dadda6161d330ed34cbe5365"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:519-529 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:532-542 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:546-556 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"b003e586bdcf228412976fbcb4cbbc333b918e2bc04bb82a1fcbaccfa5bb47ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analyzer/lib/src/summary2/bundle_writer.dart:193-203 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:535-545 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:756-766 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ee71171c5e84ad6175c7ce67cf582326a62558ddae03ee0608cd57f5d93c23b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 3): pkg/analyzer/lib/src/summary2/element_builder.dart:1629-1638 | pkg/analyzer/lib/src/summary2/element_builder.dart:1662-1671 | pkg/analyzer/lib/src/summary2/element_builder.dart:1886-1896 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1629}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e08d72038406459eace7a961cbfd6eebd0a612131f555209328deebd2d43569"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analyzer/lib/src/summary2/informative_data.dart:191-201 | pkg/analyzer/lib/src/summary2/informative_data.dart:285-295 | pkg/analyzer/lib/src/summary2/informative_data.dart:479-489 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f61bd94150b35163cfe4fe3f0df208594f5099f08ce6eac3e7b18a956b6f08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/dartdev/lib/src/commands/compile.dart:312-322 | pkg/dartdev/lib/src/commands/compile.dart:442-452 | pkg/dartdev/lib/src/commands/compile.dart:971-981 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eb892a472b16b72f6caa7ee9cbb3cc82d075e9bee1327e55d5c4f99067b61d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/front_end/lib/src/fragment/method/encoding.dart:741-751 | pkg/front_end/lib/src/fragment/setter/encoding.dart:418-428 | pkg/front_end/lib/src/fragment/setter/encoding.dart:767-777 \u2014 \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 16 separate duplicated blocks between them, totalling at least 306 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2e002cfdf565baa8fe77721ad5924d058c9d6304dbf2e1878349b0f23d92de7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:2198-2208 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5947-5957 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6046-6056 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":2198}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d2e6ea1f5e0c6aba12f5848234b36f1f9c69b926b0528d129eea960ac5a302"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 3): pkg/observatory/lib/src/elements/field_view.dart:169-178 | pkg/observatory/lib/src/elements/function_view.dart:152-161 | pkg/observatory/lib/src/elements/instance_view.dart:170-180 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/field_view.dart\u0060 and \u0060pkg/observatory/lib/src/elements/function_view.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 33 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":"pkg/observatory/lib/src/elements/field_view.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9c8e542ea1dcae936afaead8c65ae2f41cc556b59ac5e1d4b7247d4802ce6aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1940-1950 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1804-1814 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1940}}}],"partialFingerprints":{"codehealthFindingId/v1":"a88c12a02f433e9acc01d5db1fd121efdf058271e2e8a0da8ac96347ac4516f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:119-129 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:153-163 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba81047014f8fe9432b0fe218234cf4d4d9c1a01489b760b8b1df43a72883fd0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2540-2550 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2616-2626 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2540}}}],"partialFingerprints":{"codehealthFindingId/v1":"23470e63896d5abd5c40b1fd923e2b5c80d5cc5872641d97a67fc4b4ecc34673"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/tool/instrumentation/page/stats_page.dart:205-215 | pkg/analysis_server/tool/instrumentation/page/stats_page.dart:241-251 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/page/stats_page.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe94b0bd960398515d3f64a53885ce3be79794249b7c19b7b69b1e18d8a004a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/tool/generators/ast_generator.dart:360-370 | pkg/analyzer/tool/generators/ast_generator.dart:376-386 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"576be78931c11b620f94bf1d5ee8660f57766c6693164bee9cbc791534ecbd9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/tool/generators/ast_generator.dart:1218-1228 | pkg/analyzer/tool/generators/ast_generator.dart:1263-1273 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":1218}}}],"partialFingerprints":{"codehealthFindingId/v1":"de714cabd6f693fcb6513ad90fcbc16a5c226f23727f84825e6a7b2bafdab2d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): pkg/dart2bytecode/lib/declarations.dart:451-460 | pkg/dart2bytecode/lib/declarations.dart:650-660 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6977f73d67798b003dbd3f92aef2a77c7b8581035b6d985617c511d52a09d46"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dart2bytecode/lib/declarations.dart:520-530 | pkg/dart2bytecode/lib/declarations.dart:771-781 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"b85084a49fed19425985a0d190baa0114b4cc17f1699de5dfd4cf7a0bc4bbccd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dart2bytecode/lib/declarations.dart:750-760 | pkg/dart2bytecode/lib/declarations.dart:1203-1213 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f027bfbf8020748e1fe1ba81c2db1fd532002dbe80ef5cd5933f0c4f489777"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dart2js_info/lib/binary_serialization.dart:320-330 | pkg/dart2js_info/lib/json_info_codec.dart:87-97 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/binary_serialization.dart"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"0061bf371cd5ca1443d8936113afdb1b5a36720590ab56a273f63193a9922794"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dart2wasm/lib/async.dart:294-304 | pkg/dart2wasm/lib/sync_star.dart:236-246 \u2014 before extracting anything, compare \u0060pkg/dart2wasm/lib/async.dart\u0060 and \u0060pkg/dart2wasm/lib/sync_star.dart\u0060 as WHOLE FILES: this scan already matched 5 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":"pkg/dart2wasm/lib/async.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"a55a9a23096d2c098d740f2affb7ea2f8b621051b4a761bf38f1b382d4855616"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dart2wasm/lib/transformers.dart:1281-1291 | pkg/dart2wasm/lib/transformers.dart:1436-1446 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/transformers.dart"},"region":{"startLine":1281}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d021f372c49fecae3ec256e33e2b0cc62d5263c3dc2215eaf9aec2c78044a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/general/missing_static_super.dart:8-18 | pkg/front_end/testcases/general/missing_static_super.dart:34-44 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/missing_static_super.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"68001d9c925c632f00804f76fabf169b60ef902173125d9516aa3b607c2d103a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/general/missing_static_super.dart:20-30 | pkg/front_end/testcases/general/missing_static_super.dart:46-56 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/missing_static_super.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"85052708b50f9e60ebe4370cec9cbc451997cf6c601812add27963e5afaef0e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart:28-38 | pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart:28-38 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b36d1c26d6484545c495d2e349f0b7d2f7409216df493eca4b901885e57e185"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/tool/bench_maker.dart:476-486 | pkg/front_end/tool/bench_maker.dart:505-515 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/bench_maker.dart"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdc5a1e2deb7ef8b6b8ff5ffadcc84c54ea879c9c68a588402428557606d4a6a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/kernel/lib/src/bounds_checks.dart:125-135 | pkg/kernel/lib/type_algebra.dart:724-734 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"7818b9928af8c88be2025fcca4cc07a08257ecace31ea377f15a2de563244961"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/kernel/lib/type_algebra.dart:977-987 | pkg/kernel/lib/type_algebra.dart:1328-1338 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"3288db7cf5b9003cccc5f806b20049d677cf8002a7c469838131aa0da891f044"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/kernel/lib/type_algebra.dart:1031-1041 | pkg/kernel/lib/type_algebra.dart:1382-1392 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1031}}}],"partialFingerprints":{"codehealthFindingId/v1":"addc83d813dd69df067d57cb3a63a327e64376a891a52c28c94a0c5bc33ed1bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): pkg/kernel/lib/type_algebra.dart:1064-1073 | pkg/kernel/lib/type_algebra.dart:1415-1425 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1064}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e00be49037b18a3e9f7d296c7a382eceb556be72c6f9bc0ca47296d4a4be18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): sdk/lib/_http/http_impl.dart:2215-2225 | sdk/lib/_http/http_impl.dart:2243-2252 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":2215}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb85144d7d5e6f1416d167d7a6ef08398bd3c872aa263d0825c760a09c7160a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:135-145 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:135-145 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab969f72ef0d4ba7ec6771089842c8562e79396447bde747b155a039ee18c581"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:266-274 | sdk/lib/_internal/js_runtime/lib/js_array.dart:366-376 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"2caebf8d5d008c2d355fe3b893880de74ee662b6a9697081d8f3ee56d4f7a3f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_helper.dart:290-300 | sdk/lib/_internal/js_runtime/lib/js_helper.dart:619-629 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_helper.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_helper.dart\u0060 as WHOLE FILES: this scan already matched 6 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":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"59de31af67c42efd0e0a61c298a28b70a373ca99061eddceb99cbf88f1b02fe6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:469-479 | sdk/lib/_internal/js_runtime/lib/js_number.dart:556-566 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"67d0cf4bedb22f81f1cb594c341f61df06f55def091164a46be85bb63d688b6f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart:135-145 | sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart:178-188 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3f21b0c5338ab855eb1978940cf30ad4a7e4a09a405a889a00d5ea6236bc8e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/js_string.dart:36-46 | sdk/lib/_internal/vm/lib/string_patch.dart:914-923 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_string.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"51eade2c660b0ec1703873b1daa045b855060ab49888759997a3f43aca4853b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:687-697 | sdk/lib/_internal/wasm/common/compact_hash.dart:644-654 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"feae316f718abaffafae99b31a223c0610c567829eab6c901d31be1458e4f70e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/wasm/common/int_patch.dart:18-28 | sdk/lib/_internal/wasm/common/int_patch.dart:37-47 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/int_patch.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"579ee945dcd180324d0896a5b7e375fa4fab0ebaec2cdf411b3ef6ff3424ef3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (2\u201311 lines \u00D7 4): sdk/lib/_internal/wasm/common/typed_data.dart:670-671 | sdk/lib/_internal/wasm/common/typed_data.dart:769-779 | sdk/lib/_internal/wasm/common/typed_data.dart:873-874 | sdk/lib/_internal/wasm/common/typed_data.dart:949-959 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"25dd75c36a392521ded47e46c2ba0c70f1d79e4fb428494d624a6f7991e13a72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:1042-1052 | sdk/lib/_internal/wasm/common/typed_data.dart:1112-1122 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"6877540ee319f080416d2537d1a4d57d3df659256b22a4c83eadbf3e78f9cbe3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:394-404 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:300-310 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"1119e668393122709210d5280c3f4318fa670eede6aebe3bee74220fd6f833c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:542-552 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2032-2042 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"814e76b0c9f766f6c145839e59f48bfe7ed5c7972b54d615e8cbd9b78b341b7b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:679-689 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2170-2180 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":679}}}],"partialFingerprints":{"codehealthFindingId/v1":"543b2f9582c5fb1004f3ef9b899ef574b8d73cec3b2e71da5f8a6f3684f9b92e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u201311 lines \u00D7 3): pkg/cfg/lib/passes/pass.dart:118-128 | pkg/cfg/lib/passes/pass.dart:130-140 | pkg/cfg/lib/passes/pass.dart:141-146 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/pass.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"a342517b1fd115efd42c81ec201a90a5ab038facd9edd73370854851350eb189"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/metadata/expressions.dart:200-210 | pkg/_fe_analyzer_shared/lib/src/metadata/expressions.dart:286-296 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/expressions.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"50c9206a9107d59c9de7da7dabd3147e3b183004f200a1753d494802cb6a8c8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart:326-336 | pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart:345-355 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bf7768a3268aca000246b9690aed71a294c9bc980ce730893b426f72ab9b9fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/handler/legacy/edit_organize_directives.dart:23-33 | pkg/analysis_server/lib/src/handler/legacy/edit_sort_members.dart:23-33 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_organize_directives.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"8414ef97758693af1182432979dda33faf294256e3ec58a1cf9722d9ddcfc234"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/handler_document_highlights.dart:34-44 | pkg/analysis_server/lib/src/lsp/handlers/handler_references.dart:38-48 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_document_highlights.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd1995ac6ce87c86ddc99aac67837eb0d858942a1ef6291c17d349a7105ac058"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:481-490 | pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:514-524 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"59de6f8b93f4f97f9993e6390afb67e390cea2bade9100cfa1207293d7408abc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:1788-1798 | pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:1858-1868 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1788}}}],"partialFingerprints":{"codehealthFindingId/v1":"693f7405986d30604d26825ff62e9143a44d7ce8c3a9067b16e55da73e1553a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart:948-958 | pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart:1025-1035 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":948}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f041c794e0364a8f2d49b5c30a1080604a021f312c03769b05d34ee5e3e071c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/change_to.dart:137-147 | pkg/analysis_server/lib/src/services/correction/dart/change_to.dart:266-276 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/change_to.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"dee6ee08f5b13e59e552fb9b5b48cd361c65df41aeac1414ac970a1deca13bce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/convert_flutter_child.dart:62-72 | pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_children.dart:85-97 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_flutter_child.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"59b6786ef047a10126d07b05a5db2a027d2ee2df5c5ef1ac06aad5f6065ae6e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart:56-66 | pkg/linter/lib/src/rules/prefer_for_elements_to_map_fromIterable.dart:58-68 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"e51802c92b32a180aaa0e381d72e764edeabdede34fdb8aee485c99083946505"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/flutter_move_down.dart:25-35 | pkg/analysis_server/lib/src/services/correction/dart/flutter_move_up.dart:25-35 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_move_down.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"2912097ec6c105a2c1f3fc99f7a306bb3899df9ec40a0dde240546d6f4dd1bca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/use_curly_braces.dart:104-113 | pkg/analysis_server/lib/src/services/correction/dart/use_curly_braces.dart:216-226 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/use_curly_braces.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee5f5da80a98f87ec04fc492ecaf7893a151efe6959150655dc9debbb963e8cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/status/pages/plugins_page.dart:32-42 | pkg/analysis_server/lib/src/status/pages/plugins_page.dart:88-98 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/plugins_page.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2cccee9e755511a06ad27f6008e9ed16018ec2952e4e473f35cec4e5410ecc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/dart/constant/value.dart:1160-1170 | pkg/analyzer/lib/src/dart/constant/value.dart:2165-2175 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":1160}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1b12512462d4fc7f97ccbadc7b31b89e44c7ed2631a3ad4c821827c28f1e95e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/dart/constant/value.dart:1182-1192 | pkg/analyzer/lib/src/dart/constant/value.dart:2187-2197 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":1182}}}],"partialFingerprints":{"codehealthFindingId/v1":"618456ebb2f8838c29823bad2ac87f350c0c4f9216d39a730887c2b4547a464b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/dart/constant/value.dart:1260-1270 | pkg/analyzer/lib/src/dart/constant/value.dart:2263-2273 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef0a9739de43de201a1318060b5d3be63b09154852a562cd7798cb4dc5b68cb6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/dart/constant/value.dart:1282-1292 | pkg/analyzer/lib/src/dart/constant/value.dart:2285-2295 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":1282}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6d593afd4476cfc8dacdf9a21d681e5e5f36f45b5c6ab48f57202e8faeaeba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart:341-351 | pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart:1344-1354 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"512db95f44d81b922cd43f56afda26a1c098014674bcbf7e6456a7cf68951bfb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:239-248 | pkg/analyzer/lib/src/dart/resolver/increment_or_decrement_resolver.dart:91-101 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d6da4d4c99bb64836cd213d6596e6b38f5bd0f28d77284831b22d3245cfe915"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:368-378 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:434-444 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"36ed45cb229338d6d6345fac4baff56cfaaee3085fe20f039d518690f1acb9e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:960-969 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:1014-1024 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":960}}}],"partialFingerprints":{"codehealthFindingId/v1":"8950c940a5ee31617f5add96e42f6561808a3631b2c7415dbfeab2fe9c3feb0c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:720-730 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:933-943 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"d15f4769e2ef6f3233940207c792ce4da3ef6e5869fe8491eb6117955c01b729"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/scope_context.dart:68-78 | pkg/analyzer/lib/src/dart/resolver/scope_context.dart:156-166 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/scope_context.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c10f55f564705e27c668dc3b8182bf1ba7e74502f90de36ccdf728801935d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/fasta/ast_builder.dart:2178-2188 | pkg/analyzer/lib/src/fasta/ast_builder.dart:2199-2209 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":2178}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b3fe204b96712044eed001937ec6066e6252840d51489ac06e961c8e24f773f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_writer.dart:647-657 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:811-821 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":647}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6edf499928cc020d22c4ff2fb48ad92238954aa4aee3acf62e59603645d93b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/summary2/informative_data.dart:373-383 | pkg/analyzer/lib/src/summary2/informative_data.dart:506-516 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e25dab1e488fac597fc6dc9b07092663bde2b4366408f4903168919a5fd4aed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/compiler/lib/src/js/rewrite_async.dart:1255-1265 | pkg/compiler/lib/src/js/rewrite_async.dart:1901-1911 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1255}}}],"partialFingerprints":{"codehealthFindingId/v1":"2866e25c27e3978f66d07cb9a67a5c2c5b47890cbfa1b67287158971ee7e8498"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dap_adapters/lib/src/protocol_stream_transformers.dart:75-85 | pkg/dap_adapters/lib/src/stream_transformers.dart:30-40 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_stream_transformers.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4fb4bd46343f5f4259c1c79d832dcfabe2eda9c0a9da0a930e6e31c302628b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dartdev/lib/src/analysis_server.dart:211-221 | pkg/dartdev/lib/src/lsp_analysis_server.dart:222-232 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/analysis_server.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"b503725eed8e52dd9ebb163ffe950f6225ef4911d2b6f1346db03d0930c88c94"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:1427-1437 | pkg/js_ast/lib/src/builder.dart:1242-1252 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1427}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0ed4edb2f0c5c2b41ba5a6b2a8700f28f1cd7ace2b5861853c36a260695232c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:1923-1933 | pkg/js_ast/lib/src/printer.dart:2105-2115 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1923}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7df503d2f7ea0873b58cf08eb05dfbf9187f3ca8b982577c0cb6abff38e4356"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4617-4627 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5219-5229 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4617}}}],"partialFingerprints":{"codehealthFindingId/v1":"195592be5fbd716eaa4876536e691d7f538c6817b3d03adc3e54b4ef1154e8a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5457-5467 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6067-6077 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5457}}}],"partialFingerprints":{"codehealthFindingId/v1":"d295adadddfd769bec7dfa97201cd526f7d687c1ce0f66aa23d02b63b14e985a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6245-6255 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6934-6944 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6245}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0094619e2f43eb366f0d0868679bc3d880346ee339538d4946a83bd7cb384d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7275-7285 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8142-8152 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7275}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa438c873207702364da44da3807d9610a3420402bc97f1fa37fe4fc2a8eeebd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/builder/record_type_builder.dart:111-122 | pkg/front_end/lib/src/builder/record_type_builder.dart:132-142 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/record_type_builder.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b23a9ac5830a276373104270db7507b8b873bb7ca463fbef0135b7e7af8e0d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/codes/type_labeler.dart:554-564 | pkg/front_end/lib/src/codes/type_labeler.dart:586-596 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"95049b14174be9bec61e031555fe4e6ed49ddd2843c26f1575db58328892e9b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:7699-7709 | pkg/front_end/lib/src/kernel/body_builder.dart:7730-7740 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":7699}}}],"partialFingerprints":{"codehealthFindingId/v1":"a93f4e86bcbdb237303f9fa740fa066bf3a6a6a944dd589bdfdba3b569cb57a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/kernel/collections.dart:275-285 | pkg/front_end/lib/src/kernel/internal_ast.dart:7939-7949 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/collections.dart\u0060 and \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 73 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":"pkg/front_end/lib/src/kernel/collections.dart"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a699d1ab9d53a1598033eb61db02db12d5c4498acbedb367ab0e0a9f8bdc9f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10\u201311 lines \u00D7 2): pkg/front_end/lib/src/kernel/expression_generator.dart:2673-2683 | pkg/front_end/lib/src/kernel/expression_generator.dart:3149-3158 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":2673}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d49e16957c62a2a86ffc33f91880007be850b3bbfb2c25e8296138647edd89d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/source/source_builder_mixins.dart:106-116 | pkg/front_end/lib/src/source/source_type_alias_builder.dart:355-368 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_builder_mixins.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"4805a5ecf91734a1e2a37256bac20627117c220f9463c928192e2cdbe9b513c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:5541-5551 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:5627-5637 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5541}}}],"partialFingerprints":{"codehealthFindingId/v1":"b79bf8925834d8a907afa49c9ee821e3ae71b503ac5be7a0297fefb43375bb2e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:7126-7136 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:8709-8719 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":7126}}}],"partialFingerprints":{"codehealthFindingId/v1":"8712cd853b42c71c871d2b522f9e3bc6c2308e651384f2ddd9b605ad435c3101"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:10966-10976 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:10988-10998 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":10966}}}],"partialFingerprints":{"codehealthFindingId/v1":"0077cd46c392f0217033332a5976b6f8f6d5d8c7a1fe82faf8a9e3da248926e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/kernel/lib/src/ast/types.dart:1298-1308 | pkg/kernel/lib/src/ast/types.dart:1922-1932 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1298}}}],"partialFingerprints":{"codehealthFindingId/v1":"36e24d21a2553f0ec88c6ba0bc1ba8be9d203474c8062b866f5b3eead4cc9b0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/observatory/lib/src/elements/class_instances.dart:93-104 | pkg/observatory/lib/src/elements/isolate/shared_summary.dart:66-76 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_instances.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"eae2a082d84288a6f0e17f9acdad142c47122ec23dd56f83d268ea1308027f91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:1269-1279 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1300-1310 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1269}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb5ed6512f8a74bf8631aa8d115aea98fef7d1b271331b7887412bfabfe42d77"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate_ref.dart:41-51 | pkg/observatory/lib/src/elements/nav/isolate_menu.dart:48-58 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate_ref.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcc483357ae1e4b3d5a39af2ddd9d5d0e5f5d9f2c0dba3f02c15d899a38b972f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/observatory/lib/src/elements/script_inset.dart:566-576 | pkg/observatory/lib/src/elements/script_inset.dart:579-589 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"894e5bfdf4cf446704636f4f4d5be78a33a0c987217b27641a6b48b378d62f95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): runtime/tools/heapsnapshot/lib/src/expression.dart:537-547 | runtime/tools/heapsnapshot/lib/src/expression.dart:550-560 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/heapsnapshot/lib/src/expression.dart"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"c73c0a0959be0cf21f6bc8ff84100c56ac07865c18431b6ab7cbb0e2419e8f0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/vm/lib/transformations/record_use/record_instance.dart:173-183 | pkg/vm/lib/transformations/record_use/record_instance.dart:186-196 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/record_use/record_instance.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"28cb79bb6e8e5c697af7cb3da0d41553cbaa9c239875817862e0e064392f5d99"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/vm/lib/transformations/type_flow/transformer.dart:2421-2431 | pkg/vm/lib/transformations/type_flow/transformer.dart:2469-2479 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2421}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb0419ce93be8eee45b5f9170fdd1e83765593c5b5c0e2d78b2d529c22275bef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 9): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6428-6436 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6531-6540 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6774-6782 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6897-6906 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:6965-6973 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7105-7114 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7167-7175 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7361-7370 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7427-7435 \u2014 all 9 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6428}}}],"partialFingerprints":{"codehealthFindingId/v1":"62991a129d0a1cb8144ead97adf4121be710131e09db721285c50e82f2b32740"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 7): sdk/lib/_internal/vm/lib/typed_data_patch.dart:532-541 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:875-884 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:993-1002 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1336-1345 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1679-1688 | sdk/lib/_internal/wasm/common/typed_data.dart:2084-2093 | sdk/lib/_internal/wasm/common/typed_data.dart:2439-2448 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a2b61c163cee0e3c8eee98325ed9c7bd5988b909d649ec67599f66202b2c4e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:382-391 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:719-728 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1111-1120 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1454-1463 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1797-1806 | sdk/lib/_internal/wasm/common/typed_data.dart:2259-2268 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"95fd0536a131ff093e150f746a1cfea0d403042843e3e4a33e908cde77ca284b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:437-446 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:774-783 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1169-1178 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1512-1521 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1855-1864 | sdk/lib/_internal/wasm/common/typed_data.dart:2318-2327 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"5269c8270e319cc5a742d2160a1936ddfb349f46fdcdfc523af8308410921f1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 6): pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart:29-38 | pkg/analysis_server/lib/src/services/snippets/dart/for_statement.dart:29-38 | pkg/analysis_server/lib/src/services/snippets/dart/if_statement.dart:29-38 | pkg/analysis_server/lib/src/services/snippets/dart/test_definition.dart:33-42 | pkg/analysis_server/lib/src/services/snippets/dart/test_group_definition.dart:31-40 | pkg/analysis_server/lib/src/services/snippets/dart/while_statement.dart:29-38 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/snippets/dart/if_statement.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 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":"pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"37228aeddb8981ca52a8162096ff3a1e3f40185e507bd450e1802f9c99a0944a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:249-258 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:281-290 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:313-322 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:541-550 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:572-581 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"076ede2dc3c06e845b53f95ad22badbf63978a2e9d14feb51a23d256691ca553"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:158-167 | pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart:170-179 | pkg/front_end/tool/fuzz/analyzer_helper.dart:398-407 | pkg/front_end/tool/fuzz/analyzer_helper.dart:410-419 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart\u0060 and \u0060pkg/front_end/tool/fuzz/analyzer_helper.dart\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":"pkg/analysis_server/tool/benchmark_tools/lsp_messages.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc19a03279c564c61f766b07c41a67ae1ca6a03a11f2a8f69c061acaba8f47e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:580-589 | sdk/lib/_internal/js_runtime/lib/js_number.dart:670-679 | sdk/lib/_internal/vm/lib/integers.dart:489-498 | sdk/lib/_internal/wasm/common/boxed_int.dart:382-391 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"281184e4cadceda190f66afc24d4e850bc81d05ecff57b185e96830221dde889"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): pkg/native_compiler/lib/snapshot/snapshot.dart:1958-1967 | pkg/native_compiler/lib/snapshot/snapshot.dart:2010-2019 | pkg/native_compiler/lib/snapshot/snapshot.dart:2068-2077 | pkg/native_compiler/lib/snapshot/snapshot.dart:2142-2151 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":1958}}}],"partialFingerprints":{"codehealthFindingId/v1":"700b78bab456c203770f5f1f3a99dce8fb7bef458ce989385a0b355dc3633f38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): pkg/analyzer/lib/src/dart/ast/ast.dart:13017-13026 | pkg/analyzer/lib/src/dart/ast/ast.dart:19471-19480 | pkg/analyzer/lib/src/dart/ast/ast.dart:19628-19637 | pkg/analyzer/lib/src/dart/ast/ast.dart:39141-39150 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13017}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a3d0f4f82f51423f616a2390fcc8403e2b534472f17f54fb285852cfb215bc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:167-176 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:181-190 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:195-204 | pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart:211-220 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7c07eb7e9d50243f77883516f6ba0ab48adf6863afe1a4b89b2fbe93954a76d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): pkg/analyzer/lib/src/fine/manifest_item.dart:59-68 | pkg/analyzer/lib/src/fine/manifest_item.dart:251-260 | pkg/analyzer/lib/src/fine/manifest_item.dart:440-449 | pkg/analyzer/lib/src/fine/manifest_item.dart:1341-1350 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_item.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e9d6a219c8d2b8c6de00812325489c86f28971639138e16441e6b6a8c7e885"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:210-219 | pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:826-835 | pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:1604-1613 | pkg/analyzer/lib/src/summary2/ast_binary_reader.dart:2029-2038 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"579bb355becb75287687a4c65c57c06e20fa8cc8238c82802a89ef82339f2fe7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): pkg/analyzer/lib/src/summary2/element_builder.dart:1630-1639 | pkg/analyzer/lib/src/summary2/element_builder.dart:1837-1846 | pkg/analyzer/lib/src/summary2/element_builder.dart:1888-1897 | pkg/analyzer/lib/src/summary2/element_builder.dart:1978-1987 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1630}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e3cd380580e344e9f9c6ecf5ca53af765a747315aae2df8333cac718855ef4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): pkg/analyzer/lib/src/summary2/informative_data.dart:292-301 | pkg/analyzer/lib/src/summary2/informative_data.dart:327-336 | pkg/analyzer/lib/src/summary2/informative_data.dart:356-365 | pkg/analyzer/lib/src/summary2/informative_data.dart:486-495 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5ead869226d4493ab5bb6af518f13f3d9d1f40381c4349780e5217dcbff51ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 4): pkg/kernel/lib/testing/type_parser.dart:104-113 | pkg/kernel/lib/testing/type_parser.dart:144-153 | pkg/kernel/lib/testing/type_parser.dart:173-182 | pkg/kernel/lib/testing/type_parser.dart:208-217 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/testing/type_parser.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ce72a7017cafcd5e9c9be656467d3afd50c65a0d874454523deede96be46f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:411-420 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:414-423 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:483-492 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"851dd5da6f4b3857601ad98c743fae93c04c80f3bebcc6481892509a62f2a355"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart:656-665 | sdk/lib/_internal/js_runtime/lib/core_patch.dart:659-668 | sdk/lib/_internal/wasm/common/errors_patch.dart:177-186 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/core_patch.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"9200f8e749e0b6215dc641dbee461d39a80eb2f30017ce2111e21be9d4cc0cc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1402-1411 | sdk/lib/_internal/wasm/common/convert_patch.dart:1588-1597 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1280-1289 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1402}}}],"partialFingerprints":{"codehealthFindingId/v1":"450b5773132420b25450f31916352a28758bef1e00cfecfc57ac1982e4bb6e20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/wasm/common/typed_data.dart:1085-1094 | sdk/lib/_internal/wasm/common/typed_data.dart:1147-1156 | sdk/lib/_internal/wasm/common/typed_data.dart:1193-1202 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":1085}}}],"partialFingerprints":{"codehealthFindingId/v1":"00731e0e7849803457a0d5259853c88bb0a06dd59fd57deb54173e86c272a8f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): pkg/analysis_server/lib/src/lsp/handlers/handler_call_hierarchy.dart:224-233 | pkg/analysis_server/lib/src/lsp/handlers/handler_hover.dart:43-52 | pkg/analysis_server/lib/src/lsp/handlers/handler_type_hierarchy.dart:61-70 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_call_hierarchy.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"0282eb4f714be6fad2ad8c25751078ad2812b52f6f8ca8aec4562505f45d4396"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): pkg/analyzer/lib/src/dart/element/subtype.dart:437-446 | pkg/analyzer/lib/src/dart/element/subtype.dart:465-474 | pkg/analyzer/lib/src/dart/element/subtype.dart:490-500 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/subtype.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"6665807e3f9731f71997b6ee9e4569f626999beb2f710379678ab39c701a94b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): pkg/analyzer/lib/src/generated/error_verifier.dart:2130-2139 | pkg/analyzer/lib/src/generated/error_verifier.dart:2165-2174 | pkg/analyzer/lib/src/generated/error_verifier.dart:2191-2200 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":2130}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc5d080914c7e5e02cd01a578617fcce934ccbbca8ec291bc8e636fb7994aeec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 3): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6808-6816 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7516-7522 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:9112-9121 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6808}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeb77cf7c717e6e9215738fb397def033b375d115411d3ac76f308e6d5c358b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): pkg/observatory/lib/src/elements/class_allocation_profile.dart:127-136 | pkg/observatory/lib/src/elements/cpu_profile.dart:161-170 | pkg/observatory/lib/src/elements/cpu_profile_table.dart:481-490 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_allocation_profile.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f391ce48146cf07b16d2bfd34142b13c65cb8486da436ad948e5ed0b783ebd8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): pkg/observatory/lib/src/elements/field_view.dart:190-199 | pkg/observatory/lib/src/elements/function_view.dart:173-182 | pkg/observatory/lib/src/elements/instance_view.dart:188-197 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/field_view.dart\u0060 and \u0060pkg/observatory/lib/src/elements/function_view.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 33 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":"pkg/observatory/lib/src/elements/field_view.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"a419541bdb6cda8484d6ceb3be04295db9c87df5bc63e18f745e7a8844cf0e00"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:977-986 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:943-952 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cdbce74d4957ca2d0cb93f179e5fe769073662d1054b8bbe2d0dcadc4df312f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1280-1289 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1947-1956 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1280}}}],"partialFingerprints":{"codehealthFindingId/v1":"f07e686af3807ea53eba80bea07304e0c3c6e605dfb2b96a9bb2825f2f7510dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_semantic_token_full_in_big_file.dart:78-87 | pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_type_in_big_file_ask_for_completion.dart:80-89 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/single_benchmarks/lsp_semantic_token_full_in_big_file.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f329106543bfe0f10a8e6d32e1de60b473f7682f9c60f0e5e83e1bd3850e5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/tool/wolf/generate.dart:96-105 | pkg/analyzer/tool/wolf/generate.dart:110-119 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/wolf/generate.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6c45a86efe9721eaf25c1cb156d960ff2b59d253094fa32f4efd2883a4d94f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dart2native/lib/macho.dart:1007-1016 | pkg/dart2native/lib/macho.dart:1300-1309 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2native/lib/macho.dart"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"26efaab9272aef16446d4f49b79aeeafba23b6f4c97a18473e8983de78b2d442"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u201310 lines \u00D7 2): pkg/dart2wasm/lib/code_generator.dart:3298-3307 | pkg/dart2wasm/lib/code_generator.dart:3316-3322 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":3298}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aed5d9b89c6dc7f8c6d52d0e93d8a7e49a4c53d2f30940c96eb7b6e642ea24f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dart2wasm/lib/code_generator.dart:4731-4740 | pkg/dart2wasm/lib/code_generator.dart:4743-4752 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":4731}}}],"partialFingerprints":{"codehealthFindingId/v1":"a88e3020e6b5b8679d68c9332b5783d26281385e50efd7079cdc1f44beeb6156"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dart2wasm/lib/constants.dart:656-665 | pkg/dart2wasm/lib/constants.dart:692-701 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"60cc02271e6aed6c2c43f073dfb98d914021018b19ac15a5bacf12d5eba10499"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_index_full.dart:50-59 | pkg/front_end/testcases/inference_new/infer_assign_to_index_full.dart:47-56 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_index_full.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"f081596c4a90c7e5ece0110dc76cd9e9ba40f56bbd305ff80401e9ecae441f70"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:2141-2150 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:2159-2168 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":2141}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de5a34bf140da71bd7155af4ca53946e1da7938275d1e58bcb33be453fc6b02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart:458-467 | sdk/lib/_internal/js_runtime/lib/core_patch.dart:468-477 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/core_patch.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e2eb7dac2667bd71d3f4bdee143fd9b4468cadc2177f70c4cf1ef693c7b9829"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart:294-303 | sdk/lib/_internal/js_runtime/lib/js_patch.dart:409-418 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_patch.dart\u0060 as WHOLE FILES: this scan already matched 9 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":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8f63f4ade90612f001f185f0da75e120b37e6e9c76acbac82009cc5eabd6678"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u201310 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:278-285 | sdk/lib/_internal/js_runtime/lib/js_array.dart:380-389 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd62b61809ba524fb1599798944ea17bda8107172cb9ba4fdc83e5abd0dfd5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:493-502 | sdk/lib/_internal/js_runtime/lib/js_array.dart:679-688 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"24fdbb1d9107ea7ee5cdfbbb138ad916c2b78c117289b2e660c0398bb407f795"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:145-154 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:110-119 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 63 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aba24eefaf843cffbeba30e09849c2cca758a24cbf1cdbc5f407663315a645c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/vm/lib/array.dart:140-149 | sdk/lib/_internal/vm/lib/array.dart:152-161 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/array.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"04c63f0573848b042edb3f0c8ccb5f1610918ba15f2cff9f769d390c53a437b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:42-51 | sdk/lib/_internal/wasm/common/convert_patch.dart:34-43 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc167b99204964d802e7d6e6074b070468421cfdd068a3b0f2602de09b96808"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/vm/lib/integers.dart:417-426 | sdk/lib/_internal/wasm/common/boxed_int.dart:309-318 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/integers.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/boxed_int.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fd94b7ff84bdae974eb91e410090d80214ee6d4c92c381c6e72c81c5386492f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:630-639 | sdk/lib/_internal/wasm/common/compact_hash.dart:595-604 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"d354c54553e9e785433624c6ef2530b1f7049f802d9c6b2afec14b9859b5db5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/wasm/common/convert_patch.dart:2219-2228 | sdk/lib/_internal/wasm/common/convert_patch.dart:2311-2320 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2219}}}],"partialFingerprints":{"codehealthFindingId/v1":"99fb602ab462d0af57cd6a18e2a034d86297354e91dc29614db1ba44b1c82aa7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:640-649 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2131-2140 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fa32dbfa4af1c235794ed4ed23c95e047ee3b9683a7d54cdf318ab9e13e31a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:780-789 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2263-2272 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"21e9d06f3464e6e8b96c2912eb7b4b524ae2b48cfdb26460a66e759275edcaa3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/async/stream_impl.dart:243-252 | sdk/lib/async/stream_impl.dart:783-792 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream_impl.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6282c0a7aa9e75ce22549f74eb02668ad51250fd4ea5516cc7b5bb1f379af62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/kernel/lib/binary/ast_from_binary.dart:4495-4504 | pkg/kernel/lib/binary/ast_from_binary.dart:4514-4523 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":4495}}}],"partialFingerprints":{"codehealthFindingId/v1":"8145e65bae1310b822c8f1c713c6d9b6415fad2ea5ff4580c40ab9d5bbd78c84"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/compiler/lib/src/deferred_load/import_set.dart:285-294 | pkg/dart2wasm/lib/deferred_load/import_set.dart:279-288 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/import_set.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"205131ebb7a41f4b4a15585b5fee6cb9d3c6cfd4d26ae73a89cda096eea0b955"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/cfg/lib/front_end/ast_to_ir.dart:1052-1061 | pkg/cfg/lib/front_end/ast_to_ir.dart:1106-1115 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1052}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8d00e301dcfe2a28cc787b849607d3dc2ed2aa842c5c45eba94bf364a66e88e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/cfg/lib/front_end/ast_to_ir.dart:1747-1756 | pkg/cfg/lib/front_end/ast_to_ir.dart:1772-1781 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1747}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cacac8dbc25b86a42bfac8e38c836b2bd1fbcb6c77c5d2bfa8e2336cdbe94f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/native_compiler/lib/passes/lowering.dart:310-319 | pkg/native_compiler/lib/passes/lowering.dart:361-370 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/lowering.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aba0c52e5e33717655e575b0cdba0fdf04d231f4e6685ec8663e886c5a1fc86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:2165-2174 | pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart:2726-2735 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2165}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b71825b031011df7105aec566e85399826bed2c16482637120d0a3d6859f4a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart:99-108 | pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart:75-84 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"0766d04c342f6a1e079ea2e317bd7664554af5170df8d36f70ace654f8b7a35d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart:60-68 | pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart:70-79 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ac3baa00b5dac62c41e7f9025a0a227ab235e8bc01667fd08c3ce83b246a7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/remove_unused_local_variable.dart:503-512 | pkg/analysis_server/lib/src/services/correction/dart/remove_unused_local_variable.dart:519-528 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused_local_variable.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5ce9fed38fb55a1e3da33d3e46419910cb70f9784da34ba860fcf572a931c87"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/dart/analysis/referenced_names.dart:85-94 | pkg/analyzer/lib/src/dart/analysis/referenced_names.dart:119-128 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/referenced_names.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0bf50a38b5dfdfbb09a68e0e0d449dd0914579b21681940b52323a938c0e7db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:7861-7870 | pkg/analyzer/lib/src/dart/ast/ast.dart:8374-8383 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7861}}}],"partialFingerprints":{"codehealthFindingId/v1":"58e52a31e1d6d7c19733cbaf6e6d169a456dd082615547006960fd028031d902"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:7879-7888 | pkg/analyzer/lib/src/dart/ast/ast.dart:8393-8402 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7879}}}],"partialFingerprints":{"codehealthFindingId/v1":"72799635809e3e7ca17a41f5246e2dc2c1f291e305ea782c9163aaed3c25c2e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:37073-37082 | pkg/analyzer/lib/src/dart/ast/ast.dart:37087-37096 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":37073}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca914cebf0af450ce8d404035906f5f8213fe10b0b4a8dd31dec5f524556dff7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/element_locator.dart:149-158 | pkg/analyzer/lib/src/dart/ast/element_locator.dart:628-637 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/element_locator.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8b8f03961010378caaffa0933eea49d562f26eada6bfdbcb9b591c3396b8528"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/dart/micro/resolve_file.dart:330-339 | pkg/analyzer/lib/src/dart/micro/resolve_file.dart:523-532 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/micro/resolve_file.dart"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"4562f2ca3e6b683155e6a774005ba6a40eb599d86efc5777297a176ea8813025"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart:88-96 | pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart:148-157 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"34e1995f711f1b4bf1703d0c3226e6efa5daf4b3d30edc4acdc3423d4c834b87"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart:922-931 | pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart:1272-1283 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b5f853bc3d8ec0725d41db6eae23a0f4e680eee3ad7d691af776d5f015c3932"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/scope_context.dart:170-179 | pkg/analyzer/lib/src/dart/resolver/scope_context.dart:386-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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/scope_context.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"735a9f14ec6fd237e51300605a99b88c4cc12508a43c66f6714b196ecc5f5630"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/error/element_usage_detector.dart:278-287 | pkg/analyzer/lib/src/error/element_usage_detector.dart:820-829 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"693392bc04135ded996b14e5e3d101c301eea643c6d02e4cf1672f0471f60e7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/error/element_usage_frontier_detector.dart:35-44 | pkg/analyzer/lib/src/error/element_usage_frontier_detector.dart:136-145 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_frontier_detector.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b2f6db9455fb994de50d646b3711f4b168e5001d417246c7bb29fcf2dd0e987"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_reader.dart:305-314 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:499-508 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"54c4d9c8f8a7d25218f24a78750290d80c5fb30e9075ca365c917801a02f750a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/summary2/informative_data.dart:164-173 | pkg/analyzer/lib/src/summary2/informative_data.dart:457-466 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed7e7b9f004c62753a71575f74fa636c538921ad0603466e003ba90fcbc9a29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer/lib/src/summary2/informative_data.dart:898-907 | pkg/analyzer/lib/src/summary2/informative_data.dart:914-923 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"280ff0d37cad4806656e6df1cba82a8ec8a82a35781647ae496e0ad63b99a884"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/compiler/lib/src/constants/values.dart:715-724 | pkg/compiler/lib/src/constants/values.dart:1162-1171 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"070124fceb2a79c0652b73404138f5f6f39beb703ceae18fa0bf70fad7e0ecbc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/compiler/lib/src/constants/values.dart:731-740 | pkg/compiler/lib/src/constants/values.dart:1177-1186 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4def48232b8bc46aca8ef856055e4910c69f639cb3894d01457e08603dfac6f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/compiler/lib/src/inferrer/engine.dart:286-295 | pkg/compiler/lib/src/inferrer/engine.dart:302-312 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"1663ddd21f6eed3766e69d94f3bf5cbdd6201e2b77d14d3e783f96b8a8669f5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/compiler/lib/src/inferrer/type_system.dart:838-847 | pkg/compiler/lib/src/inferrer/type_system.dart:857-866 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_system.dart"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3a42cc93977516582e3039aa768244a51144f725f55f375a6266dd8b42188f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/compiler/lib/src/js_backend/annotations.dart:544-553 | pkg/compiler/lib/src/js_backend/annotations.dart:559-568 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"e01f45cd03682baf57412ce2dbf9f54bafdc06627b88cfddac7804f06d5e8965"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/compiler/lib/src/kernel/element_map_impl.dart:1415-1424 | pkg/compiler/lib/src/kernel/element_map_impl.dart:1489-1498 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1415}}}],"partialFingerprints":{"codehealthFindingId/v1":"16786635b9db27a5d8d5b89d60ae4167e8ac61b5969c3e1e2959f971c0aecf76"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201310 lines \u00D7 2): pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart:296-304 | pkg/dds/lib/src/devtools/memory_profile.dart:335-344 \u2014 before extracting anything, compare \u0060pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart\u0060 and \u0060pkg/dds/lib/src/devtools/memory_profile.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 78 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc7efd98b4b14e903b998aca1642e0374a7ac574da1157211bbe3faf75944d97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:869-878 | pkg/js_ast/lib/src/builder.dart:793-802 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"33fe21341715f059a1b80d7ad45810f00c0836c6d39eb882aacaeeab1e04921f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5530-5539 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6140-6149 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5530}}}],"partialFingerprints":{"codehealthFindingId/v1":"089ce3d8254e911522803f6d42ea0eb6622f4f3b304b4c715cd898742edd8958"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:4336-4345 | pkg/front_end/lib/src/kernel/body_builder.dart:4358-4367 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4336}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e5296895c8e47bec93d97711da7f5db16a068b349de1f9c2661763a34b34637"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:190-199 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:210-220 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"cffe067cd08149fe3175f37ceae714242552bb262ccd3b214dfa38e3a299ffa3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/lib/src/kernel/resolver.dart:1006-1015 | pkg/front_end/lib/src/kernel/resolver.dart:1016-1025 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":1006}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c5992c4f1ff9cbddf0ae32394cb18731a75e8a45fb3b74dc396e401abbe2fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:4012-4021 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:4049-4058 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4012}}}],"partialFingerprints":{"codehealthFindingId/v1":"027aa3018d12a4d0d43b3cefabc6b955d99a707e0f1ef6ea1c789965c49d735d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/lib/src/type_inference/type_inference_engine.dart:93-102 | pkg/kernel/lib/src/find_type_visitor.dart:88-97 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4e2f00010ea2955c371c18abc0b3262a5414c737665362817677b9a6ffda63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:506-515 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:603-612 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"67982b4e122e5eccb8d617a5a16139789f0b0395c9936a600a30084f56e21f3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/kernel/lib/src/merge_visitor.dart:243-252 | pkg/kernel/lib/src/merge_visitor.dart:283-292 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/merge_visitor.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"66574267e87131b1c1e0e24ca6041ee9b0160a6dd552b7e3af2d3d81e71ed255"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/kernel/lib/src/non_null.dart:158-168 | pkg/kernel/lib/src/non_null.dart:193-202 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/non_null.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"896f769ee554cd3a4e522922cf185b61881e180868b69906eb28e32c92dbe167"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/linter/lib/src/rules/parameter_assignments.dart:123-132 | pkg/linter/lib/src/rules/parameter_assignments.dart:139-148 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/parameter_assignments.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"e534ec75750fa0d2f509ffd24a82135095cabbbde7b8ce90cad6115a008ddcd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/linter/lib/src/rules/use_build_context_synchronously.dart:240-249 | pkg/linter/lib/src/rules/use_build_context_synchronously.dart:261-270 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6553c5f15dd1505b62b4eaa5accbc7f98165add888423710bd1d46a6bb38bc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/observatory/lib/src/elements/class_tree.dart:76-85 | pkg/observatory/lib/src/elements/sentinel_view.dart:69-78 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_tree.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b692fa9ef565b8c1cce41bd827887f8b44129e8ac3e081de0c13c3939e316b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/observatory/lib/src/elements/class_view.dart:470-479 | pkg/observatory/lib/src/elements/instance_view.dart:348-358 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_view.dart"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"07775f8e8f156780ce7f0a7f5c332eed63399841bd060cddb524b2e58dc17537"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/vm_snapshot_analysis/lib/src/commands/compare.dart:42-51 | pkg/vm_snapshot_analysis/lib/src/commands/summary.dart:38-47 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/commands/compare.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a2f1a51d8a2776519d1f02bdde3ab01fa794e7a271da425700449ef0587a06c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): runtime/tools/heapsnapshot/lib/src/cli.dart:173-182 | runtime/tools/heapsnapshot/lib/src/cli.dart:208-217 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/heapsnapshot/lib/src/cli.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"30a79edf290f51058915ac2d8e208b22af252536c75833a8450733fc30d5a9bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/kernel/lib/text/ast_to_text.dart:1327-1336 | pkg/kernel/lib/text/ast_to_text.dart:1378-1387 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":1327}}}],"partialFingerprints":{"codehealthFindingId/v1":"294d09e9f1f7b8f45d1e404deb4e76b290491bae98331257136b6f62d95cd97d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/vm/lib/transformations/type_flow/summary.dart:926-935 | pkg/vm/lib/transformations/type_flow/summary.dart:941-950 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":926}}}],"partialFingerprints":{"codehealthFindingId/v1":"c21aacb59974e9e44826e64886076e509a8a37c388248b631593ad5682b86c62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/vm/lib/transformations/type_flow/summary_collector.dart:205-214 | pkg/vm/lib/transformations/type_flow/summary_collector.dart:218-227 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"e756b9fe6c79fd3f2e297603f3f7d514d0864d5b5fd647a6f9ec9e5451948c29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/vmservice/running_isolates.dart:317-326 | sdk/lib/vmservice/running_isolates.dart:480-489 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/vmservice/running_isolates.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eda759783dfc1c4f0668f2ae46c210080eefe07da7fb0500e864614316ab18c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 9): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:878-886 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:995-1003 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1114-1122 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1225-1233 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1348-1356 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1473-1481 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1596-1604 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1792-1800 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1896-1904 \u2014 all 9 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":878}}}],"partialFingerprints":{"codehealthFindingId/v1":"88fe79a41add4527bbb02d4a98086382653accafeef26b43a55a10e0422765ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 5): pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart:782-789 | sdk/lib/_http/http_impl.dart:1120-1127 | sdk/lib/_internal/vm_shared/lib/string_buffer_patch.dart:102-109 | sdk/lib/_internal/wasm/standalone/string_buffer_patch.dart:45-53 | sdk/lib/io/io_sink.dart:298-305 \u2014 before extracting anything, compare \u0060sdk/lib/_http/http_impl.dart\u0060 and \u0060sdk/lib/io/io_sink.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"e267030b1d4c4bbeeb22dd980c519936c628cfab8cc88f966beab39340f6a868"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 5): sdk/lib/_internal/vm/lib/typed_data_patch.dart:496-504 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:834-842 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1236-1244 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1579-1587 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1922-1930 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c26ab0bce701d9081679242fb7e98d855f8a124775d950093a61f9d56ebef7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 5): pkg/analyzer/lib/src/fine/manifest_item.dart:83-91 | pkg/analyzer/lib/src/fine/manifest_item.dart:273-281 | pkg/analyzer/lib/src/fine/manifest_item.dart:380-388 | pkg/analyzer/lib/src/fine/manifest_item.dart:464-472 | pkg/analyzer/lib/src/fine/manifest_item.dart:1367-1375 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/manifest_item.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"f60c7b40e580744549a98628b644eafbf4da4f33b3f645c53c20014f5983918a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): sdk/lib/_internal/vm/lib/growable_array.dart:614-622 | sdk/lib/_internal/vm/lib/growable_array.dart:628-636 | sdk/lib/_internal/vm/lib/growable_array.dart:643-651 | sdk/lib/_internal/vm/lib/growable_array.dart:668-676 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67caaa4c678d36de679c1d02bf7c7073deeb8d581964611c73521b7f7bed268"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:643-651 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:681-689 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1098-1106 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1126-1134 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":643}}}],"partialFingerprints":{"codehealthFindingId/v1":"4614fee3ba5cef0bcfcb25ee180a580577eac7cf23a6878c23a6902ef5918b96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): sdk/lib/_internal/wasm/common/compact_hash.dart:608-616 | sdk/lib/_internal/wasm/common/compact_hash.dart:638-646 | sdk/lib/_internal/wasm/common/compact_hash.dart:1018-1026 | sdk/lib/_internal/wasm/common/compact_hash.dart:1047-1055 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"3908d4c2bfc5ff1f52c4e6b51341329d76371d2377e71e7d643e5397a9e48c9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/analyzer/lib/src/dart/constant/value.dart:2167-2175 | pkg/analyzer/lib/src/dart/constant/value.dart:2189-2197 | pkg/analyzer/lib/src/dart/constant/value.dart:2265-2273 | pkg/analyzer/lib/src/dart/constant/value.dart:2287-2295 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2167}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1249206a373f25008e4b193d195d030d56f20f5c705c1c8ba402461fb828d99"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/compiler/lib/src/js_model/elements.dart:600-608 | pkg/compiler/lib/src/js_model/elements.dart:733-741 | pkg/compiler/lib/src/js_model/elements.dart:811-819 | pkg/compiler/lib/src/js_model/elements.dart:887-895 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1ed653a7c61db1132a528bb21144552be19644495efc8c2c6d98154552de05a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:71-79 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:124-132 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:171-179 | pkg/front_end/lib/src/util/abstracted_ast_nodes.dart:218-226 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"82aa890e66a86c267f263bfeb7274fac60447ee6378ece3d8d60422211d8b4b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/front_end/tool/coverage_merger.dart:1166-1174 | pkg/front_end/tool/coverage_merger.dart:1236-1244 | pkg/front_end/tool/coverage_merger.dart:1265-1273 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":1166}}}],"partialFingerprints":{"codehealthFindingId/v1":"62737aab15ad89403a4eaad9dddb97c22973be2d1605232872d2cc558e011f7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/native_compiler/lib/back_end/arm64/assembler.dart:685-693 | pkg/native_compiler/lib/back_end/arm64/assembler.dart:714-722 | pkg/native_compiler/lib/back_end/arm64/assembler.dart:763-771 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":685}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7909558c072e37fb341fdf49136384dbe96694ca720ac5a8e13eb21139c1d5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/analysis_server/lib/src/protocol/protocol_internal.dart:242-250 | pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart:497-505 | pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart:581-589 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/protocol/protocol_internal.dart\u0060 and \u0060pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/protocol/protocol_internal.dart"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"84045afcbc2ec4a7570e17423e9a38682c8810f3e49146e6e9db6505f608e580"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart:65-73 | pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart:91-99 | pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart:107-115 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_explicit_cast.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"6468a31129e3d345b989059bcb5ae281bbabcffda71c8d966d06434be26bca7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:537-545 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:622-630 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:881-889 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"654a3a758dd82c9329c7372e42e5787dc0195b733fc50bf592215c5663c137f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/kernel/lib/src/dart_type_equivalence.dart:182-190 | pkg/kernel/lib/src/dart_type_equivalence.dart:210-218 | pkg/kernel/lib/src/dart_type_equivalence.dart:344-352 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/dart_type_equivalence.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"516ee4f613869bcf5867ff606610e1741b0dc8b0c017a0b21802c77c60ca317f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 3): pkg/observatory/lib/src/elements/class_tree.dart:144-150 | pkg/observatory/lib/src/elements/heap_snapshot.dart:996-1004 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1023-1031 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/class_tree.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0ae0057fb492cd37e724b6019cee689a5d3e2cc24c30d33133a650d8faa8210"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/observatory/lib/src/elements/isolate_reconnect.dart:75-83 | pkg/observatory/lib/src/elements/json_view.dart:57-65 | pkg/observatory/lib/src/elements/vm_connect.dart:62-70 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate_reconnect.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe3b630c7633adf3c28a0c4f49949e4854d25bbbdfeb76dc7fc9f6ad467e60b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1965-1973 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1513-1521 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1965}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1ac6d03a9f7b0ef26ae45bd802e1cf7134fadf6309c56544956b136e26b0eb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:82-90 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:125-133 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4e0244dfddcbeadc70cb785b3b3004ae009186d486f88c5721bcb17173e49c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/completion_metrics.dart:1220-1228 | pkg/analysis_server/tool/code_completion/completion_metrics.dart:1403-1411 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":1220}}}],"partialFingerprints":{"codehealthFindingId/v1":"df3a221c7634462c79a27d2cace31f1a52e9a6ae447e1ffe8721293dbda0591a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/tool/generators/ast_generator.dart:725-733 | pkg/analyzer/tool/generators/ast_generator.dart:740-748 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"adce95e6e550edaf53c8a37cc2699d07ea7421c0612a599e9cdc88818e12920c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dart2bytecode/lib/bytecode_generator.dart:3205-3213 | pkg/dart2bytecode/lib/bytecode_generator.dart:3903-3911 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":3205}}}],"partialFingerprints":{"codehealthFindingId/v1":"2671c454093fd37afc173a133fc2daa882928a092cd6f989f9cb08ee8ad81363"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dart2bytecode/testcases/type_ops.dart:36-44 | pkg/front_end/testcases/general/vm_type_ops.dart:38-46 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/testcases/type_ops.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5a548d6acd45d6441a0a1cb8abf512d19c1a2ab28173ec92b1f6807baf100e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dart2wasm/lib/async.dart:351-359 | pkg/dart2wasm/lib/code_generator.dart:1069-1077 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/async.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef27b4cd0b0607899d76766ae4356dd29d12c77ea42774bb1ebeb84baa5da2c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dart2wasm/lib/async.dart:460-468 | pkg/dart2wasm/lib/sync_star.dart:336-344 \u2014 before extracting anything, compare \u0060pkg/dart2wasm/lib/async.dart\u0060 and \u0060pkg/dart2wasm/lib/sync_star.dart\u0060 as WHOLE FILES: this scan already matched 5 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":"pkg/dart2wasm/lib/async.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"15465a3d8054ada8ff5d3040e10655ac7bcbfa8109549615e8f31ca33e025449"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dart2wasm/lib/types.dart:950-958 | pkg/dart2wasm/lib/types.dart:977-985 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":950}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0bedcab0e62061929d3acadd2df28cccee7d3432c980c9560515ee3898ed1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/testcases/general/super_signature_access.dart:46-54 | pkg/front_end/testcases/general/super_signature_access.dart:91-99 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/super_signature_access.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"20428659aefbaef3374c535e3335205639d1a9edbba2d81310b1417dad7869b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart:12-20 | pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart:28-36 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/no_such_method_forwarders/regress_53656.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"446a521bd3852e541e138957ced46c57556f4c5961dccec9ce5c2a91bfb966d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/vm_service/tool/dart/generate_dart_common.dart:1263-1271 | pkg/vm_service/tool/dart/generate_dart_common.dart:1303-1311 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":1263}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49f47654a41315a92f979ec1a3c8fa8a2e12a93aa964b354b7d2006f1bdcc74"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:183-191 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:183-191 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cfa60cfd90020c70ec957be13436d22f083a4e38d4428430860fc300f479286"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/internal_patch.dart:32-40 | sdk/lib/_internal/js_runtime/lib/internal_patch.dart:32-40 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/internal_patch.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"94c52b8b36b3cabfe4fd6e24f4b46c0e3a1c1f006be37896291a7a9360e87f7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:459-465 | sdk/lib/_internal/js_runtime/lib/js_array.dart:560-568 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"69efa1970730667aff638de1acc0ec1463e58b90b66db2dd5425e41f53438b7a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:469-475 | sdk/lib/_internal/js_runtime/lib/js_array.dart:572-580 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c69fd9e28544035b377458553eb2eb3ce1b56c7aee460d2197fe992de9595e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:446-454 | sdk/lib/_internal/js_runtime/lib/js_number.dart:536-544 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"38df497c18e5c35c3bbce3028a6814c597248f35165bcbf0a6bdfb19352b7d10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart:262-270 | sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart:232-241 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bed18f290a9d7b663c591fcc1d7520787fee1db01f107a11f4aec59eb979352"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/vm/lib/async_patch.dart:316-324 | sdk/lib/_internal/vm/lib/async_patch.dart:343-351 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/async_patch.dart"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"651ae9fad8c1468190f78cd9dc71df0377c01f77a45863431e227831ae9f4838"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:1265-1273 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1143-1151 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 193 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1265}}}],"partialFingerprints":{"codehealthFindingId/v1":"3390c422d4fc08bce24aff794f2ad9d27c9e90016ac0ce2818731ea78ee4e988"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/vm/lib/double.dart:223-231 | sdk/lib/_internal/wasm/common/boxed_double.dart:293-301 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7432d91472c2eb28ab4ca52e46d834e42040ad07da34e3a7e15a110108ca222"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/vm/lib/string_patch.dart:1140-1148 | sdk/lib/_internal/vm/lib/string_patch.dart:1394-1402 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1140}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f609ae84dfcd26ac62602f7e032bfb703e10f15d9e5a241f4ec900a9193307"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:1019-1027 | sdk/lib/_internal/wasm/common/typed_data.dart:1105-1113 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":1019}}}],"partialFingerprints":{"codehealthFindingId/v1":"31cf0877ff893cdea60949871a28ad621e29539a8c97a55f929d7587bc647b85"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:109-117 | sdk/lib/_internal/wasm/js_common/js_string.dart:131-139 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"163850f7cd1015014e5a7b0f7c17f2ae93d983f19ce65edcba8995cf5eda5ad4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/assembler.dart:1620-1628 | pkg/native_compiler/lib/back_end/arm64/assembler.dart:1634-1642 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":1620}}}],"partialFingerprints":{"codehealthFindingId/v1":"822974b39908af099fc20797e41174a28acf34227193852ec06f6a7b2be902a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/code_generator.dart:2018-2027 | pkg/native_compiler/lib/back_end/arm64/code_generator.dart:2082-2090 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2018}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6793104ae468c9ca3995f695187e1e713d54d516b91a8c03e0a42d1cf410acd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/kernel/lib/binary/ast_to_binary.dart:2899-2907 | pkg/kernel/lib/binary/ast_to_binary.dart:2941-2949 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":2899}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd199229b70546a23e08c76c2bde441dab57759fcd667dfd471525749cb1ce58"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:569-576 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:643-651 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"3687013816d9b9e73eaef2df4030d521d59c05a4e294e7ffaa0d57c7b677c201"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/stack_listener.dart:598-606 | pkg/_fe_analyzer_shared/lib/src/parser/stack_listener.dart:624-632 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/stack_listener.dart"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1ec8f0195b7ad3eb5d9c11d602793676b6672ba7dd462c8c952e5f4eaa6764c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart:153-161 | pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart:436-444 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad91349701b6c6f16745d39a76bf8572efc69f8cd84ce47ff1157394b9d34c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/ambiguous_import_fix.dart:206-214 | pkg/analysis_server/lib/src/services/correction/dart/ambiguous_import_fix.dart:313-321 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/ambiguous_import_fix.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"308afc72d386df303cfcad2e8f2164f75cf19b07e054b9c2444f0fe921d6820a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart:96-104 | pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart:187-195 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7833cc573e361e054c3d1973ae3bc76a748bc8e46989225018ea60d0b2a1ff9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart:249-257 | pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart:172-180 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateless_widget.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 39 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":"pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_stateful_widget.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7151293868b6e6e2a8c71f44b94ca46033754fe9c11a869cd68f87dcb049f46"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget.dart:83-91 | pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget_with_animation.dart:131-139 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget_with_animation.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 57 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":"pkg/analysis_server/lib/src/services/snippets/dart/flutter_stateful_widget.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0e162567387976913bbe0ac7110c2cd8c7c0216907593217847db8384688768"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/dart/analysis/index.dart:786-794 | pkg/analyzer/lib/src/dart/micro/utils.dart:410-418 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"0afb9c5617abf667e7eb7f442ac0ad6ac5803aa42ddcc902e4f513fa73267798"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:7233-7241 | pkg/analyzer/lib/src/dart/ast/ast.dart:7246-7254 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7233}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fbdcb785bd7565e55e7225bd03523224192dfb19dd07248c7465b680702a793"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:20345-20353 | pkg/analyzer/lib/src/dart/ast/ast.dart:20358-20366 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20345}}}],"partialFingerprints":{"codehealthFindingId/v1":"73e161dbc95b92b74cee6f450436a6f88bd5ddeb43dfbcec3ebe888a0c684028"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/ast.dart:52993-53001 | pkg/analyzer/lib/src/dart/ast/ast.dart:53006-53014 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52993}}}],"partialFingerprints":{"codehealthFindingId/v1":"d86ef36c6ef467f167f2cb71e65ca48c0ed2e00a48df8a9e2f72a112457676af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart:121-129 | pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart:443-451 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"de5c0f8d523ec3d6b500fd34de48f03a6a32324b3b80a80f7305da649680ab45"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart:255-263 | pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart:273-281 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a7198084ddb6cba3b752763ea3047e1cb0a46874488d8f8e7a3814b3a313bbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): pkg/analyzer/lib/src/dart/micro/utils.dart:593-601 | pkg/analyzer/lib/src/dart/micro/utils.dart:780-787 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/micro/utils.dart"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c777810400c1a170a2e5aa7dc2d016170ae9d0faf791a90868a396ce2e0a352"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:667-674 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:890-898 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"30eaaf0ccc3b8df56c005dc17017bb5023f8cf212dfe798f076aba0009355f89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/fasta/ast_builder.dart:2673-2681 | pkg/analyzer/lib/src/fasta/ast_builder.dart:3982-3990 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":2673}}}],"partialFingerprints":{"codehealthFindingId/v1":"7501cadcf83c2656cd219b198b9a96989a2a48742a40dae9fa3708ffe2e69a86"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_reader.dart:266-274 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:552-560 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa37a50897fd2eb630dfc654217863c0d1e2bf21bd2946067783deedbb18823"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_reader.dart:307-315 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:584-592 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf45cec484cfa504fd7c13d0d720b20e361369df989a194d3c97bf40e787e1c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/summary2/bundle_reader.dart:583-591 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:655-663 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"33fde6f09fe93e7880e875578fc0af9449309ef4d465c426045e70350e8beb97"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/compiler/lib/src/inferrer/builder.dart:2268-2276 | pkg/compiler/lib/src/inferrer/builder.dart:2299-2307 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2268}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a4c1d04a613441d1a79e4b9061ef7cf7385ccf1beedaeecd1a61eb62550b365"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:686-694 | pkg/compiler/lib/src/kernel/element_map_impl.dart:357-365 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc4f6c7127afcbbe6df615c5c94b2236945c36af42a180af23a407350191800f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/compiler/lib/src/ssa/builder.dart:5755-5763 | pkg/compiler/lib/src/ssa/builder.dart:5765-5773 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5755}}}],"partialFingerprints":{"codehealthFindingId/v1":"8655c864b0662a9e5d2f40287e2326b136fa5e322da223a74ed2d29131f6a20a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/compiler/lib/src/ssa/optimize.dart:2679-2687 | pkg/compiler/lib/src/ssa/optimize.dart:2728-2736 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2679}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc6bf4df55a33cfc56cd1446923e1c67b58ebffa801617dfcb13574dcc60a2b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/compiler/lib/src/universe/codegen_world_builder.dart:241-249 | pkg/compiler/lib/src/universe/resolution_world_builder.dart:413-421 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/universe/codegen_world_builder.dart\u0060 and \u0060pkg/compiler/lib/src/universe/resolution_world_builder.dart\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. 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":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59e6e88c0a02366d7738ea7ab590efb1539ebd77c86fd6d255ab16bc9725373"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20139 lines \u00D7 2): pkg/dart_runtime_service/lib/src/devtools/client.dart:111-119 | pkg/dds/lib/src/devtools/client.dart:136-142 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devtools/client.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb2d651d884dd29b9cf9b02360bde349622004ab6f687b3d9686914445d11798"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dartdev/lib/src/analysis_server.dart:223-231 | pkg/dartdev/lib/src/lsp_analysis_server.dart:232-240 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/analysis_server.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"a45fe8abe1cc9abc47a0eec81ee5449c0c54934b15785b036f2fa0c50c904205"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/template.dart:360-367 | pkg/js_ast/lib/src/template.dart:348-356 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/template.dart\u0060 and \u0060pkg/js_ast/lib/src/template.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9141bfe3364ac762f6b496110c31bc7cf572563d6da3237fc53e4cb907e12f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/asset_file_system.dart:102-110 | pkg/dev_compiler/lib/src/kernel/asset_file_system.dart:120-128 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/asset_file_system.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"a43a09c4538c5a51629245ed256a6d0dd1139476f0fa943eec604f8f61b574de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4465-4473 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5061-5069 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4465}}}],"partialFingerprints":{"codehealthFindingId/v1":"95d65b5a232b58d3fa2f18b7807344b2cccbaf4e4c8fa3533f8b770dbc734d63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7548-7556 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8415-8423 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7548}}}],"partialFingerprints":{"codehealthFindingId/v1":"be7ecf90415651a7cb2436a3139e4057ee87fc37a1886d7c079c6b709c336189"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7558-7566 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8425-8433 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7558}}}],"partialFingerprints":{"codehealthFindingId/v1":"419363a2925f4739dab5b7199c4d2506b6bdf50f4f2e4621a64391a98bff9f4c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8172-8180 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9041-9049 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8172}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1c683b7ddd0cca390290116997300cc18ff4031017c9702e1c8b6e291d1347"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8\u20139 lines \u00D7 2): pkg/front_end/lib/src/kernel/constant_evaluator.dart:4758-4765 | pkg/front_end/lib/src/kernel/constant_evaluator.dart:4879-4887 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4758}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6f7dcee8a77ec68232f6ccc8625c808f12e7b455d24483c630911a7efae05fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/hierarchy_node.dart:67-75 | pkg/front_end/lib/src/kernel/hierarchy/hierarchy_node.dart:583-591 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/hierarchy_node.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ada1292fbc774486296f0df55df7eb1fef650ebfda94435d2c2e72237272ba1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:638-646 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:657-665 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d0ec574f356f91e76bf1e1e0140c7333d067026194be0edc9e71f21c4418514"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:692-700 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:711-719 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e32d969796b602207a46574923821e00f258a9dd4e65afcf8c84c6607ab8d17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/kernel/lib/src/ast/constants.dart:344-352 | pkg/kernel/lib/src/ast/expressions.dart:4722-4730 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1e6c6e8172f758d5391d7bd8085db2ea54bd12e016617cd3a3d474ace30534"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/observatory/lib/src/elements/error_view.dart:56-64 | pkg/observatory/lib/src/elements/general_error.dart:58-66 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/error_view.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a969ccf561d6c6f7377b26fc9521bf879422376ee0876dd1e5f6f1db00ed1ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:405-413 | pkg/observatory/lib/src/elements/process_snapshot.dart:132-140 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fc4fb611fb1ba675e0ab62ae6dec7f423fbd9c49778e27aa852fa587d2cc51d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:563-571 | pkg/observatory/lib/src/elements/process_snapshot.dart:294-302 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed87ce1673c28e0ba5e4cac6aa3f909d35f1713dfe8978d126b4137d848d8d47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/vm_service/lib/src/vm_service.dart:3298-3306 | pkg/vm_service/lib/src/vm_service.dart:3355-3363 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":3298}}}],"partialFingerprints":{"codehealthFindingId/v1":"917ecdb6d4aa12c1de7dab3f589b209098220526e707f0d0327a64fccaae2124"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/vm_service/lib/src/vm_service.dart:3555-3563 | pkg/vm_service/lib/src/vm_service.dart:3629-3637 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":3555}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5f21645e97da5a59c391276d16e166d427b9e5d1994dc71d1cfa30692ab428c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/vm_service/lib/src/vm_service.dart:3552-3560 | pkg/vm_service/lib/src/vm_service.dart:7166-7174 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":3552}}}],"partialFingerprints":{"codehealthFindingId/v1":"eabb377c52ddc0bc928f6e117158039b44902d5eaad2a0d619ecf7376269feb6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/wasm_builder/lib/src/builder/elements.dart:114-122 | pkg/wasm_builder/lib/src/builder/elements.dart:155-163 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/elements.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e5a02360e2b328c2828e13be7b3789c511888bd68219031a3f3f1524e1a7f06"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/wasm_builder/lib/src/builder/instructions.dart:2186-2194 | pkg/wasm_builder/lib/src/builder/instructions.dart:2203-2211 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":2186}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9f39b21bdffcd3e526d79f49934dc5065692017f8517bb59e2efae97a47dcd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/vm/lib/transformations/type_flow/transformer.dart:728-736 | pkg/vm/lib/transformations/type_flow/unboxing_info.dart:163-171 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"fadd94cb0e707779f48ab1c8f4d0ff81482854001367bf6392ddc2c2c27d322e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 15): sdk/lib/internal/internal.dart:227-234 | sdk/lib/internal/internal.dart:248-255 | sdk/lib/internal/internal.dart:271-278 | sdk/lib/internal/internal.dart:296-303 | sdk/lib/internal/internal.dart:323-330 | sdk/lib/internal/internal.dart:352-359 | sdk/lib/internal/internal.dart:383-390 | sdk/lib/internal/internal.dart:416-423 | sdk/lib/internal/internal.dart:451-458 | sdk/lib/internal/internal.dart:488-495 | sdk/lib/internal/internal.dart:527-534 | sdk/lib/internal/internal.dart:568-575 | sdk/lib/internal/internal.dart:611-618 | sdk/lib/internal/internal.dart:656-663 | sdk/lib/internal/internal.dart:703-710 \u2014 all 15 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"d40afb80704f1b7701317a5a02fc5172da1c49cf278ada5429ddba5f226697c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 15): sdk/lib/internal/internal.dart:226-232 | sdk/lib/internal/internal.dart:245-252 | sdk/lib/internal/internal.dart:267-274 | sdk/lib/internal/internal.dart:291-298 | sdk/lib/internal/internal.dart:317-324 | sdk/lib/internal/internal.dart:345-352 | sdk/lib/internal/internal.dart:375-382 | sdk/lib/internal/internal.dart:407-414 | sdk/lib/internal/internal.dart:441-448 | sdk/lib/internal/internal.dart:477-484 | sdk/lib/internal/internal.dart:515-522 | sdk/lib/internal/internal.dart:555-562 | sdk/lib/internal/internal.dart:597-604 | sdk/lib/internal/internal.dart:641-648 | sdk/lib/internal/internal.dart:687-694 \u2014 all 15 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"4064f44a1e363c989f9b0e140030617b85ef755de9fd2dc8acebe833adba2843"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 7): pkg/analyzer/lib/src/summary2/informative_data.dart:178-186 | pkg/analyzer/lib/src/summary2/informative_data.dart:207-215 | pkg/analyzer/lib/src/summary2/informative_data.dart:277-285 | pkg/analyzer/lib/src/summary2/informative_data.dart:313-321 | pkg/analyzer/lib/src/summary2/informative_data.dart:341-349 | pkg/analyzer/lib/src/summary2/informative_data.dart:471-479 | pkg/analyzer/lib/src/summary2/informative_data.dart:519-526 \u2014 all 7 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c3f6f0e13be49c7f947c871c771347f86e36d89df016d833d6c1ed410d7e369"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:263-270 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:599-606 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:945-952 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1288-1295 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1631-1638 | sdk/lib/_internal/wasm/common/typed_data.dart:2140-2147 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"afc9f246a9ed2638b20c428a4547d60c9e491e4878851569fce816c23ad6ab62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:333-340 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:670-677 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1061-1068 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1404-1411 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1747-1754 | sdk/lib/_internal/wasm/common/typed_data.dart:2210-2217 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"053af70fa7e412ecb5c085a1fceaad16c43bde5b9b713d9a5c227f5282343809"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:372-379 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:709-716 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1101-1108 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1444-1451 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1787-1794 | sdk/lib/_internal/wasm/common/typed_data.dart:2249-2256 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"672926a509bd8b6229a38052e6f2c0cc98adfcc14e4c247f309b71e55582b4e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:449-456 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:786-793 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1181-1188 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1524-1531 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1867-1874 | sdk/lib/_internal/wasm/common/typed_data.dart:2330-2337 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5eb85428f21543a77625bb0fe9a402ce2aa47e7fa542115f21a415fe9f9ddff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): pkg/analysis_server/lib/src/protocol/protocol_internal.dart:242-249 | pkg/analysis_server/lib/src/protocol/protocol_internal.dart:286-293 | pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart:497-504 | pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart:538-545 | pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart:581-588 | pkg/analyzer_plugin/lib/src/protocol/protocol_internal.dart:621-628 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/protocol/protocol_internal.dart\u0060 and \u0060pkg/analysis_server_client/lib/src/protocol/protocol_internal.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 41 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/protocol/protocol_internal.dart"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb97d0241a884afee984c8683c3f0a72fcee2b774395e4dde90a3afc7c47dde"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): pkg/analyzer/lib/src/summary2/bundle_reader.dart:266-273 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:466-473 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:552-559 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:622-629 | pkg/analyzer/lib/src/summary2/bundle_reader.dart:1075-1082 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f955cd25cad1c55f703f8ff1dd60a7b31ab80d41d2dac9f474937cb75a86b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): pkg/analyzer/lib/src/summary2/bundle_writer.dart:175-182 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:298-305 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:354-361 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:403-410 | pkg/analyzer/lib/src/summary2/bundle_writer.dart:693-700 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"b98d1638657442f58411b0155a90a1e466c97edb14dda1b409f69a18767dd542"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 5): pkg/observatory/lib/src/elements/library_view.dart:211-218 | pkg/observatory/lib/src/elements/library_view.dart:245-251 | pkg/observatory/lib/src/elements/library_view.dart:270-276 | pkg/observatory/lib/src/elements/library_view.dart:291-297 | pkg/observatory/lib/src/elements/library_view.dart:338-344 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/library_view.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5ba338f23bb1c0c4185c5e0dcebcfdcc0555b5b4fc053360919efc654f70acd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:239-246 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:278-285 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:313-320 | pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart:465-472 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/surround_with.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c09add2f904b7f5950499179f9c4ad86c2b8d37f4ce47db1c6cd0fc4155a3d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:146-153 | pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:507-514 | pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:852-859 | pkg/analyzer/lib/src/summary2/ast_binary_writer.dart:1125-1132 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_writer.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"127a1fe74888bad3fcc669c7f6c8dde477a91b3c41f5808fd955b782ebaf5be1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): pkg/compiler/lib/src/js_model/closure.dart:632-639 | pkg/compiler/lib/src/js_model/closure.dart:688-695 | pkg/compiler/lib/src/js_model/closure.dart:744-751 | pkg/compiler/lib/src/js_model/closure.dart:843-850 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"27df45aaec11f3b07b72781f1d5c4fbd3949ef1417ebda18a181a3379d25bbc2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 4): pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart:91-98 | pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart:120-126 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:730-736 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:752-758 \u2014 there are 4 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ea435840bcf69002880ba5d847217a1c3067c4aeac1e0531fa707dc758bac63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): sdk/lib/_internal/wasm/common/simd.dart:96-103 | sdk/lib/_internal/wasm/common/simd.dart:199-209 | sdk/lib/_internal/wasm/common/simd.dart:299-309 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/simd.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bc8fb4b491c926dcba85d840bf1dc70126766ad54081e9dc3622ac1c668f844"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:842-852 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1218-1225 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1263-1270 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4847fd3e4db09f42bb742586f4522a3f09cefbda8ba7c71e3d7baf5e4ebbdf7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart:156-163 | pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart:197-204 | pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart:439-446 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/handler_summary.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5e1981b8532b973c6c2198dbddeb7cee6ff097a4cc386965df820acc40b6233"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 3): pkg/front_end/lib/src/source/outline_builder.dart:2088-2094 | pkg/front_end/lib/src/source/outline_builder.dart:2419-2425 | pkg/front_end/lib/src/source/outline_builder.dart:2636-2643 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2088}}}],"partialFingerprints":{"codehealthFindingId/v1":"892bac5109ffb643d85212295f7ada6c387eac34f36fcc8a9b31f9c1dce55e37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link.dart:25-32 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link.dart:166-173 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"80787d9c754eaf55161488fcefa0496b74ef87d165a0801e0da1fd5337ba3aea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:101-108 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:135-142 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"e28158c36c75050420b36cda88049bd767a2a9424e68860248504c9480ee5cbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dart2wasm/lib/code_generator.dart:642-649 | pkg/dart2wasm/lib/code_generator.dart:651-658 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"234ac963ebfd83046953fa24ba37ac41f33e7cd6811c442c0ac775828d0637f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): pkg/dart2wasm/lib/constants.dart:1066-1072 | pkg/dart2wasm/lib/constants.dart:1076-1083 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1066}}}],"partialFingerprints":{"codehealthFindingId/v1":"85ec774e189932eb16afb4cbb98f53fe5f14bf79d9cbf2617ad3db3a8a2ed6b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart:210-217 | sdk/lib/_internal/js_runtime/lib/js_patch.dart:324-331 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_patch.dart\u0060 as WHOLE FILES: this scan already matched 9 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":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bddad428ef71090c9edf4163e36b031f91be756d1d6e91bbb22460c5713c2df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_string.dart:395-402 | sdk/lib/_internal/js_runtime/lib/js_string.dart:371-378 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_string.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_string.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 90 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_string.dart"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"88234d1cc631e5d949aded5575d4e06fbe892610ae16f72f3a942d034a09b417"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1833-1840 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2121-2128 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1833}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c00da6c67b5174ed1e9e68cf540db2ed06b1a9680cb99c4625388c3822ced0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1842-1849 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2130-2137 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1842}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aaafaae6d915d94641438dd1e6e9f70f1e2f623e0774769d90ec431b52c9477"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/js_number.dart:200-207 | sdk/lib/_internal/js_runtime/lib/js_number.dart:225-232 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_number.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"51b4961ecdb725c627a7ff6b960164215af5c07d5b4930b384a35b1a3f6e262b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:2089-2096 | sdk/lib/_internal/vm/lib/convert_patch.dart:2110-2117 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":2089}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7f0f7e9bd2bdd1718dd99100db403961c43c7d14bfdd3396667d8cf66b69ab0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm/lib/mirrors_impl.dart:764-771 | sdk/lib/_internal/vm/lib/mirrors_impl.dart:993-1000 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d84f99f61a2d1d3e45640c5a81860e13cb9271f9867e2fc677c5a9c61e4c4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm/lib/string_patch.dart:1089-1096 | sdk/lib/_internal/vm/lib/string_patch.dart:1111-1118 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1089}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4e2c4573ace30ac2b7e4d30e2a0bbf0a80e2777814192a568a8300826fe4f71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/collection_patch.dart:298-305 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:315-322 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/collection_patch.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"0345028bd15411acf3bb1972f50d8b54eecd244f798c3ea561fad854dd33e010"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/collection_patch.dart:331-338 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:348-355 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/collection_patch.dart"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd66b69a93cbc8dc388df35ce089aefc4a36a61fb2f137e3a1f691e268abc617"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:543-550 | sdk/lib/_internal/wasm/common/compact_hash.dart:508-515 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ba6aade9b98973493878fe3b6435f8f9fdbe3621cf64d93586509d1b9326029"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1104-1111 | sdk/lib/_internal/wasm/common/compact_hash.dart:1024-1031 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f707ce962bbae6030e048caa2333fc84959263cc0add03101fa929fc1e50c60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/common/convert_patch.dart:2683-2690 | sdk/lib/_internal/wasm/common/convert_patch.dart:2704-2711 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":2683}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e0ca7dad5db5e11f889e0255be34d7f962761a91fa4132700a1a23e85a588c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): sdk/lib/_internal/wasm/common/simd.dart:438-445 | sdk/lib/_internal/wasm/common/simd.dart:453-459 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/simd.dart"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"58e4ffa089e921722ed82600bf99ab81932c0dd5dfe59cbf8aa58c9d4e62161b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:285-292 | sdk/lib/_internal/wasm/common/typed_data.dart:382-389 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"989707374c5c95b0975bd6a33d5721285687a0ba4441e4bee68d7b5f4cf48639"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:280-287 | sdk/lib/_internal/wasm/common/typed_data.dart:373-380 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ffce6a81041acdf5d2b72ddae70170c3d7c5c2073c8ebab2491d7e4f32ad138"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:1061-1068 | sdk/lib/_internal/wasm/common/typed_data.dart:1139-1146 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"6519c02ee722f18cc35bc9b593365b9c5d6969430bc241a2825b8a0936cf6916"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:1137-1144 | sdk/lib/_internal/wasm/common/typed_data.dart:1191-1198 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":1137}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c6537e1c73051bed39725192d3b2dd1d9d991e2695c18a18bbb60193bdddb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:591-598 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2082-2089 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"245f3337545a8717b05a358a28a721921a135367aa5458a361dc0d555b47f3b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:630-637 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2121-2128 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ff2f1df7d0c9fcdf12dd357b9d4539930d54ace7368f08b5c6c2dfd63c0c830"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1735-1742 | pkg/native_compiler/lib/back_end/arm64/code_generator.dart:1823-1830 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1735}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba82465f08f7da0c912fa9738dc98b1ce8f4d7fdd3d617495bdd5ab493aacdc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/kernel/lib/binary/ast_from_binary.dart:1925-1932 | pkg/kernel/lib/binary/ast_from_binary.dart:1985-1992 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":1925}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec5f6660cdfc469e16ddfb982225ff6b0ec3223f07b79c30155478ef903e7012"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/metadata/expressions.dart:408-415 | pkg/_fe_analyzer_shared/lib/src/metadata/expressions.dart:432-439 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/expressions.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd5690def96e6d6fcc3f2ad680bd05afe4eb30a97b8b9b152860e014ea5b3b5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:885-892 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:1010-1020 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":885}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f1858aecf362ef09242f7b09c74b092f3b35ced9217f37372abe1b1923e7e6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/convert_flutter_child.dart:41-48 | pkg/analysis_server/lib/src/services/correction/dart/flutter_convert_to_children.dart:64-71 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_flutter_child.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"1138cb079650bbb5b58b62593f8d40b2c6898b1105dd154720045489e7b3e820"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/flutter_move_down.dart:39-46 | pkg/analysis_server/lib/src/services/correction/dart/flutter_move_up.dart:39-46 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/flutter_move_down.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"82f33a3e2fabb8e871706145820a7d0ed09167f11df9b3cad34cc5d601e82d4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/remove_comment.dart:38-45 | pkg/analysis_server/lib/src/services/correction/dart/remove_print.dart:34-41 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_comment.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"b587c95ca04b3d36a05dc1896f966e08644bdb9027060249716a86ffdecc43b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/remove_name_from_combinator.dart:68-75 | pkg/analysis_server/lib/src/services/correction/dart/remove_name_from_combinator.dart:94-101 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_name_from_combinator.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a32eef7ee71260009b9d0c4ac93d94a762a3d5f47a109698117bf173e606c0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart:400-407 | pkg/analyzer/lib/src/dart/element/least_upper_bound.dart:871-878 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/greatest_lower_bound.dart"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"99e1d421d0c8e057a30febf5ebf4b2fa0658556c16a3ea02a8f3c5a3ccdff9cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): pkg/analyzer/lib/src/dart/micro/utils.dart:669-676 | pkg/analyzer/lib/src/dart/micro/utils.dart:718-724 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/micro/utils.dart"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"e243d67cba1b1fc144c323bcb301819c6e07a4073b3d72f1b40422f730fedade"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analyzer/lib/src/error/annotation_verifier.dart:145-152 | pkg/analyzer/lib/src/error/annotation_verifier.dart:195-202 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/annotation_verifier.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d5d285c4906916c0c90db3deda1455a4ed2b08c39ca0f5e073698636424c9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analyzer/lib/src/error/deprecated_functionality_verifier.dart:194-201 | pkg/analyzer/lib/src/error/deprecated_functionality_verifier.dart:382-389 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/deprecated_functionality_verifier.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa6b097ae76eb1065743bedc461de8bbf8bc00542f4224cd6c64f89ae5ccc961"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7\u20138 lines \u00D7 2): pkg/analyzer/lib/src/utilities/string_search.dart:105-111 | pkg/analyzer/lib/src/utilities/string_search.dart:143-150 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/utilities/string_search.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"9abf7f044ce7d6af141c534ee875237fdd8d7cfe5fd5ee3d7d0348ea7a465068"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart:1964-1971 | pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart:1987-1994 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1964}}}],"partialFingerprints":{"codehealthFindingId/v1":"b10a7b84f15dc945a7e0597723ab8ffac93bf6e36255a07e25da0abd406025c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/constants/values.dart:593-600 | pkg/compiler/lib/src/constants/values.dart:726-733 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"e869d3662e105a15348e4b2d1fadd1a71e88d9b5f275b6a3c09c1efd508ac496"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/dump_info.dart:779-786 | pkg/compiler/lib/src/dump_info.dart:1566-1573 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"207eb1fec6260c5040388461665f05fb41d1c00c256aed56e8699d0fe440a603"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart:108-122 | pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart:173-180 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0c0b507763afc519e9882a89084278627be3398d9ad04bf024e5818f2b42825"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart:257-264 | pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart:324-331 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d46ee150201e8adb62a9967e9952ebc0d737cd24c63cfa4e411b881fe6c6477"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/ssa/logging.dart:92-99 | pkg/compiler/lib/src/ssa/logging.dart:103-110 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/logging.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"f756297dbb31cc3ccef42baacc5a1c7b5a226903bf6d61035550c1de92758a08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/ssa/nodes.dart:158-165 | pkg/compiler/lib/src/ssa/nodes.dart:421-428 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7aab906c7f1318ce94d24d8a5e6debfbdff5d075eeb0a5353713bbc8bc8a5d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dartdev/lib/src/commands/install.dart:345-352 | pkg/dartdev/lib/src/commands/uninstall.dart:51-58 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/install.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"41a93970820f89ad6cc015d4a916c314cd5968d2cfa4c5783fe33b82e6086f11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6147-6154 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6836-6843 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6147}}}],"partialFingerprints":{"codehealthFindingId/v1":"702108520de9a33e3b0d1ee733450180ff68f20d55b8c3ec40ab30431b82ebe7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6459-6466 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7148-7155 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6459}}}],"partialFingerprints":{"codehealthFindingId/v1":"6978ba984d2080d2404a7c09fa67a8e476ff28cefbaab265d83a03ad26775e5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/kernel/dynamic_module_validator.dart:276-283 | pkg/front_end/lib/src/kernel/dynamic_module_validator.dart:308-315 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"7088637ac5f1cd7f04c19f526060bfbd2142d8a609ec92692a0ee895660ed8a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/type_inference/inference_visitor.dart:6466-6473 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:7514-7521 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":6466}}}],"partialFingerprints":{"codehealthFindingId/v1":"eae84e25e773b7ecb3e3b6c17872791bb8b17210f4a78c772c30d992745684db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/util/outline_extractor.dart:713-720 | pkg/front_end/lib/src/util/outline_extractor.dart:743-750 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"897ca1e2872534134e4f1b84c0468f1fe29c1c187d47c7aaa571269cd521efcd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/kernel/lib/src/ast/expressions.dart:3721-3728 | pkg/kernel/lib/src/ast/expressions.dart:3735-3742 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3721}}}],"partialFingerprints":{"codehealthFindingId/v1":"931d1f791a0b65fede3bdb2a7041cdb5ebfd6a9770da4eb2b2d552cb64719221"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/omit_local_variable_types.dart:45-52 | pkg/linter/lib/src/rules/omit_obvious_local_variable_types.dart:47-54 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/omit_local_variable_types.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33667dc1b2dc0602e167de71372d7c41220f882226f6c51f4cfa5def4a4733f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/specify_nonobvious_local_variable_types.dart:118-125 | pkg/linter/lib/src/rules/specify_nonobvious_property_types.dart:63-70 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/specify_nonobvious_local_variable_types.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"254c7a7d42d7f85610d818cf2af45048c93d7d16ded43cf479ca5d035353b524"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart:358-365 | pkg/observatory/lib/src/elements/process_snapshot.dart:561-568 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile/virtual_tree.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"85d32dd03f11d6d28461b1af816e74ee07bb7fcf80d56d20b5d2ac5d60c0cc09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/observatory/lib/src/elements/debugger.dart:271-278 | pkg/observatory/lib/src/elements/debugger.dart:310-317 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce144142112d544506f0b05e48e0b7e89e0b10da495f17b21ddd9d0de9116f67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:1236-1243 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1332-1339 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1236}}}],"partialFingerprints":{"codehealthFindingId/v1":"36f6fa11986384399dbe2c2f8fdc7731460c8c63778e874bab32928e00acd630"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:1362-1369 | pkg/observatory/lib/src/elements/process_snapshot.dart:530-537 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1362}}}],"partialFingerprints":{"codehealthFindingId/v1":"731a1b54ebdaab2e8a7cd6d5a7313dc0712444515d3b83d1074efaac30e9b85f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/observatory/lib/src/elements/instance_view.dart:186-194 | pkg/observatory/lib/src/elements/metrics.dart:82-89 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f70e2d4b3c6a05734ac014e50de065e135ec1e8570a8014f54035dfc95fc2ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/observatory/lib/src/elements/instance_view.dart:346-353 | pkg/observatory/lib/src/elements/instance_view.dart:421-428 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/instance_view.dart"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"4821411de0c12b000f132610e0e3b74628284295c1e708cd11fa893eb9e77413"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart:34-40 | pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart:49-55 | pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart:34-40 | pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart:49-55 \u2014 there are 4 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6099a1e3c19ea34be7f419cd139d738854b46547289c2ac8323e50bd6720407"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1709-1715 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1719-1725 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1997-2003 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2007-2013 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1709}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c06ed4aff4b4d461c496cff21e9ccb903358f19e5fe10f18e98e5550e342c8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): pkg/observatory/lib/src/elements/error_view.dart:58-65 | pkg/observatory/lib/src/elements/general_error.dart:60-66 | pkg/observatory/lib/src/elements/isolate_reconnect.dart:77-84 | pkg/observatory/lib/src/elements/vm_connect.dart:64-70 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/error_view.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"37d613c9ce2268bf4c3f10bcaa3230a44c67c639709c0a738c4316cf18fec4d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:609-615 | sdk/lib/_internal/js_runtime/lib/js_number.dart:700-706 | sdk/lib/_internal/vm/lib/integers.dart:518-524 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"697c9e383b6357dcb2e94578b87d57eba0caab5e8f79473f0db5ee71a96274d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): sdk/lib/_internal/vm_shared/lib/collection_patch.dart:100-106 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:116-122 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:266-272 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/collection_patch.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91f3f862c6ceb85e0a8aaa464aa49c245ed10c4c1e8ec91a4eb545042582de6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): sdk/lib/_internal/vm_shared/lib/collection_patch.dart:425-431 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:441-447 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:485-491 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/collection_patch.dart"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"494a73f0c1d6964f7a03e9c44e5b62da47394190994b99207203aff895b5afa1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): pkg/cfg/lib/ir/flow_graph_checker.dart:239-245 | pkg/cfg/lib/ir/flow_graph_checker.dart:256-262 | pkg/cfg/lib/ir/flow_graph_checker.dart:266-272 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/flow_graph_checker.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d11a6843f83da5fa6edf2b3f735d467132c62fe8c500c0ee95f6e9330491b88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): pkg/cfg/lib/passes/constant_propagation.dart:388-394 | pkg/cfg/lib/passes/constant_propagation.dart:568-574 | pkg/cfg/lib/passes/constant_propagation.dart:599-605 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/passes/constant_propagation.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f61f021f977029bf6adf0697bfbe5fada965f36c682fb06f41cf05afd03ef0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:444-450 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:570-576 | pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart:645-651 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d796e3006c53b68b867170ae237482ba8bccedccd808440ea9e0531ca0a831"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dart2bytecode/lib/declarations.dart:164-170 | pkg/dart2bytecode/lib/declarations.dart:1125-1131 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6e3d6abf099294a173c43c983abc9b6d577953bed621b8ac0fbf887d76f101b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dart2wasm/lib/await_transformer.dart:985-991 | pkg/dart2wasm/lib/await_transformer.dart:1005-1011 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":985}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b8c9d429124467b66ad03d947e3efd556af561ad3f71de3f5a31dad3210a244"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dart2wasm/lib/code_generator.dart:2159-2165 | pkg/dart2wasm/lib/state_machine.dart:1408-1414 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":2159}}}],"partialFingerprints":{"codehealthFindingId/v1":"52fbf07f6a149a24945183e2397519bf95016b51f411fc68156287d4b71c98b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dart2wasm/lib/constants.dart:648-654 | pkg/dart2wasm/lib/constants.dart:684-690 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"d39d0bbd7c4227013cad9f1d1450a50bb637b4646f2dc02c2b9be95bb0a468cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/testcases/general/constants/potentially_constant_type.dart:57-63 | pkg/front_end/testcases/general/constants/potentially_constant_type_lib1.dart:38-44 \u2014 before extracting anything, compare \u0060pkg/front_end/testcases/general/constants/potentially_constant_type.dart\u0060 and \u0060pkg/front_end/testcases/general/constants/potentially_constant_type_lib1.dart\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. 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":"pkg/front_end/testcases/general/constants/potentially_constant_type.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"306692da63e0f50f61a1a5520c3f8dfbe8b840ab88a4c3806521a0a2f1b06c03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/heap_snapshot/lib/intset.dart:54-60 | pkg/heap_snapshot/lib/intset.dart:81-87 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/intset.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef30e0d3f8043efe8c680f5bf5aba2cb1f74f6e464e843b4d12fbc9d3f6e8ea9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): tools/dom/src/AttributeMap.dart:48-54 | tools/dom/src/AttributeMap.dart:61-67 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/AttributeMap.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"6de152f4fe9058c571ea2989a868b6c7b34fbcd6cbbf5d36ed3a8bace1d39de6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:216-222 | sdk/lib/_internal/js_runtime/lib/js_array.dart:313-321 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b682b6c3abc0e55fc434b81f147ea113035331ec0280e9ab5756f984d111cc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:637-643 | sdk/lib/_internal/js_runtime/lib/js_array.dart:826-832 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"5749a18f9dc16fbbf18ca55d95c7ac2b32dadbd949bfd83379342335553b295f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:646-652 | sdk/lib/_internal/js_runtime/lib/js_array.dart:835-841 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc58aad0b44cca264a0972c805cb495b6b40aa5ec78c9082692e0adb7c7204c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:160-166 | sdk/lib/_internal/js_dev_runtime/private/js_number.dart:187-193 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e59979c08b59fe68c006a1cd3f5590160caee7a5ef0906520e616bd5eecd170"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:763-769 | sdk/lib/_internal/js_runtime/lib/collection_patch.dart:1221-1227 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"23459ffef114e263d391b6622cbe955917cd02404787daa70e07934ca6d0b336"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:284-290 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:523-533 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f35d13c640aace45e3098bbd968e64c2bca70b735a0dc237f51f0d3311953e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/vm/lib/typed_data_patch.dart:560-566 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:903-909 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"766cbb67f10ddf90f0eee5f111319522087180a90836ba78bf9ab0da09bfb0b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1060-1066 | sdk/lib/_internal/wasm/common/compact_hash.dart:980-986 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"9634ff962a90ed536102766dcadf1fd58ae8957d84da6368f02c2c225416f534"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1082-1088 | sdk/lib/_internal/wasm/common/compact_hash.dart:1002-1008 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb9c08c3b9601166912a76d3954d1d757f5cc153d83e24d0d3aec6d94ed71e3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/integers_patch.dart:73-79 | sdk/lib/_internal/vm_shared/lib/integers_patch.dart:127-133 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/integers_patch.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7064966e24a8352b459573a20ec72879152dd928793a5f9e372303bbe07ab38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/common/convert_patch.dart:1080-1086 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:939-945 \u2014 \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 265 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1080}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d78482294e9d416c4a52a96a2ec0064066b391ed6564a4f12c47288c9ddbd47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/common/list.dart:231-237 | sdk/lib/_internal/wasm/common/list.dart:456-462 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/list.dart"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"a25844fe6636ee35edcfe103994ab62ba2f04e4b259480ae8568366fde1045c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/common/simd.dart:731-737 | sdk/lib/_internal/wasm/common/simd.dart:745-751 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/simd.dart"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"102a653ff4d5c3b673a6ce435ef5e4b036fc310ef21a260530a97d9b46c5b58b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:593-599 | sdk/lib/_internal/wasm/common/typed_data.dart:662-668 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"679cd6cd005a0902ce1745de8d6b3d4c085edd92f0df5aa4db00e4149d3ce2e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/common/typed_data.dart:2107-2113 | sdk/lib/_internal/wasm/common/typed_data.dart:2462-2468 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":2107}}}],"partialFingerprints":{"codehealthFindingId/v1":"2767607ab508b97183cb4eb37498713007cd5a4636892850226561db74e101ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:515-521 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2005-2011 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"a61e2c99dbd66858763105f8f267b555016e02f00d9681b50c141d2fe2cb7758"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:524-530 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2014-2020 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7d2d8dcd12bc711586903f22227b516544a68bfce104aeddac79b07188b9775"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_typed_array.dart:692-698 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2183-2189 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"1765f60920b33dd1a6fb6baec8660a56d19cc1e2ea96369f91487fc1f287f426"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/collection/set.dart:244-250 | sdk/lib/collection/set.dart:261-267 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/set.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b19216dfed8450327a2d5451600b7dda401c860c2ec448b4ca6c4530515c570"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/cfg/lib/ir/flow_graph_checker.dart:249-255 | pkg/cfg/lib/ir/flow_graph_checker.dart:516-522 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/flow_graph_checker.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8bc14b8b30333ab17bbde983ea25c5f27d088e8471a08d3c7559bc5a16fc60b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/native_compiler/lib/snapshot/snapshot.dart:1119-1125 | pkg/native_compiler/lib/snapshot/snapshot.dart:1164-1170 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"11e1c2b8cdced659a7c2e3c57a8571c9d62078ca001ae7f7c82be5111b78ab7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/testing/id.dart:140-146 | pkg/_fe_analyzer_shared/lib/src/testing/id.dart:151-157 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/id.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"575bdb57bf8f84544c75bb9bf44bab3f49d21723cfc4e7418b527777b7ccd396"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analyzer/lib/src/fasta/ast_builder.dart:2248-2254 | pkg/analyzer/lib/src/fasta/ast_builder.dart:5580-5586 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":2248}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f45137346077c87d6d5427b67fab2dd3381ff8935b1df11c80fb855802f57a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/constants/values.dart:580-586 | pkg/compiler/lib/src/constants/values.dart:711-717 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1e4dc7707cd1015c2826988a36581038670e17c91e7fbb6da27eb349a2f290d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/constants/values.dart:962-968 | pkg/compiler/lib/src/constants/values.dart:981-987 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":962}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c3a84539cc43f00db88de33ad4e3fe72d0ce29d549ba65f8304881c634487d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/js_model/elements.dart:297-303 | pkg/compiler/lib/src/js_model/elements.dart:351-357 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9618f658e26a6cba0bb280b6c01c34f3d95f5693fe920ca7c006a8d84cb3540"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/universe/member_usage.dart:385-391 | pkg/compiler/lib/src/universe/member_usage.dart:540-546 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa26d9e286d2afc62c6a8c706cd17f861b432eab861b6fb35b6225bc1b168eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:502-508 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:733-739 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"7027ee6ff5991b52a888358c1016106343ef6c2d6b09f9ff3167d47d19788d9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3494-3500 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4021-4027 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3494}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a96e459db3caafec49934553bc948e05b0f1f804f8ab98cdf419a271c3e5334"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6\u20137 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5854-5860 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6509-6514 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5854}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7a299a67f64f5aaba9023085f59afa4749332caa7c0d7522e0e3655887b591"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/kernel/lib/src/standard_bounds.dart:337-343 | pkg/kernel/lib/src/standard_bounds.dart:661-667 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8c165ba2504d991ca05885bc7063664693e5fb1ab5130815db264195ac1df43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/linter/lib/src/rules/public_member_api_docs.dart:42-48 | pkg/linter/lib/src/rules/slash_for_doc_comments.dart:35-41 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/public_member_api_docs.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff6ff5728943b7b6a483328a735bad47c2d7a49a1bf58765b45578c2b00f088"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/observatory/lib/src/elements/debugger.dart:779-785 | pkg/observatory/lib/src/elements/debugger.dart:866-872 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aeaf6acd5b0bc51db8eb91c7e931820d8fc4a62fc6f283f179ce01ef46873b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:1251-1257 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1313-1319 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1251}}}],"partialFingerprints":{"codehealthFindingId/v1":"db7a74848c260194b5164afb8fb5b3c339cb9063c4dc4dc26053836050590b50"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:1256-1262 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1282-1288 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1256}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0661beddec62affd8853be11a7702982281f68ee5428dee18b85fcca88daf0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/observatory/lib/src/repositories/reachable_size.dart:8-14 | pkg/observatory/lib/src/repositories/retained_size.dart:8-14 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/repositories/reachable_size.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"940916fb75da25da75690a4ae6f2c54059ed69e362bc9a4ff1fa73e8e82795ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/vm_service/lib/src/vm_service.dart:5191-5197 | pkg/vm_service/lib/src/vm_service.dart:5788-5794 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":5191}}}],"partialFingerprints":{"codehealthFindingId/v1":"16142c800d44c9c590a16f658cc462f7a417977f0f9840e6aef89423c2bd9f9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/wasm_builder/lib/src/builder/types.dart:408-414 | pkg/wasm_builder/lib/src/ir/type.dart:1013-1019 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/types.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"b36893581fe805462bed7de7f82bbe29c1f2cbcafa0ec82abadd43efc32dc233"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/wasm_builder/lib/src/serialize/sections.dart:1071-1077 | pkg/wasm_builder/lib/src/serialize/sections.dart:1111-1117 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/sections.dart"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"7980e233baf91099cc0b77ab6e4c4c31139ebdc67ea25a5cc242a0a5d6a221f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20136 lines \u00D7 14): pkg/observatory/lib/src/elements/allocation_profile.dart:106-111 | pkg/observatory/lib/src/elements/cpu_profile_table.dart:100-105 | pkg/observatory/lib/src/elements/heap_map.dart:100-105 | pkg/observatory/lib/src/elements/heap_snapshot.dart:513-517 | pkg/observatory/lib/src/elements/icdata_view.dart:92-96 | pkg/observatory/lib/src/elements/logging.dart:77-81 | pkg/observatory/lib/src/elements/megamorphiccache_view.dart:96-100 | pkg/observatory/lib/src/elements/metrics.dart:78-82 | pkg/observatory/lib/src/elements/object_view.dart:87-91 | pkg/observatory/lib/src/elements/objectpool_view.dart:94-98 | pkg/observatory/lib/src/elements/ports.dart:82-87 | pkg/observatory/lib/src/elements/singletargetcache_view.dart:97-101 | pkg/observatory/lib/src/elements/subtypetestcache_view.dart:94-98 | pkg/observatory/lib/src/elements/unlinkedcall_view.dart:93-97 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/icdata_view.dart\u0060 and \u0060pkg/observatory/lib/src/elements/singletargetcache_view.dart\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. 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":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a3a4414e9c250e319f72e30ad105f9ae4299bcf4f6b50ba15a91a89ab442e19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 9): pkg/observatory/lib/src/elements/allocation_profile.dart:104-109 | pkg/observatory/lib/src/elements/class_tree.dart:74-79 | pkg/observatory/lib/src/elements/megamorphiccache_view.dart:94-99 | pkg/observatory/lib/src/elements/metrics.dart:76-81 | pkg/observatory/lib/src/elements/object_view.dart:85-90 | pkg/observatory/lib/src/elements/objectpool_view.dart:92-97 | pkg/observatory/lib/src/elements/script_view.dart:96-101 | pkg/observatory/lib/src/elements/subtypetestcache_view.dart:92-97 | pkg/observatory/lib/src/elements/unlinkedcall_view.dart:91-96 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/megamorphiccache_view.dart\u0060 and \u0060pkg/observatory/lib/src/elements/objectpool_view.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 46 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":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"733efbfb1ce0ae9ccd6b90008bef88c5cab2cb1d1decb3be3974476d7bf9c2c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 8): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:642-647 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:680-685 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1097-1102 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1125-1130 | sdk/lib/_internal/wasm/common/compact_hash.dart:607-612 | sdk/lib/_internal/wasm/common/compact_hash.dart:637-642 | sdk/lib/_internal/wasm/common/compact_hash.dart:1017-1022 | sdk/lib/_internal/wasm/common/compact_hash.dart:1046-1051 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"7074452d4144e416249140b08e1037ee148dfe33c42406a11028f1459ad077cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 7): pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart:28-33 | pkg/analysis_server/lib/src/services/snippets/dart/for_statement.dart:28-33 | pkg/analysis_server/lib/src/services/snippets/dart/if_statement.dart:28-33 | pkg/analysis_server/lib/src/services/snippets/dart/switch_expression.dart:28-33 | pkg/analysis_server/lib/src/services/snippets/dart/test_definition.dart:32-37 | pkg/analysis_server/lib/src/services/snippets/dart/test_group_definition.dart:30-35 | pkg/analysis_server/lib/src/services/snippets/dart/while_statement.dart:28-33 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/snippets/dart/if_statement.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 43 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":"pkg/analysis_server/lib/src/services/snippets/dart/class_declaration.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b35b8c2566bdd98747d1e6db135c44f8d1cdf41c2dd8f0f42b401f41dd2fa4f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5\u20136 lines \u00D7 7): pkg/observatory/lib/src/elements/heap_snapshot.dart:1245-1249 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1272-1276 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1303-1307 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1341-1346 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1373-1378 | pkg/observatory/lib/src/elements/process_snapshot.dart:509-513 | pkg/observatory/lib/src/elements/process_snapshot.dart:541-545 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/heap_snapshot.dart\u0060 and \u0060pkg/observatory/lib/src/elements/process_snapshot.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 203 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1245}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3235630644941e8f30eb6a3bd039f015bcb3f18af7a2b3122492771235f1378"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 6): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1580-1585 | sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1622-1627 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1598-1603 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1640-1645 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2182-2187 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2224-2229 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1580}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cd724b6b1a845ee9dfbccceaefe9556cd470c202ffbd10f9fa6dee7e58db21c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:546-551 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:631-636 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:667-672 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:689-694 | pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:890-895 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"146f759a771c181d6046639ef8998f66d54c2cbc158844f93ce9f11477536da3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): pkg/observatory/lib/src/elements/heap_map.dart:99-104 | pkg/observatory/lib/src/elements/icdata_view.dart:91-96 | pkg/observatory/lib/src/elements/ports.dart:81-86 | pkg/observatory/lib/src/elements/sentinel_view.dart:68-73 | pkg/observatory/lib/src/elements/singletargetcache_view.dart:96-101 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/icdata_view.dart\u0060 and \u0060pkg/observatory/lib/src/elements/singletargetcache_view.dart\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. 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":"pkg/observatory/lib/src/elements/heap_map.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"42fc9985e1f1cd4594d550a0528fa80411ba80453384a472ff9ef1961bfcf31e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/private/js_number.dart:622-627 | sdk/lib/_internal/js_runtime/lib/js_number.dart:714-719 | sdk/lib/_internal/vm/lib/integers.dart:529-534 | sdk/lib/_internal/wasm/common/boxed_int.dart:423-428 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_number.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_number.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 200 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"d767ca2b11de8119ffc84154dfd158d827f608b64e9b89528acf616b219cfdb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): sdk/lib/_internal/vm/lib/typed_data_patch.dart:2575-2580 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:2645-2650 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:4581-4586 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:4648-4653 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":2575}}}],"partialFingerprints":{"codehealthFindingId/v1":"70aada696a1317ca1a93c2b678e7ed05beb1d990d51028965ce9c86b885b863c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (3\u20136 lines \u00D7 9): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:154-156 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:230-232 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:306-311 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:169-171 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:257-259 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:344-349 | sdk/lib/_internal/wasm/common/simd.dart:26-28 | sdk/lib/_internal/wasm/common/simd.dart:130-132 | sdk/lib/_internal/wasm/common/simd.dart:236-241 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"efd004ecbe645a2fd5ccf8381d4e586a426988aa1894fada4960a098644d58a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): pkg/kernel/lib/src/ast/types.dart:1314-1319 | pkg/kernel/lib/src/ast/types.dart:1676-1681 | pkg/kernel/lib/src/ast/types.dart:1938-1943 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"cec924917bc28ce329ae49d278da57a57570d2dc75dfe33e9f8bb8ec4f9194e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): pkg/kernel/lib/src/merge_visitor.dart:242-247 | pkg/kernel/lib/src/merge_visitor.dart:282-287 | pkg/kernel/lib/src/merge_visitor.dart:482-487 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/merge_visitor.dart"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"49b5c7d8f55d0c93534b1b634bab34428d000efed66e409b9eaf0dbaf242d7dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): pkg/observatory/lib/src/elements/context_view.dart:93-98 | pkg/observatory/lib/src/elements/cpu_profile.dart:82-87 | pkg/observatory/lib/src/elements/cpu_profile_table.dart:98-103 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/context_view.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"4289a735c12793344261aafe9c2ff4a50eaa95dc65550f9329f04326de26ff6f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/testcases/general/constants/potentially_constant_type.dart:95-100 | pkg/front_end/testcases/general/constants/potentially_constant_type_lib1.dart:62-67 \u2014 before extracting anything, compare \u0060pkg/front_end/testcases/general/constants/potentially_constant_type.dart\u0060 and \u0060pkg/front_end/testcases/general/constants/potentially_constant_type_lib1.dart\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. 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":"pkg/front_end/testcases/general/constants/potentially_constant_type.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b6b58c0ccf843d1281f979b6660f546d8eecc6774bdcb8d30ea09834d6a3b4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1608-1613 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1896-1901 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1608}}}],"partialFingerprints":{"codehealthFindingId/v1":"d618760c39ef9ee85036c3cf9ba484fe5e7efbaeca940ccfcf2871490d53562d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1752-1757 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1763-1768 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1752}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e05c0196cca3b955bf84d2187bc419c71fe9c7fdaab43615471a4c7333faa1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/vm/lib/mirrors_impl.dart:757-762 | sdk/lib/_internal/vm/lib/mirrors_impl.dart:986-991 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":757}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e437f84697dd46292a825646a6b1636878bb5a0f9966b7382f6bb7b1bc0c1fa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:720-725 | sdk/lib/_internal/wasm/common/compact_hash.dart:678-683 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e5b4d4d7fca075d68f2637357504bb411ab36f3db36bfb6e503442309bb3a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/wasm/js/string_patch.dart:192-197 | sdk/lib/_internal/wasm/standalone/string_patch.dart:148-153 \u2014 \u0060sdk/lib/_internal/wasm/js/string_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/string_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 129 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js/string_patch.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"aceab9af2c4cd82d04e9af0030400f0dbd657bdc2a630051b6e4a973e75c871e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/analyzer/lib/src/binary/string_table.dart:119-124 | pkg/kernel/lib/binary/ast_from_binary.dart:339-344 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/binary/string_table.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"f549dc88287be0e5eb413b0c79d320f2cd50cbdbba143590d2e66ee2b2f8cb0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/internal/internal.dart:216-221 | sdk/lib/internal/internal.dart:226-231 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2dbac35e29e2fa290bf8168a9d6e6f5c49b490de65c3b148020b1d787e59fa2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/type_inference/shared_inference_log.dart:635-640 | pkg/_fe_analyzer_shared/lib/src/type_inference/shared_inference_log.dart:816-821 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/shared_inference_log.dart"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6b3e9bfd3dc3683eca326776a1a60a9885ce1080ca4ed89db1c6fa447bc0fca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/create_class.dart:229-234 | pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart:177-182 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/correction/dart/create_class.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 38 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":"pkg/analysis_server/lib/src/services/correction/dart/create_class.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"a33500b6facb4448435d71bc7c9ed974facb44f73a13bc24c442272c33567161"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/replacement_visitor.dart:453-458 | pkg/analyzer/lib/src/dart/element/replacement_visitor.dart:464-469 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4cba621728e067f7cce26d0e606ac3982b841b69b03f1d94f0c19fbcd369fed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/analyzer/lib/src/utilities/string_search.dart:89-94 | pkg/analyzer/lib/src/utilities/string_search.dart:127-132 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/utilities/string_search.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"36b165f068ec65412dd75db713ec5d968996d2bb8501dd4feee8fe1bd8dde41a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/compiler/lib/src/js_model/closure.dart:1235-1240 | pkg/compiler/lib/src/js_model/records.dart:382-387 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":1235}}}],"partialFingerprints":{"codehealthFindingId/v1":"7159a06e50a4c7003a4bb97aa78c801170ac1cadc0ce328f25aa38eea50426c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/kernel/lib/src/replacement_visitor.dart:196-201 | pkg/kernel/lib/src/unaliasing.dart:70-75 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/replacement_visitor.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"29dd26a5209a0d9d94cc53938bfee451f19ec2fa1f9cb80526f459eeef7d3356"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/observatory/lib/src/elements/heap_snapshot.dart:1179-1184 | pkg/observatory/lib/src/elements/heap_snapshot.dart:1198-1203 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":1179}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6340f6528bc563043aa3b29f78b6b1e3b0e28454f181a9bda192cae8193c39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 11): pkg/observatory/lib/src/elements/allocation_profile.dart:106-110 | pkg/observatory/lib/src/elements/class_tree.dart:76-80 | pkg/observatory/lib/src/elements/cpu_profile_table.dart:100-104 | pkg/observatory/lib/src/elements/heap_snapshot.dart:513-517 | pkg/observatory/lib/src/elements/logging.dart:77-81 | pkg/observatory/lib/src/elements/megamorphiccache_view.dart:96-100 | pkg/observatory/lib/src/elements/metrics.dart:78-82 | pkg/observatory/lib/src/elements/object_view.dart:87-91 | pkg/observatory/lib/src/elements/objectpool_view.dart:94-98 | pkg/observatory/lib/src/elements/subtypetestcache_view.dart:94-98 | pkg/observatory/lib/src/elements/unlinkedcall_view.dart:93-97 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/megamorphiccache_view.dart\u0060 and \u0060pkg/observatory/lib/src/elements/objectpool_view.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 46 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":"pkg/observatory/lib/src/elements/allocation_profile.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"567a977aa2b6286a24ce687d606cbb46825c3b737664bc8fa65e104ec75b7898"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (4\u20135 lines \u00D7 14): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:157-161 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:198-201 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:233-237 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:274-277 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:172-176 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:213-216 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:260-264 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:301-304 | sdk/lib/_internal/wasm/common/simd.dart:29-33 | sdk/lib/_internal/wasm/common/simd.dart:66-69 | sdk/lib/_internal/wasm/common/simd.dart:133-137 | sdk/lib/_internal/wasm/common/simd.dart:170-173 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:1709-1712 | sdk/lib/_internal/wasm/js_common/js_typed_array.dart:2609-2612 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b85e9fb58e2664d71465701712a619a1738893af684fae47d97635bb1bb3f14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:595-599 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:282-286 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:500-504 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:521-525 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 63 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"036ade9543c87829f671eabac54e9841bf2aae917ab1a66c4bb8add0d9c7a0a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:1364-1368 | sdk/lib/_internal/js_runtime/lib/collection_patch.dart:1399-1403 | sdk/lib/_internal/js_runtime/lib/collection_patch.dart:1423-1427 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":1364}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b7974af0017604e3a16092fdd2f284af09e09a956cdb8633dda51373248c15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart:809-813 | pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart:1132-1136 | pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart:1599-1603 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"f47b5cfec6736ec44ec57e7a7a1015b416b652f3f105cf4a64218b0d3cb4ff69"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/front_end/testcases/general/type_variable_uses.dart:23-27 | pkg/front_end/testcases/general/type_variable_uses.dart:45-49 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/type_variable_uses.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"99543ce9966fa788314148ef20edb6295b6ed067f9b942a2fa17e380c22b8bc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:190-194 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:205-209 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ef3105d4944f1161c9a1e97096c203c4a2207fb10a1a69e1abe13608a964076"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:266-270 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:293-297 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffa20d48809db139ccf85af6657b930fd4defc2ec72818f3dd8e5c35fbdeb336"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:160-164 | sdk/lib/_internal/js_runtime/lib/collection_patch.dart:731-735 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9753a54c2faf8d09f9cfca52850decae44ef26d774b78ce430e6703d13223f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/vm/lib/string_patch.dart:1261-1265 | sdk/lib/_internal/vm/lib/string_patch.dart:1292-1296 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1261}}}],"partialFingerprints":{"codehealthFindingId/v1":"98e79a797fd0954e53d0b78e23459389089d9b69e550c994cd1b16df3f14bf8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/vm/lib/typed_data_patch.dart:4149-4153 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:4170-4174 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":4149}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ef1d1436cb93c4f09db584b15a7d238e136a037fe0d715f027d91a367b77188"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/collection_patch.dart:61-65 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:86-90 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/collection_patch.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"524b6dd46d2178bb3e8a6c007ed5e5c9d8d9fe0785c9b9d87a1f40201c341bc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/collection_patch.dart:399-403 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:411-415 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/collection_patch.dart"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"c440d54f373e63e134bf911e64ba4be151b451b5e26669c09328ae9c1f2e34ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:723-727 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:741-745 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1e38936023b3ff086c2f850e1c9157aa0baa281c8b4565de1775c2a2360f9e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart:93-98 | pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart:201-205 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/literal_entry_info_impl.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b23b746e1856ad60b6ce5d10f3cb271b0cfe8686020b4f80ad1b8e7fb840e8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/analyzer_plugin/lib/src/utilities/navigation/document_links.dart:61-65 | pkg/analyzer_plugin/lib/src/utilities/navigation/document_links.dart:69-73 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/navigation/document_links.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2fb2531a6df966008fbfd9e5e23a96c06003c02a7f4ef17c6f65c63fd9cbf17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/compiler/lib/src/constants/values.dart:1038-1042 | pkg/compiler/lib/src/constants/values.dart:1056-1060 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd8865cad6b8700a8c26f39b96a49b0c5f8f5c04e15fce3080bae3c834a0f10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/compiler/lib/src/ir/impact_data.dart:635-639 | pkg/compiler/lib/src/ir/impact_data.dart:741-745 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"70f8553cdafd37a8065ef094d825e640ebd442d1879cebeb25058451389d6bc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart:110-114 | pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart:116-120 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8b4dcb47fd369e308e9e171354b5f8377ad830450213e0bb75cff55b75b2f20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dartdev/lib/src/utils.dart:443-447 | pkg/dartdev/lib/src/utils.dart:455-459 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/utils.dart"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"66298ca7afa5e1bf25d04d035cd2d902ff6b34465b03d4735feeae5c28198b99"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2362-2366 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2662-2666 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2362}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbf77d43648fa77486ddfab0bbd5321cd0aecb957f7b9c9fd935b4dd0dff0f25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/kernel/lib/src/replacement_visitor.dart:352-356 | pkg/kernel/lib/src/replacement_visitor.dart:386-391 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/replacement_visitor.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"024c9e13ee954694fd8049a4296b228f29e4a2e89b77252301415c771ef0bdfe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/observatory/lib/src/elements/debugger.dart:823-828 | pkg/observatory/lib/src/elements/debugger.dart:916-920 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":823}}}],"partialFingerprints":{"codehealthFindingId/v1":"a61629eeed1c81734059f32ada5b66b410b5320fdef972060dd4759b29b11ff5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate_view.dart:110-114 | pkg/observatory/lib/src/elements/objectstore_view.dart:78-82 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate_view.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"79de28c209efde21f42ac69b1f638ed448898d9365cc69ae6c987ca4d8abc73c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/observatory/lib/src/elements/library_view.dart:114-118 | pkg/observatory/lib/src/elements/script_view.dart:97-102 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/library_view.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d0babaa693ba7c8d3661459ae69f870ee49080d7cd9b1eda0ee1c08b90a28bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (27 lines \u00D7 2): pkg/observatory/lib/src/elements/code_view.dart:66-92 | pkg/observatory/lib/src/elements/object_view.dart:42-68 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/code_view.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8f981137115abc4193b3c7535b20a63dc278a44cf5a94cd2bf4eeb751ebfaf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (29 lines \u00D7 6): pkg/observatory/lib/src/elements/context_view.dart:48-76 | pkg/observatory/lib/src/elements/icdata_view.dart:45-73 | pkg/observatory/lib/src/elements/megamorphiccache_view.dart:48-76 | pkg/observatory/lib/src/elements/objectpool_view.dart:47-75 | pkg/observatory/lib/src/elements/subtypetestcache_view.dart:46-74 | pkg/observatory/lib/src/elements/unlinkedcall_view.dart:46-74 \u2014 before extracting anything, compare \u0060pkg/observatory/lib/src/elements/icdata_view.dart\u0060 and \u0060pkg/observatory/lib/src/elements/subtypetestcache_view.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 53 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":"pkg/observatory/lib/src/elements/context_view.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"df88bc8d9ee0f3d577d9f8610b702ba7e09e53fad099be5f6145273fbe660b68"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/dart2wasm/lib/factory_specializer.dart:24-40 | pkg/vm/lib/modular/specializer/factory_specializer.dart:24-40 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/factory_specializer.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9708e2f99d7815a97bb97206ab75fad5fd3123a6281200c705f23e78fd62144"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/dart2wasm/lib/map_factory_specializer.dart:18-42 | pkg/vm/lib/modular/specializer/map_factory_specializer.dart:18-43 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/map_factory_specializer.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3b4cf6a9bec02c3723b2a136ba76dd8a2e136957f86a2b1050b274cf500a5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (25 lines \u00D7 2): pkg/dart2wasm/lib/set_factory_specializer.dart:19-43 | pkg/vm/lib/modular/specializer/set_factory_specializer.dart:19-44 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/set_factory_specializer.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"f21d047367b5599defea252e7d2d03f9a372eb5ad1e68cab82ed407154a36e8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (50 lines \u00D7 2): pkg/dart_service_protocol_shared/lib/src/named_lookup.dart:19-68 | pkg/dds/lib/src/named_lookup.dart:19-68 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_service_protocol_shared/lib/src/named_lookup.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"55984d916428cfc1a4ad8680c6132dd987ba30dc52e0ee2512f6277185fc16e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/front_end/lib/src/fragment/class.dart:40-59 | pkg/front_end/lib/src/fragment/mixin.dart:40-62 | pkg/front_end/lib/src/fragment/named_mixin_application.dart:56-69 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/class.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"1857bb290fa8f9e19a15a54842dd98eaaf30351002a2ec821468fdadd973833d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart:2-13 | pkg/front_end/testcases/general/error_recovery/constructor_recovery_get.dart:7-13 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/parser_testcases/error_recovery/constructor_recovery_get.dart"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0855545da3dddaca217420a0d945cb65b2b81e2fb2859d163f0a966c42b6e0a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart:2-13 | pkg/front_end/parser_testcases/error_recovery/constructor_recovery_return_type.dart:2-13 | pkg/front_end/testcases/general/error_recovery/constructor_recovery_ok.dart:6-17 | pkg/front_end/testcases/general/error_recovery/constructor_recovery_return_type.dart:7-13 \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":"pkg/front_end/parser_testcases/error_recovery/constructor_recovery_ok.dart"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"966ecbc474b8f361aac9cf9d12e92a54389479f80881eef2e84471539d335b18"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart:2-13 | pkg/front_end/testcases/general/error_recovery/constructor_recovery_set.dart:7-13 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/parser_testcases/error_recovery/constructor_recovery_set.dart"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"0827479747e665d21b8dc785a6ade2ef0a1d0641e7eec9d60994b021134fa6e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (344 lines \u00D7 2): pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart:3-346 | pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods_2.dart:2-345 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart"},"region":{"startLine":3}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d9ce8b5b24d6ee2a02a939428c2bdf12078d82c91edaad8cd0925c07acde923"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/front_end/parser_testcases/inline_class/extension_type.dart:7-20 | pkg/front_end/parser_testcases/inline_class/extension_type_const.dart:7-20 | pkg/front_end/testcases/extension_types/extension_type_declarations.dart:14-27 \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":"pkg/front_end/parser_testcases/inline_class/extension_type.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d8460e99400750c06a050baa5e7b993d903692b7dcceb328d1fd4ef534eccd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/parser_testcases/nnbd/issue_49132.dart:18-32 | pkg/front_end/testcases/general/issue_49132.dart:17-23 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/parser_testcases/nnbd/issue_49132.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c5c6582046b236e3bba733d0a4d78de5ab5e77f497ee7c29e9f8f9ca894d559"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/front_end/parser_testcases/nnbd/issue_49132_not_nullable.dart:8-22 | pkg/front_end/testcases/general/issue_49132_not_nullable.dart:8-22 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/parser_testcases/nnbd/issue_49132_not_nullable.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"acbf2c29594afdb47a7cd30614634f368281a4d2b25d67986d709afd8f59116c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): pkg/front_end/parser_testcases/primary_constructors/constructor_head.dart:4-17 | pkg/front_end/parser_testcases/primary_constructors/constructor_head_pre_feature.dart:6-19 | pkg/front_end/testcases/primary_constructors/constructor_head.dart:15-74 \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":"pkg/front_end/parser_testcases/primary_constructors/constructor_head.dart"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2872d44365906f116aa2345303ce515535916668e8c2c4126f4be52bbdc32f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (60 lines \u00D7 4): pkg/front_end/testcases/augmentations/class_declarations.dart:7-66 | pkg/front_end/testcases/augmentations/enum_declarations.dart:9-70 | pkg/front_end/testcases/augmentations/extension_type_declarations.dart:7-66 | pkg/front_end/testcases/augmentations/mixin_declarations.dart:7-66 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/augmentations/class_declarations.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"33076953e7e54fdea1cdf9f6cf7fba299e16d20fbc440d84b7564ea40b73527d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): pkg/front_end/testcases/constructor_tearoffs/lowering/constructor_member_conflict.dart:7-40 | pkg/front_end/testcases/general/constructor_member_conflict.dart:7-40 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/constructor_tearoffs/lowering/constructor_member_conflict.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3aaf1391960df52e8b918398aec0ae4fcdda235c18e673b3a0df8f43abcacb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/front_end/testcases/dart2js/extension_types/issue51285.dart:6-14 | pkg/front_end/testcases/dartdevc/extension_types/issue51285.dart:6-14 | pkg/front_end/testcases/extension_types/issue51285.dart:6-14 \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":"pkg/front_end/testcases/dart2js/extension_types/issue51285.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1af122f6a6cb8cd6e538a6ff620938383b687c3ab12c5a9168ed49a2cce0de8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (24 lines \u00D7 2): pkg/front_end/testcases/dart2js/issue54115.dart:9-32 | pkg/front_end/testcases/patterns/issue54115.dart:9-32 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/dart2js/issue54115.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"902f6058cc3c8a1476ea1626f59357a5a5ad1e40b66fbfd32770fec7ffa4c1c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 6): pkg/front_end/testcases/dart2js/mixin_super/main.dart:16-34 | pkg/front_end/testcases/dart2js/mixin_super/main_lib.dart:6-44 | pkg/front_end/testcases/dartdevc/mixin_super/main.dart:16-34 | pkg/front_end/testcases/dartdevc/mixin_super/main_lib.dart:6-44 | pkg/front_end/testcases/general/mixin_super/main.dart:16-34 | pkg/front_end/testcases/general/mixin_super/main_lib.dart:6-44 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 6 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 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/dart2js/mixin_super/main.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d9b0b81f4774b77fa0267cada5cc6117cf999192525ee3c22fc286a823e33f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (39 lines \u00D7 3): pkg/front_end/testcases/dart2js/mixin_super/main_lib.dart:6-44 | pkg/front_end/testcases/dartdevc/mixin_super/main_lib.dart:6-44 | pkg/front_end/testcases/general/mixin_super/main_lib.dart:6-44 \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":"pkg/front_end/testcases/dart2js/mixin_super/main_lib.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f4eafaf9b602e4cb44b5cb137320413d8a4cbbc7bd5e6922a45c8f8d33b4ec"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/testcases/dart2js/tear_off_patch/patch_lib.dart:10-32 | pkg/front_end/testcases/general/tear_off_patch/patch_lib.dart:10-32 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/dart2js/tear_off_patch/patch_lib.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b8469ec063aad4884f118f71d2d3ea4731f853dbc780ad025798b527f28adda"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/testcases/dart2wasm/issue53239.dart:10-18 | pkg/front_end/testcases/general/issue53239.dart:10-18 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/dart2wasm/issue53239.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"5481fd373230d9240d064b23002e9bb7c9afb49cd80de137be1c71198cf418bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/testcases/dartdevc/factory_patch/patch_lib.dart:14-19 | pkg/front_end/testcases/general/factory_patch/patch_lib.dart:14-19 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/dartdevc/factory_patch/patch_lib.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"99fea9b656f837efff3c0f94598427d3af6ef8eeaf870f9f5d8313b1d8ec722c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/dartdevc/issue53462.dart:11-21 | pkg/front_end/testcases/general/issue53462.dart:11-21 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/dartdevc/issue53462.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"09ec9df5a25062e3cba3bf5e313f63f4f38b4d4ad827e3ca62776f953ebfe804"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/testcases/extensions/other_kinds.dart:7-16 | pkg/front_end/testcases/extensions/other_kinds2.dart:7-16 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/extensions/other_kinds.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"b349b0bdef2bc58b23b97a4b2e23487f88dcd153b50c3795edff2d6c2d188581"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/testcases/general/covariant_equals.dart:6-14 | pkg/front_end/testcases/nnbd/covariant_equals.dart:6-14 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/covariant_equals.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddf1d6d10c7771c34b4929dcdd81548ee669c588734c30bf706286998cdf4134"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): pkg/front_end/testcases/general/covariant_field.dart:19-28 | pkg/front_end/testcases/late_lowering/covariant_late_field.dart:19-28 | pkg/front_end/testcases/nnbd/covariant_late_field.dart:19-28 \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":"pkg/front_end/testcases/general/covariant_field.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf0076b12617d4b0b1b6c479a94df174b008ce3f325cb9cc4e6ee7c35dcebfd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (90 lines \u00D7 2): pkg/front_end/testcases/general/getter_call.dart:27-116 | pkg/front_end/testcases/implicit_getter_calls/getter_call.dart:27-116 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/getter_call.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1a87310dd6317d341451617a1cc99e92b17876aa0de915cfdcefd21f9a71b8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/testcases/general/hierarchy/abstract_extends_getter.dart:6-28 | pkg/front_end/testcases/general/hierarchy/concrete_extends_getter.dart:6-28 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/hierarchy/abstract_extends_getter.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"30037dd37f26183c9f96b5fdc260858ab0836703993b28c1bb8b42bf1a0ca5fc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/testcases/general/hierarchy/abstract_extends_method.dart:6-28 | pkg/front_end/testcases/general/hierarchy/concrete_extends_method.dart:6-28 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/hierarchy/abstract_extends_method.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"62b6fd8071c5ce16699c5c4a7e48e90601095e459031a71d7176ccaae6f143b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/testcases/general/hierarchy/abstract_extends_setter.dart:6-28 | pkg/front_end/testcases/general/hierarchy/concrete_extends_setter.dart:6-28 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/hierarchy/abstract_extends_setter.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"968af0728978eebe6802263975e5b1ca9d54042d10c76061327e4017a472b26a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/testcases/general/hierarchy/abstract_implements_getter.dart:6-28 | pkg/front_end/testcases/general/hierarchy/concrete_implements_getter.dart:6-28 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/hierarchy/abstract_implements_getter.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec54cec09df22e4655e3c9167824311e6e61ddd6a8f66d2223bd2f61a824c70f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/testcases/general/hierarchy/abstract_implements_method.dart:6-28 | pkg/front_end/testcases/general/hierarchy/concrete_implements_method.dart:6-28 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/hierarchy/abstract_implements_method.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb7ba35e8c50e2d87405d30d01506af7c593dd42d35cf646f28535c0ab1131f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (23 lines \u00D7 2): pkg/front_end/testcases/general/hierarchy/abstract_implements_setter.dart:6-28 | pkg/front_end/testcases/general/hierarchy/concrete_implements_setter.dart:6-28 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/hierarchy/abstract_implements_setter.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f3f66d225fc75178bf881166947229e9cc2c9137dae905d91ee69572e61467f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/general/mixin_covariant2.dart:6-16 | pkg/front_end/testcases/none/mixin_covariant.dart:6-16 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/mixin_covariant2.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"d165c352761106a22c79d2b940886298f3e215c68beb9e9856428f2e8774b461"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/general/trailing_comma1.dart:11-21 | pkg/front_end/testcases/named_arguments_anywhere/trailing_comma1.dart:9-19 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/trailing_comma1.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"df8550b444f8dc0f7a0801c076d6970bda99b3c13c152ab83a65afe138901129"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 2): pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill_lib1.dart:8-28 | pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill_lib2.dart:8-28 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/with_dependencies/mixin_from_dill/mixin_from_dill_lib1.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e27021aad8931d4d6a6abcbb42d19fa526d35f8fd79bbb6b2fe11bb3158007"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/testcases/inference_new/property_assign_combiner.dart:10-30 | pkg/front_end/testcases/inference_new/static_assign_combiner.dart:10-16 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference_new/property_assign_combiner.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb25ca6ee20b5a36662a68e4e7d8dba0a0af4fc3f83c4615ebeb163680c1ec4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/testcases/general/dynamic_modules/main_lib1.dart:7-222 | pkg/front_end/testcases/inference_update_2/field_promotion_and_no_such_method.dart:26-35 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/dynamic_modules/main_lib1.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"b55d9a64b39866715713f869d4ff6ec0069b6e4de6c68b25d6e41457a7aab361"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/testcases/late_lowering/issue40601.dart:7-15 | pkg/front_end/testcases/nnbd/issue40601.dart:7-15 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/late_lowering/issue40601.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc63a482285a53a69cc647261a613c1bbe9046e1293094cf3119dcba35a1f662"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (59 lines \u00D7 2): pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart:6-64 | pkg/front_end/testcases/nnbd/null_shorting_extension.dart:6-64 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f51775b6cff77a6a5ae15a157ae7cfab19dcc32bb9d1b49502241dd17631272"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/front_end/testcases/nnbd/required.dart:10-35 | pkg/front_end/testcases/nnbd/required_2_legacy.dart:11-36 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/required.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e7ff071993e9718f880b6ac15d333f45917b247d4000531e49b32b2220f2a06"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/testcases/offsets/switch_encoding.dart:18-23 | pkg/front_end/testcases/patterns/switch_encoding.dart:18-23 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/offsets/switch_encoding.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"afe2d81fb97880ec383258fbc9ae451daadb2b1e8616021226d5577b5cfd276f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (34 lines \u00D7 2): pkg/observatory/lib/src/app/settings.dart:11-44 | pkg/observatory/lib/src/repositories/settings.dart:11-44 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/app/settings.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee4851162eb38b09b96895bf4ddba88bdbb6b0092b7ec8689fbf228e5bb45e2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (31 lines \u00D7 5): pkg/vm/testcases/transformations/dynamic_interface_annotator/lib1.dart:9-101 | pkg/vm/testcases/transformations/dynamic_interface_annotator/lib2.dart:9-81 | pkg/vm/testcases/transformations/dynamic_interface_annotator/lib3.dart:9-62 | pkg/vm/testcases/transformations/dynamic_interface_annotator/prefix/lib1.dart:9-39 | pkg/vm/testcases/transformations/dynamic_interface_annotator/prefix/lib2.dart:9-39 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 5 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 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/testcases/transformations/dynamic_interface_annotator/lib1.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a265a7cbb3dbfd4de71747615716d1f51be9ff2d0995b9877454b240a0ba673"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/vm/testcases/transformations/ffi/abi_specific_int.dart:103-109 | pkg/vm/testcases/transformations/ffi/abi_specific_int_incomplete.dart:85-91 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/testcases/transformations/ffi/abi_specific_int.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"04b102a87bf4cc127d80caa6701d03cbba726f70442df4fee343f9651e8a8acc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (28 lines \u00D7 2): pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_basic.dart:6-33 | pkg/vm/testcases/transformations/type_flow/transformer/class_generics_basic.dart:6-33 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/testcases/transformations/type_flow/summary_collector/class_generics_basic.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"4466efa8feaec3f3dce8b7250ed2644e2ae04b7309c78ec8aa977331e2134744"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart:14-22 | pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class2.dart:14-26 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/testcases/transformations/type_flow/transformer/invalidation_new_class1.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"87c5b02a0e83ba94841b1588ef3c4b3f3fdaddcf51960974ff044b8bd71dbe28"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/typed_data_patch.dart:100-121 | sdk/lib/_internal/js_runtime/lib/typed_data_patch.dart:101-122 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/typed_data_patch.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"f85f348534ed006f1d324fb145fc926b28f5773e478f00073140007f2f3899d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2037-2041 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:197-201 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2037}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d0c16ce477f9fdf51501233c8006cdbb4cd25538b6d885c03c62a82619ecae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1078-1087 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:418-427 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1078}}}],"partialFingerprints":{"codehealthFindingId/v1":"605bb22862bc99bade4a9e9ba9bd73a9f7363da1d087fe4328408f229d6270a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:855-868 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:849-862 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":855}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3159eac10e43b002f90fc700ceb5df9e88697ceeb085f187f6a6e682c2e377"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1602-1608 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1260-1266 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1602}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1f3dbdd4b2154531f5ea7a33f4b72c9373e133c242a5dac0047504565ab4e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1312-1320 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1734-1742 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1312}}}],"partialFingerprints":{"codehealthFindingId/v1":"61caf74632caf954f93e6d619d3d7208cc80900814b40c4232da62cb3ed01de7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2078-2087 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1787-1796 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2078}}}],"partialFingerprints":{"codehealthFindingId/v1":"9892068f7aae15e5e7fd139a5d0aa2505b071b6532d93469b5757b468d32168d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1926-1930 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1798-1802 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1926}}}],"partialFingerprints":{"codehealthFindingId/v1":"d123738dbfa58b722cf9a6683e68293cfe95eb8bd6e2a10e8070017d2a370a80"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2249-2258 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1936-1945 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2249}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb510cd39a62aba8f5a01226ad670ddce098169d651af1d0f350df78b40ba27a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1301-1310 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:1966-1975 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1301}}}],"partialFingerprints":{"codehealthFindingId/v1":"30794d84870dcb11847eb33a2ecda78c2c6378093934ea56975d159edc4935b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2067-2076 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:2051-2060 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2067}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c1e2a234557df21496e2a41a553e56808d2abc81b1f2a66156150ca899006e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:1952-1963 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:2062-2073 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1952}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c4add9ab1ee0810ca8d9a3fd01caf6f335f03e6c7e9dfd52c88503c5408dd3f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2580-2587 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:2090-2096 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2580}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b97679e2710e5e11fc27104dff3723f58987a64d1c8dc25c10455b50f9ec3f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2589-2596 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:2104-2110 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2589}}}],"partialFingerprints":{"codehealthFindingId/v1":"566a5464794737aefbb0de79ebc16ad275f7a55f7cc782c2a034f17dbccc09c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2631-2635 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:2139-2143 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2631}}}],"partialFingerprints":{"codehealthFindingId/v1":"60ec891ac1c6428bccb7f35cbb7ac75ba318d122d664f8b303a6de4c0cde6b44"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart:2637-2647 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart:2145-2154 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart\u0060 as WHOLE FILES: this scan already matched 44 separate duplicated blocks between them, totalling at least 867 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":2637}}}],"partialFingerprints":{"codehealthFindingId/v1":"46aeebd4d5b3bd033b5e7b2349d87bd7190b1fd357e81d0e7e87e6603911f4ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/keyword_state.dart:16-22 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/keyword_state.dart:57-63 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/keyword_state.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/keyword_state.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/keyword_state.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba06af46e15e549968c9c0f53735fa1c57908a2c92c648c6ac947fddae728e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/keyword_state.dart:24-31 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/keyword_state.dart:65-72 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/scanner/keyword_state.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/keyword_state.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 46 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/keyword_state.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"c489f3ce7aab5fb1448ee5b1bb214824a3cbbb8fdd720c20c633626e4cf3b27b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link.dart:108-113 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link.dart:42-47 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"95773a67ac9285cafa944830900778a42a20e6b7e9d1bbbb591946b00f6be1f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link.dart:99-105 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link.dart:67-73 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"5664f20c51db1de6c037ef93786ab7312ff5201708b9bbd54c6e46808144d0af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link.dart:70-74 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link.dart:153-157 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcf599db5b6c6f1b39801c9033c0dad954d9b1bbf8bd7382831d1b302fa4229d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:179-188 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:52-61 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fd533d19b48730e6e42053a4330c2785ce9339b624fa7afbe73c53771115344"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:136-141 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:112-117 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca889176a3130b5a0156dbae102e3ce12ba998ffb688e9b1215fd9c3765d54c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:110-117 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:144-151 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"15a2dbc9a04e4b315628a19a5f26766434ea1ca51c78f9b29a2ca2c6c5ec6155"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:161-168 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:165-172 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a2047cf54f48f96b65cabf6a51588719859cc621502bd310411037b5f20cde7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:92-99 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:174-181 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"daf0c74b90b7bedef43fa449be0f35e79622aa90616c0e7781fb8d7bbfeb7e10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:20-29 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:193-202 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"640718313c2ea45a00826c16a0e9e615dfd7d03196ad86ad826adf0718eece5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart:44-53 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart:227-236 \u2014 before extracting anything, compare \u0060pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart\u0060 and \u0060pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 129 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33d1c307020dd7800dc8ea3903fee2bfeda1e48f040dfea7a75f25ffa5394e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/_fe_analyzer_shared/lib/src/scanner/token.dart:975-985 | pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/token.dart:1251-1261 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/token.dart"},"region":{"startLine":975}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2652d6068bfc41f50386fee54db1be89f985af6ef478616de4a3b6ee8f9abd0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:333-346 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:419-432 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab79826babd779ce673ccaf9e36e41f41988fe16d18fa3978faa047a1f23b510"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:348-361 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:434-447 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"9132f83afb5f1c774a8c7d3b4da9eb7302cc721860ad0c4e34974d035ef81480"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:378-386 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:465-473 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"e919471c1a6c45d2f2884d41f5302a28304712301008d174f7dc6e2f924a4852"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:402-415 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:485-498 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"0894d00894ede110890afa424defacce86eb825941b8a2f8aa3baa64061309c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:439-445 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:532-538 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7ed187fadd8fac4a3e1b4f1332917c92f6460c77aa20e48cdf987cfc66f885a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:553-566 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:662-675 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bbaf23889686ac80a9a0385508a12233299222240d337aa62581f4ff093e912"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:582-590 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:721-729 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"94aa45262be6e271de35d05cf9cebc2fa467fc79520c0af9b2ab244990e64e98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:704-712 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:915-923 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c32786115b2be5a13c59776716465c9d975101f77462ae63b3e98169394e97d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:791-799 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1064-1072 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":791}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e6b0eb1a3df67cd1844d1dc71374c6a8252e9ee44fb22e8bbc125bc26610081"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:801-811 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1074-1084 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":801}}}],"partialFingerprints":{"codehealthFindingId/v1":"76c3e208ac21400f3a3cec77736670f93c54b09ab964242f9e093d04ea8c0a01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:813-828 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1086-1101 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":813}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dd17fadfdad6a9d7035654e9cfcc10c561d34ff544acdbe0918b7482055082b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:830-845 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1103-1118 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"51b785acded6fbef19ff64f309c49cad1acd32677f41ee0f9e402efef23cf77f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:937-943 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1218-1224 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":937}}}],"partialFingerprints":{"codehealthFindingId/v1":"7495f66a8d9acb4e50c4ef2ae1ddc5c5945a08d9bd7916373f77c627ea66fcd3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1047-1055 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1355-1365 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1047}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb8ec6b86ab5bd6320ddd32c0b22db4b0d495a0192038d1235ce6fca0963bca0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1075-1083 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1387-1395 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"a66dc2f564cda79753a560a8a7ec13e40f7a4e3de12a7d31175d9a872d6cec5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1091-1101 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1403-1413 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1091}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e01b01efec762230b3198bfd8e0561d5f7d8900c913dec420874d88ea7e23b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1103-1111 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1447-1457 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1103}}}],"partialFingerprints":{"codehealthFindingId/v1":"76643f877f84ca27dd37f6ea92bd24cf5dfe20e640110145824833e63768509d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1211-1217 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1535-1541 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1211}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc2a074c303b2a2a98451daa676bd8440b6965c21e9b5f823a9d244955988e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1249-1257 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1607-1615 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1249}}}],"partialFingerprints":{"codehealthFindingId/v1":"a72a79bf25ce3513b44ce23c47e6ba85f81cd7eccd786cb5a2852cb8a4dfcbb3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1364-1374 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1849-1859 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1364}}}],"partialFingerprints":{"codehealthFindingId/v1":"05949c9c0707eeb316297011c6ca9dc56529f06934b58ac62dea32a1c3fc6fc3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1376-1382 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1861-1867 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1376}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1448f0cd4606672545ba1e156d839fda9387547426c747381c6273b70bcd23c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1396-1404 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1881-1889 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1396}}}],"partialFingerprints":{"codehealthFindingId/v1":"86ed097225898fe45eb62ab235fa13ba2b9f4f09053f858a1efffb278640a67b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1453-1461 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:1996-2004 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1453}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e84397abcb9969648acda9e53767d3882364f9cd0cf9f17def33609fca6e03f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1475-1483 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2021-2029 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9a8dd234876bcd0bab2c0d72c31c3814808a970bb827c4873dc5c2e6f73d61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1509-1515 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2055-2061 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1509}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e7c09fb7abb23f7ade5d06bf52fc591b2feb711c54bc53940aa622478dd465f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1556-1569 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2128-2141 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1556}}}],"partialFingerprints":{"codehealthFindingId/v1":"356683e498c3c639ac89f7242c3c797350d2bddd0e0dab0c064f15d2658a9d4f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:1579-1587 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:2160-2168 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1579}}}],"partialFingerprints":{"codehealthFindingId/v1":"52180760c0750a4f179a3434246cdbfc6095fcf7e4077cc6574ea25d4ac1822f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dart2bytecode/testcases/type_ops.dart:26-34 | pkg/front_end/testcases/general/vm_type_ops.dart:28-36 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/testcases/type_ops.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"46da9425203447c1fdedc118a8dc1ec3a337d0d1f755bdb220934548355d74c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dds/lib/dds_launcher.dart:241-248 | pkg/dds/lib/src/dds_impl.dart:514-521 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/dds_launcher.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e8263754a46952373e33a12e42258d3c812ccfcf57868685bd235ad3cb5e02b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart:20-25 | pkg/front_end/testcases/general/new_as_selector.dart:22-27 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/constructor_tearoffs/new_as_selector.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"956d99ac9055bfc756bce5fc8ec5e1495befb91c1fe829759535d68c131251c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/testcases/dart2js/issue53804.dart:9-16 | pkg/front_end/testcases/patterns/issue53804.dart:9-16 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/dart2js/issue53804.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"79dfa8abdf5ba6941da047b8f2e197e7b1582910a59d872891b36c8231622971"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/general/ffi_sample.dart:21-31 | pkg/front_end/testcases/nnbd/ffi_sample.dart:21-31 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/ffi_sample.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5e8f1ab9e788429f29f192d6fc8a3f71fb8e6233e55f1e2bb643a0c68a0e2be"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart:17-27 | pkg/front_end/testcases/inference_new/infer_assign_to_implicit_this_upwards.dart:15-25 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_implicit_this_upwards.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f7471aca73f1fc4d5f36d5cd24f0a832a018e3fd7317cda1e1e0c03b42c7b9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_index_super.dart:61-65 | pkg/front_end/testcases/inference_new/infer_assign_to_index_super.dart:61-65 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_index_super.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b730de5f3f375eabaa28a940716334b0b4cd9f7746b689033d946071339254"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_index_this.dart:57-61 | pkg/front_end/testcases/inference_new/infer_assign_to_index_this.dart:57-61 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_index_this.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f409c83d901b20803f60a16dc64bc65ab50b8363c9dc28f6e25f63a1f4e8501"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart:15-25 | pkg/front_end/testcases/inference_new/infer_assign_to_property_null_aware_upwards.dart:15-25 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_null_aware_upwards.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"b766890065db6c139e911a4a0d24057e3e01be26af2c1db81e182b403f298cc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart:21-31 | pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart:21-31 \u2014 \u0060pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart\u0060 and \u0060pkg/front_end/testcases/inference_new/infer_assign_to_property_super_upwards.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 49 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_super_upwards.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"76e499b59ab3e2fbca89a23a42ccc8ae61b0c035968f521fba0625a9380a04d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart:15-21 | pkg/front_end/testcases/inference_new/infer_assign_to_property_upwards.dart:15-21 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/infer_assign_to_property_upwards.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"70321e11a2ab08560ece306c1b5be112985a5772a7d54dfa96781436b9c7dd61"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart:11-22 | pkg/front_end/testcases/late_lowering/late_final_nullable_field_without_initializer.dart:11-22 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/late_lowering/late_final_field_without_initializer.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b2b1d933c71dfae721e7c349760d045b5b311e883083ffd52cad9ab4e9bb7dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/kernel/lib/src/bounds_checks.dart:106-114 | pkg/kernel/lib/type_algebra.dart:738-746 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae83934f12b6424ca3a8f5fe9946339728aba4619fc0a72438e9729c165bf881"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 9): pkg/linter/lib/src/rules/avoid_equals_and_hash_code_on_mutable_classes.dart:33-40 | pkg/linter/lib/src/rules/avoid_null_checks_in_equality_operators.dart:54-61 | pkg/linter/lib/src/rules/avoid_returning_this.dart:28-35 | pkg/linter/lib/src/rules/no_logic_in_create_state.dart:24-31 | pkg/linter/lib/src/rules/prefer_constructors_over_static_methods.dart:33-40 | pkg/linter/lib/src/rules/unnecessary_overrides.dart:28-35 | pkg/linter/lib/src/rules/use_setters_to_change_properties.dart:32-39 | pkg/linter/lib/src/rules/use_to_and_as_if_applicable.dart:35-42 | pkg/linter/tool/checks/rules/visit_registered_nodes.dart:27-34 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 9 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 9 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_equals_and_hash_code_on_mutable_classes.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ecb7e73a1efea932267b2d3af2ee9633f5364e2b8c14ab56bd21c7a1c75af10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analyzer_cli/lib/src/analyzer_impl.dart:267-273 | pkg/linter/tool/test_linter.dart:139-145 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/analyzer_impl.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d2239f1f1e8169313005bd6c42c0d99340cfbbc442ca7d2d012b2f5e969317b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/vm_service/tool/dart/generate_dart_client.dart:696-702 | pkg/vm_service/tool/dart/generate_dart_interface.dart:282-288 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_client.dart"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"b864c293bf720eeca1ce1de8fb90ea28dc17621d88f409d485543845d8103de1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_http/http_impl.dart:322-331 | sdk/lib/internal/bytes_builder.dart:106-115 \u2014 before extracting anything, compare \u0060sdk/lib/_http/http_impl.dart\u0060 and \u0060sdk/lib/internal/bytes_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 39 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5810c5d7e04201fa24ff9e7470b08e28a8fec25f170f165cc2bf88859aa2896"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_http/http_impl.dart:354-359 | sdk/lib/internal/bytes_builder.dart:138-143 \u2014 before extracting anything, compare \u0060sdk/lib/_http/http_impl.dart\u0060 and \u0060sdk/lib/internal/bytes_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 39 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"45cde1c45ff4d9062813691ff688fc45bc823935b8119fdcd82b84409dc8e7a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart:503-510 | sdk/lib/_internal/js_runtime/lib/async_patch.dart:232-239 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/async_patch.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a709c42c6b1db61e4af689e4f5495d88c4dc3c347c7263387bbae720f3b570"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart:915-925 | sdk/lib/_internal/js_runtime/lib/async_patch.dart:632-642 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/async_patch.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":915}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff7a12948bae7b020c8b9f7e5b41bedd608f26d450c08965552397692380a56f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (33 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1823-1855 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1841-1873 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1823}}}],"partialFingerprints":{"codehealthFindingId/v1":"86636404961a040197cf67898ae8b5df7b5e5d7d071999d3eb699e231db940ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1869-1874 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1887-1892 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1869}}}],"partialFingerprints":{"codehealthFindingId/v1":"75f96358c6fd8f986bf015f2515998b16e850a97000bacc5b436979315bee121"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:1876-1882 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:1894-1900 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":1876}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6e115a1a77d370ad2d2f07453b3d3e8950504bbf2aa6432563c6480969db89d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:2015-2020 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:2033-2038 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2644-2649 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":2015}}}],"partialFingerprints":{"codehealthFindingId/v1":"55eef80620b0a70be911e5a89d5f770a72f6471b36edd7dda1d255933c526816"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:2131-2138 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:2149-2156 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":2131}}}],"partialFingerprints":{"codehealthFindingId/v1":"794247a510ef9230eac0421a866d565ec35ad669c16369d8d835da42fbddab78"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart:2152-2167 | sdk/lib/_internal/js_runtime/lib/bigint_patch.dart:2170-2185 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/bigint_patch.dart\u0060 as WHOLE FILES: this scan already matched 27 separate duplicated blocks between them, totalling at least 537 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/bigint_patch.dart"},"region":{"startLine":2152}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0cdf1a78b03aa940b37bcfadaad724c02a30fef0ac7d89f7a9b5cc54e5cdeb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:177-181 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:177-181 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c295dc18f4d31af3e1c2a8adc3cbab7a941553e4d87acbef08099be9c99af4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:193-197 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:193-197 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a382f0bb1f446d0467a528c5935b902ad87f2904c3dbb7e084e6a2380ec9fed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:199-204 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:199-204 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5af76c1f5bdb6c0b036dba43a83b1138248d4c98211fbaffd09dfef6fd4222b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:303-307 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:303-307 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"d71eb8f3e4fd1f48cf3c0ca6e3f8b384c508e82c41e4ea02d3bc18910d567875"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:332-336 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:336-340 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d2853af05665eba55823c9885efecdae3fdba2244dff28711bcab2b2914680"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart:371-378 | sdk/lib/_internal/js_runtime/lib/convert_patch.dart:375-382 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1415-1422 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 11 separate duplicated blocks between them, totalling at least 120 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"3217f8047667cc3e4e97175dd39c91892360aabebfd37653ea617a241afe43ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart:297-303 | sdk/lib/_internal/js_runtime/lib/core_patch.dart:311-317 | sdk/lib/_internal/wasm/js_common/stopwatch_patch.dart:32-38 | sdk/lib/_internal/wasm/standalone/stopwatch_patch.dart:24-30 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/core_patch.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"96009e8120ce17c1c33890f2b1deaa87e1831a3478839c91c4b4dd7f0d5de80e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart:305-311 | sdk/lib/_internal/js_runtime/lib/core_patch.dart:319-325 | sdk/lib/_internal/wasm/js_common/stopwatch_patch.dart:40-46 | sdk/lib/_internal/wasm/standalone/stopwatch_patch.dart:32-38 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/core_patch.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"05134d5fa740f3228559308778d2eb51d8fcd89d5b01a999ed04facedd49abb7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart:516-529 | sdk/lib/_internal/wasm/js_common/regexp_patch.dart:10-23 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"db929688cd092c69df7484dd898a51e9719c33c7fb3e63e2c72219e1a8779ea1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart:394-403 | sdk/lib/_internal/js_runtime/lib/developer_patch.dart:363-372 | sdk/lib/_internal/wasm/standalone/developer_patch.dart:59-68 \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":"sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3a347beb2f6e475c906037487a53d9ac734889a366b680dca246270c98ce192"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:57-66 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:53-62 | sdk/lib/_internal/wasm/common/io_patch.dart:53-62 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf555003d1bc94ba6a40b6dd7c7eb2cecc55c3ce687bd071592eec08bed6a8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:353-364 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:349-360 | sdk/lib/_internal/wasm/common/io_patch.dart:349-360 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"980b1b447296082eb67e6a72d886854b4b1a6195355e4989cfe3ff305e6d329b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:435-441 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:431-437 | sdk/lib/_internal/wasm/common/io_patch.dart:431-437 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"525d1052b67c5c7c0a9f29c0fde649c1cdebdef2a0509c8a5237b37ba46a8121"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:464-471 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:460-467 | sdk/lib/_internal/wasm/common/io_patch.dart:460-467 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce70b6e864ca9e708aac8d46c17b52ca453da4772e5c6d97ab51e75539539ca2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:476-485 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:472-481 | sdk/lib/_internal/wasm/common/io_patch.dart:472-481 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":476}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eff2ded553a0ae43ae85f03cf86d356a9ae8938d13e5fa08f718297597422c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:490-499 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:486-495 | sdk/lib/_internal/wasm/common/io_patch.dart:486-495 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"2849e206cffa1aadaeb5cfd68a186ff3ed23610fc4a642cc90e4450db6046c07"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:504-513 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:500-509 | sdk/lib/_internal/wasm/common/io_patch.dart:500-509 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"e52393b6d86aa0cd3cffb595ef23586eac0eea1094b8e9dc2e7874030fe963a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:515-523 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:511-519 | sdk/lib/_internal/wasm/common/io_patch.dart:511-519 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"52854114a3bf16d13770201ab567e9aa0ecf7f0b6e67cb3ea42fe6195d0f16ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:528-537 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:524-533 | sdk/lib/_internal/wasm/common/io_patch.dart:524-533 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd2bc8bb2402eae1a1bc8d78583e40b1dc414d32907567d1363143bf3bd2fafd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:539-547 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:535-543 | sdk/lib/_internal/wasm/common/io_patch.dart:535-543 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed9ff297d31850ad9cdd2b8ca38693ade5e96f72c63fda980f202f8b68395d80"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:655-664 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:651-660 | sdk/lib/_internal/wasm/common/io_patch.dart:651-660 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"4abb5e1ec6d0770f95d9af3e755c60365d9f1c8f97aaeaa5ac32180e871f6da5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:716-727 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:712-723 | sdk/lib/_internal/wasm/common/io_patch.dart:712-723 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"23c3aca15a79ab35311a23087015a8944b15e66423bf355d0993cb910fa5f7a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart:729-737 | sdk/lib/_internal/js_runtime/lib/io_patch.dart:725-733 | sdk/lib/_internal/wasm/common/io_patch.dart:725-733 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/io_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 152 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/io_patch.dart"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"c70ed16c0c8b51e56dfee6a1029c3a7ef8a2571366d7efa15af25d07517b5eb9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart:84-90 | sdk/lib/_internal/js_runtime/lib/js_patch.dart:180-186 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_patch.dart\u0060 as WHOLE FILES: this scan already matched 9 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":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc543fe67c1e29437b649a162f218eff42363fd43acf224f7ecf8a5dc98799d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart:92-98 | sdk/lib/_internal/js_runtime/lib/js_patch.dart:188-194 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_patch.dart\u0060 as WHOLE FILES: this scan already matched 9 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":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"16aed1bae0c4994bafa0580e14589aa232c88ac622a7a3f8d0d1ddd968a09caa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart:173-182 | sdk/lib/_internal/js_runtime/lib/js_patch.dart:284-293 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_patch.dart\u0060 as WHOLE FILES: this scan already matched 9 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":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"d057b49db9946d57456e6ed289a06adc3b4f73654a6d8d2f0e3fdcd131f3ccf6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart:270-274 | sdk/lib/_internal/js_runtime/lib/js_patch.dart:382-386 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_patch.dart\u0060 as WHOLE FILES: this scan already matched 9 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":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e33d4e96f7ce4457629acdabd877f9786619e01311427e2d8bfb491ff6ebab7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart:288-292 | sdk/lib/_internal/js_runtime/lib/js_patch.dart:403-407 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_patch.dart\u0060 as WHOLE FILES: this scan already matched 9 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":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"a49bd43fb20cdef139bf273fc466e509854e88f3046101230401a9fdc72ce88c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart:305-309 | sdk/lib/_internal/js_runtime/lib/js_patch.dart:420-424 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_patch.dart\u0060 as WHOLE FILES: this scan already matched 9 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":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"409dac17fc8ec25d6d1f40625be0b437b6f926e5d11c732c9aa5871453e55160"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart:263-274 | sdk/lib/_internal/js_runtime/lib/math_patch.dart:253-264 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/math_patch.dart\u0060 as WHOLE FILES: this scan already matched 6 separate duplicated blocks between them, totalling at least 144 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"f81ee04631a920b3b2b347d103d50598f0e743528bc247e2412d29e780f3b382"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart:84-89 | sdk/lib/_internal/js_dev_runtime/private/identity_hash_map.dart:40-45 | sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart:124-129 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"296150df54991b7597fa2627a7479092f8822af30ce3efe74bf193d9f1e64f1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 6): sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart:91-95 | sdk/lib/_internal/js_runtime/lib/collection_patch.dart:119-123 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:78-82 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:137-141 | sdk/lib/collection/maps.dart:39-43 | sdk/lib/collection/splay_tree.dart:612-616 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 63 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":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"d57dcf09be19e8a005a7ee238e867a4ba5395131745c867d212a077d451e40ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart:227-234 | sdk/lib/_internal/js_dev_runtime/private/custom_hash_set.dart:146-153 | sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart:253-260 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8bf8c3bc2a0a36f13e1c6df2c4f04f4125e9ddb20524a1d39f430934fa0ff08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): sdk/lib/_internal/js_dev_runtime/private/js_array.dart:358-362 | sdk/lib/_internal/js_runtime/lib/js_array.dart:467-471 | sdk/lib/_internal/vm/lib/array.dart:60-64 | sdk/lib/_internal/wasm/common/typed_data.dart:2365-2369 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_array.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_array.dart\u0060 as WHOLE FILES: this scan already matched 15 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":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3234c23f35b28436eb243c79597d5a397093e68d308ce240a1e7f3cf6cfc864"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_helper.dart:401-411 | sdk/lib/_internal/js_runtime/lib/js_helper.dart:740-750 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_helper.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_helper.dart\u0060 as WHOLE FILES: this scan already matched 6 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":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c8b04af95c25c7648d29d754d24da76c03e45184e44fe96244cdac3b4d3544d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_helper.dart:548-553 | sdk/lib/_internal/js_runtime/lib/js_helper.dart:934-939 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_helper.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_helper.dart\u0060 as WHOLE FILES: this scan already matched 6 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":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"b589f6adc953586e53e3817f0578c6246b3a3e8c61b0879f6ed461281bab25a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/js_helper.dart:628-635 | sdk/lib/_internal/js_runtime/lib/js_helper.dart:1911-1918 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/js_helper.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/js_helper.dart\u0060 as WHOLE FILES: this scan already matched 6 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":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"d23a138101bac31b24ce1c1f64f2aaf49cb3552d6443ed842668ed009254338d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart:60-66 | sdk/lib/collection/set.dart:337-343 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"cad99bcffa8672a9a94a62e3b259f83109fd1cd3ccd84ccea38383c34bd2b293"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart:68-74 | sdk/lib/collection/set.dart:345-351 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/linked_hash_set.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"da8776a5b725548c2165640d80592d0d19dd5f432a061abc7ac886a191c00c0d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:106-111 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:121-126 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7cebf93a496523d80942d39fc08731f74ad579a438db967918c8d353c543b2b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:206-211 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:222-227 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"331364c109823685c8d15688e75c73521e5b530051d7538f0e6c03888c217ec8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:282-287 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:309-314 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ab9f1df99bd6d65152e34b96a7fcc352870a304cf1bf6301c85f2842296e9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:337-342 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:375-380 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ce167240788de06c8858aef86817a2d5ffc3c4a7fd7089ff317c9a76031c6c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:344-348 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:382-386 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"4840770354b65a46201872b8b3aefe53625bd2576f69322d8a9692388387dc93"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:352-357 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:391-396 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"4528aab21f82f73096cad9b3c640d71aa35394c810d7fb1f399d6d4c17eedf8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:380-386 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:446-452 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"64b19165949a89789ec5f142ec1865e474fb76c2477a00840c8ddbdf17191f02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:817-826 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1032-1041 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc342659c79917e00a9b5b4d3d8dd73bd53e426b340d6c2104a4b300fb5ab4ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:859-868 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1080-1089 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":859}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e58e8b02da98316c17b4cc61522a33f371ce5258bc42ba564da535c0d5dc9cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:894-903 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1128-1137 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"01ff14f23749592c37fd2520901767fa7d86d71b368d13fd60ae602aaa07e647"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:934-943 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1181-1190 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a52ca8f3bd7592ae17d0f16e0e014e0bcdbeff317a1dd02f74a6eac927caabb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:980-989 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1234-1243 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"363b18dca46673e0ee76a0ceb36ba5532344fcfa41444df7e11b7b8d9fed24d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1024-1033 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1290-1299 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1024}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c38add95600a93a6155cd4398f2066a1c0d4e238827e9abaa26803326f1e03a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1071-1080 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1343-1352 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecb6368b11bdd896011b194075989217221040e1cc6e23ae0807860954cf595e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1118-1127 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1397-1406 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1118}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e67d977946ff291b71a12f482953fad15dc8076e4b014d3ff743fc48b9bd973"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1184-1193 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1470-1479 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdd805cf2aef91fe51240bfa917d9d73c6328a1c140f5cb49d6d898ba4ff49f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1619-1623 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1907-1911 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1619}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ec4543dd3140fa8dcb8daf3616d573a7bb9759aac2bbb6f44661f2cf10f3a83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1696-1705 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1984-1993 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1696}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f771b36961e3c57aafc4e750e619520262126f60f90cd20531206e72d5a9ab2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1727-1735 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2015-2023 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1727}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cac27d0bbdd9ba0552bf01f811f29dff8afe610acd4102badd7298d2e058268"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1737-1746 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2025-2034 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1737}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fed02626974bbe90c367d2d9aa54d956add56f189630ffefa2899ecd48b6b3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1779-1786 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2067-2074 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1779}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3aa4368fac3894d197f1d7baa34e6038e3948ce7f62c2e99e538185373e1ff"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1788-1795 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2076-2083 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1788}}}],"partialFingerprints":{"codehealthFindingId/v1":"95d81660e747218db7fcea6cd8df4836048798ec5c051ab16433fb4ca37d9f9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1797-1804 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2085-2092 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1797}}}],"partialFingerprints":{"codehealthFindingId/v1":"0307877b3d68310f08294dec4e9893dfe1c5a804f4f3fca1c3a73f4d90d2e8bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1806-1813 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2094-2101 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1806}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b1c5e1a43a2129366bb8f4ecc497a5885c010906d0ec7e6815ed3eb1c1a1950"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1815-1822 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2103-2110 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1815}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d42db55ec9ac880524d988462566479e5b5b7c1a54e75036a669ecbe33800b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:1824-1831 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:2112-2119 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1824}}}],"partialFingerprints":{"codehealthFindingId/v1":"faa570861da46d8e5b4d487eee75c6d7d4e81cb7c82ad5a02d3f56b3d5e77196"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart:157-161 | sdk/lib/_internal/js_runtime/lib/regexp_helper.dart:164-168 | sdk/lib/_internal/wasm/js_common/regexp_helper.dart:148-152 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/regexp_helper.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c132f8e4d2b1428c4de59f20134f1618e258736a214b4c5ec30f5fd90737401"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/string_helper.dart:43-49 | sdk/lib/_internal/js_runtime/lib/string_helper.dart:56-62 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/string_helper.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"03701ab53d7a24b19530755c478f4927eddca2d46f368c0eb6621d3ae7eb61fb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/string_helper.dart:74-80 | sdk/lib/_internal/js_runtime/lib/string_helper.dart:87-93 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/string_helper.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9851428c6bccd0a4257c2ae0faf6ecbc22d3a0ce95cb7b9019c2002b8eb2e37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:180-185 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:144-149 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 63 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bfcdd475750ec81b3e973d18c8756ee1cf0d89402e523028ad1c3b8928afa1e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:1260-1266 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:179-185 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 63 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"a167639776af5abe67536df2956dea0e9d4a98cabef30f7ff10f21a9eb1d3a12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:1458-1463 | sdk/lib/_internal/vm_shared/lib/collection_patch.dart:856-861 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/vm_shared/lib/collection_patch.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 44 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"18b02b42cbb9bd69ad705ce85fd467ecb8bc0121eda8085228b2eb1ceb9240e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/isolate_patch.dart:44-55 | sdk/lib/_internal/wasm/common/isolate_patch.dart:41-52 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/isolate_patch.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90b1263c55305943c05ff70a1d82ef84f36423e1ca51407d5558d7b7e645d49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/regexp_helper.dart:246-252 | sdk/lib/_internal/wasm/js_common/regexp_helper.dart:212-218 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/regexp_helper.dart\u0060 and \u0060sdk/lib/_internal/wasm/js_common/regexp_helper.dart\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":"sdk/lib/_internal/js_runtime/lib/regexp_helper.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"164a7d2db6ba927467c78f2dba7a5af60ab00684775786a714ef96543b7538ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/js_runtime/lib/synced/array_flags.dart:115-120 | sdk/lib/_internal/js_runtime/lib/synced/array_flags.dart:115-120 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_runtime/lib/synced/array_flags.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"29b6a34816b14294c91edcacf941176edf1c571d9340b7fec376603c4db709a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/js_shared/lib/synced/recipe_syntax.dart:77-81 | sdk/lib/_internal/js_shared/lib/synced/recipe_syntax.dart:77-81 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_shared/lib/synced/recipe_syntax.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"2771c73e0266b78eb305a18c600ed07c92af6ee1679aa32f40cdbf1c6466502a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:60-65 | sdk/lib/_internal/wasm/common/convert_patch.dart:52-57 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ce85e5b682a826cb333a9bb9cb210e30c6640434fca6955df183c9fb906f12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:218-225 | sdk/lib/_internal/wasm/common/convert_patch.dart:271-278 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:184-191 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cd72152024db30fb4f290f294e185f89d8e1d86e7840337f1dcfef1e9b0478b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:228-234 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:194-200 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 193 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"606f01215073ff4aee2da7ce08e0b94dcf57abbde03cb6a7d9c4122e1fb753f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:1276-1282 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1154-1160 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 193 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"f006a6feacb6cf7032d463a2f49c1a4d1bd1c54607453c6371fe7726107964e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1461-1467 | sdk/lib/_internal/wasm/common/convert_patch.dart:1647-1653 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1339-1345 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1461}}}],"partialFingerprints":{"codehealthFindingId/v1":"101091a23e205094df07ef1114f67b256e81afa899f3ba90f1e51f164a40a6c7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): sdk/lib/_internal/vm/lib/convert_patch.dart:1562-1567 | sdk/lib/_internal/vm/lib/convert_patch.dart:1694-1699 | sdk/lib/_internal/wasm/common/convert_patch.dart:2088-2093 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1562}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e8bb9472a94a13dd8e94abb843c2b5f8929ee7e88b4a7c308e834ddab872d56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:1586-1592 | sdk/lib/_internal/wasm/common/convert_patch.dart:1916-1922 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 16 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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1586}}}],"partialFingerprints":{"codehealthFindingId/v1":"5631166a81a1fa8335f9ba42375c7e68e5a48f2109cde419fb3d2051fc6cd0ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/vm/lib/double.dart:109-114 | sdk/lib/_internal/vm/lib/integers.dart:119-124 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5bff9581cfc59082ed50d7f24d7db460e81f4b6a81c1390c1ef5f3cf6b477c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/vm/lib/double.dart:127-132 | sdk/lib/_internal/vm/lib/integers.dart:133-138 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab0b786eb0bbe0c222666468ecbf913b2873295d66b738f0d83b80efa11d3a5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/vm/lib/double.dart:134-139 | sdk/lib/_internal/vm/lib/integers.dart:140-145 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"8359a7864acc5161da5fbec0cc32a52da081b9106dc5a99b70b73430b7f31c11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): sdk/lib/_internal/vm/lib/math_patch.dart:178-187 | sdk/lib/_internal/wasm/common/math_patch.dart:92-101 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/math_patch.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fd901c25268f5d0b8b9d07bbc783d6eb1b714ab80602fc8fc6ff6e70dae9d13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/vm/lib/string_patch.dart:1420-1426 | sdk/lib/_internal/wasm/common/string_helper.dart:24-30 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"67f88c3b38029c98b27f5204cb6f9a0f4b1b9bbca97dd342abdad2068f29882d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:274-280 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:610-616 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:956-962 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1299-1305 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1642-1648 | sdk/lib/_internal/wasm/common/typed_data.dart:2151-2157 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dc77708b38549ad0e77e71f1b60f0c212ae06035a9ea691a186a8b980f7732d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:223-227 | sdk/lib/_internal/wasm/common/compact_hash.dart:193-197 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eb495cf74725456b55a4472cc385a356f4d2e674697bc04d4078730310aa408"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:230-234 | sdk/lib/_internal/wasm/common/compact_hash.dart:200-204 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"119584e2038edf668d003a6dcf4db54f9f919c61aca1fd6f778dfd008632d9b8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:456-465 | sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1017-1023 | sdk/lib/_internal/wasm/common/compact_hash.dart:415-424 | sdk/lib/_internal/wasm/common/compact_hash.dart:937-943 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a75cbefb84c150e02b400f983d7f9ba73a9d2f341398ce106950118dce751b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:710-718 | sdk/lib/_internal/wasm/common/compact_hash.dart:668-676 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4abcfaa82c2bd8b4ad7595ad231f98c0e150b8432f6a1432b0dc9a498eace09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:783-790 | sdk/lib/_internal/wasm/common/compact_hash.dart:706-713 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c1a78d9cccb0a1e83898085c10581464ec76ede293dd08fac88fe1182c878de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1334-1341 | sdk/lib/_internal/wasm/common/compact_hash.dart:1232-1239 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1334}}}],"partialFingerprints":{"codehealthFindingId/v1":"f416668bef86f563f580aec1a10960eb0ab7b4bf3e274f56cee0dced02d47ed2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/double_patch.dart:11-18 | sdk/lib/_internal/wasm/standalone/double_patch.dart:12-19 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/double_patch.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"313ec096ddb77f4d46dc37af6c9be091d376c226cc4c72f25bb93d5aabac39a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:203-209 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:143-149 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"82ce92ac5e70007dbdeadc80ab4f3c75dc7dc36d0937765fb6377cc5b42dea01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:217-222 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:159-164 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a3b4c7acc802defc0d93511ece531f44b3d5905654928f40f4ad1a1142305d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:251-257 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:192-198 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"33e794be2e6d15aa32ab667bdab76aa0e932efbda409f817b007fe804b80b7d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:304-311 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:247-254 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2bfff8e6fccb120b40e282ed9a369fa8c28b77b54aecb4b7c04f04ecd2c5c39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:387-392 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:293-298 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"3362ad66d8d58eda18dd7c00cb0b66a7e4e0aef8dbce2289030497b37879d028"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:406-412 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:312-318 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"208f38e8221d87643093097a5087c0b48aea540c166ec347ed55349bb307d5bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:547-552 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:393-398 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5ab7075a6816af64655319a2b16bdb95ea834d04ff92b1fe5b5b5042bf6e220"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:554-559 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:400-405 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"f966f39eb9b24ad6af80f3c5f034cf661fa6cf2377b3a140bbf082d5a19eacb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:640-647 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:474-481 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"c156276c3d3186683b0555ba570c25bd1e9bda0b4cdf22205f60dac5752ccc30"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/async/stream_pipe.dart:172-179 | sdk/lib/async/stream_transformers.dart:104-111 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream_pipe.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"0334d15de13e0d1ee18b246410f04e83c7462b0464c0e3be56b7eea37514cdbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/analyzer/lib/src/binary/binary_reader.dart:270-275 | pkg/kernel/lib/binary/ast_from_binary.dart:234-239 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/binary/binary_reader.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"0394620e8883602f70cae4c3b7956071990704ad82c7d9c017cc84e3252c73eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analyzer/lib/file_system/memory_file_system.dart:360-366 | pkg/analyzer/lib/file_system/physical_file_system.dart:126-132 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/file_system/memory_file_system.dart"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff636cdd73de5d96cb3af5f61a2ee2c84936cd20eb21e1c367d46d96cbfeb05a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/analyzer/lib/file_system/memory_file_system.dart:454-462 | pkg/analyzer/lib/file_system/overlay_file_system.dart:263-271 | pkg/analyzer/lib/file_system/physical_file_system.dart:232-240 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/file_system/memory_file_system.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b55e7f3431cee68a0510d29a39fbf13043de33c11d6524260b935bdcd97a5f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (26 lines \u00D7 2): pkg/vm/lib/modular/target/flutter_runner.dart:16-43 | pkg/vm/lib/modular/target/vm.dart:87-112 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/target/flutter_runner.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b6714e745cdbc1acad55417930e93ecc40402f00277b6da4e4ad421e1ff2da3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analysis_server/lib/protocol/protocol.dart:147-154 | pkg/analysis_server_client/lib/src/protocol/protocol_base.dart:112-119 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/protocol/protocol.dart\u0060 and \u0060pkg/analysis_server_client/lib/src/protocol/protocol_base.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 53 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/protocol/protocol.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"5006cf79e7e20ccc7e61f01cc9c156f12f712dcf9a85faa3e279fa8a051ea260"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart:224-230 | pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart:195-201 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"efd501fc0fee56749b8bfb0af4a90d9978124d3e70effb0d3166a30a102d236f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/lib/src/plugin/server_isolate_channel.dart:64-70 | pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart:190-196 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/plugin/server_isolate_channel.dart\u0060 and \u0060pkg/analyzer_plugin/lib/src/channel/isolate_channel.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 63 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/server_isolate_channel.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1557607122521e8afe4aa43bedb53118a5ea13bac54aecdacbf11dd1bd6937c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart:576-582 | pkg/linter/lib/src/rules/use_super_parameters.dart:61-67 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_super_parameters.dart"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"3427a6b5f9ec3de0bdbc03b71461bb873f1a6f32418f18373df8f0794fd7cddf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/extract_local_variable.dart:184-190 | pkg/analyzer/lib/src/test_utilities/function_ast_visitor.dart:191-197 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/extract_local_variable.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"945342635a4460c52adb4b5925ad5b249b5076fe18b6b0382c4870c4d80a9826"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/analysis_server/lib/src/services/correction/dart/replace_container_with_sized_box.dart:25-33 | pkg/analysis_server/lib/src/services/correction/dart/replace_null_with_void.dart:25-33 | pkg/analysis_server/lib/src/services/correction/dart/replace_var_with_dynamic.dart:23-31 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_container_with_sized_box.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"89bf3ebbab3b08f3754bfa2af55a3b09df455bd8f29d687a3c9e66bae1338cc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/legacy/convert_getter_to_method.dart:72-82 | pkg/analysis_server/lib/src/services/refactoring/legacy/convert_method_to_getter.dart:66-76 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/convert_getter_to_method.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"521613656f645b0688d62214b1582d6223b5dea9b2fb31d0bd9431c67f585bde"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart:252-262 | pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart:161-171 | pkg/analysis_server/lib/src/services/refactoring/legacy/inline_local.dart:167-177 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a680f791e02c8b89dd97390ca235d05cd4cb66b35b8f8cce4a3058bac30c4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart:56-64 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart:43-51 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a974a05ed097e9c6807ea4f9773719fd6e3a4486a33f69741511e9023f7bb0d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart:78-85 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart:85-92 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfe7470dac5e61e570c09e3c151b9aa52e84d0cdda4e1562c5611f0d020ecb5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart:87-96 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart:94-103 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab56847d55e0c8898c36d44d2b3b7b3cb99dbfd8a4e9b97fa5413071387c3a4f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart:341-351 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart:245-255 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d9c41d08c13c604fbd622532adb05fdd90c68bb928b83dae5054281d1db9f3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart:353-363 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart:257-267 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"c806b4ad1a189cb119b1e3d70a25aecfe0ae0396f4079e7bf45cf7352721009f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart:388-398 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart:269-279 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart\u0060 as WHOLE FILES: this scan already matched 7 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. 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c16adeaa5ff63e6aa3a6b4bd006b1c14750c2c883f607e4fc4d7a547133315"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/analysis_server/lib/src/status/pages/ast_page.dart:52-60 | pkg/analysis_server/lib/src/status/pages/contents_page.dart:61-69 | pkg/analysis_server/lib/src/status/pages/element_model_page.dart:65-73 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/ast_page.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"463683b9d2254edf99ab62fb651e5336f821e43de5fa08774b312a1d20d0c164"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/lib/src/status/pages/collect_report_page.dart:28-34 | pkg/analysis_server/lib/src/status/pages/timing_page.dart:18-24 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/collect_report_page.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e31b4ac5059281b64b3f113ce6f716308487320b805d04e0ec315b095e64098"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): pkg/analyzer/lib/src/dart/element/element.dart:4079-4084 | pkg/analyzer/lib/src/dart/element/element.dart:9441-9446 | pkg/analyzer/lib/src/dart/element/element.dart:11559-11564 | pkg/analyzer/lib/src/dart/element/member.dart:345-350 \u2014 there are 4 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":4079}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad79b4c1c2005dffe4186ade327373bcf31dcf8536eedeb010dd66cc0eb5f0ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:415-423 | pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart:638-646 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbecdc1a55a6d909442705841cd2684b77de93b3e6ab22c52327b0e061c11673"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart:425-432 | pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart:739-746 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"d48622a1f5c466cdd75f4998b4c220990455b53159654042d720e6f1afc6e677"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/analyzer/lib/src/error/best_practices_verifier.dart:2223-2231 | pkg/analyzer/lib/src/error/element_usage_detector.dart:418-426 | pkg/analyzer/lib/src/error/element_usage_detector.dart:1002-1010 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":2223}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ebf934112fb8381bf7bf69c57e5edcc5655ed82517250139b0b0a5c201a5dcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/analyzer/lib/src/fine/library_manifest.dart:213-218 | pkg/analyzer/lib/src/fine/requirements.dart:2626-2631 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de0bf0ea4e04bf3f54e3122cadd111dbe36617c0e6f1007a1335f4fae2031d3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analyzer/lib/src/generated/exhaustiveness.dart:797-804 | pkg/analyzer/lib/src/summary2/default_types_builder.dart:449-456 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/exhaustiveness.dart"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1d756912c1d23dadf727d3e884272e1b9077b94568e9456b4f95ff8d961415"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): pkg/analyzer/lib/src/summary2/element_builder.dart:1764-1768 | pkg/analyzer/lib/src/summary2/metadata_resolver.dart:169-173 | pkg/analyzer/lib/src/summary2/reference_resolver.dart:185-189 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1764}}}],"partialFingerprints":{"codehealthFindingId/v1":"440f4e7b0fa519172fb558c4bcafb92e5c5de7dbbeabb4754701a558f46a5f9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analyzer/lib/src/workspace/gn.dart:39-45 | pkg/analyzer/lib/src/workspace/simple.dart:30-36 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/gn.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3930ccee8f222fed43d3288827a2d0040560ba81252dc01a1044570e1bf45b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/compiler/lib/src/inferrer/map_tracer.dart:69-77 | pkg/compiler/lib/src/inferrer/record_tracer.dart:30-38 | pkg/compiler/lib/src/inferrer/set_tracer.dart:92-100 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/map_tracer.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a6b4f19ae03791c3976c27b5ee83aafe9020196d6212d1a1b8e0db949f317c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/compiler/lib/src/js/js.dart:370-375 | pkg/js_ast/lib/src/nodes.dart:792-797 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/js.dart"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e9fc7870cb7a16f1d70761d3837fbf763caa9c07b305b2db0036ab57e57c96d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/compiler/lib/src/js/js.dart:377-382 | pkg/js_ast/lib/src/nodes.dart:799-804 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/js.dart"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf95438fe11ea290da172edbb763d926ce68f0e1aa02cb7508489566cf3880bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/compiler/lib/src/js/size_estimator.dart:854-863 | pkg/js_ast/lib/src/printer.dart:1248-1257 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/size_estimator.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 154 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":854}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e34601be053d792b5dac110e73ae5d8578d8b3c7ed5fe969cfe676818c445d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/compiler/lib/src/js/size_estimator.dart:1104-1114 | pkg/js_ast/lib/src/printer.dart:1542-1552 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/size_estimator.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 7 separate duplicated blocks between them, totalling at least 154 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"d35ecff084e1fea7b29290437c0794980cec9105f47de9e74dacafeb27565754"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/compiler/lib/src/js_backend/enqueuer.dart:68-73 | pkg/compiler/lib/src/resolution/enqueuer.dart:71-76 \u2014 \u0060pkg/compiler/lib/src/js_backend/enqueuer.dart\u0060 and \u0060pkg/compiler/lib/src/resolution/enqueuer.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 60 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"23f68c7d613ee632e4988845a67305b993646c36e64bdaa109d0d1a5b6271219"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/compiler/lib/src/js_backend/enqueuer.dart:151-156 | pkg/compiler/lib/src/resolution/enqueuer.dart:152-157 \u2014 \u0060pkg/compiler/lib/src/js_backend/enqueuer.dart\u0060 and \u0060pkg/compiler/lib/src/resolution/enqueuer.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 60 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ab47394d7a990ea351b4f1cf96f09a4dc9ed069f6279034fda820d088f9502a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/compiler/lib/src/js_backend/enqueuer.dart:249-257 | pkg/compiler/lib/src/resolution/enqueuer.dart:159-167 \u2014 \u0060pkg/compiler/lib/src/js_backend/enqueuer.dart\u0060 and \u0060pkg/compiler/lib/src/resolution/enqueuer.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 60 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e4b53b88040efe260a525b5cf1e256873e8edab83771b27accd0a10515fa211"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/js_backend/enqueuer.dart:293-300 | pkg/compiler/lib/src/resolution/enqueuer.dart:304-311 \u2014 \u0060pkg/compiler/lib/src/js_backend/enqueuer.dart\u0060 and \u0060pkg/compiler/lib/src/resolution/enqueuer.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 60 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ff77f1e36f8c48751525d732edcbb26f0f222fd11f39e2a1d05aff6a8212f03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/compiler/lib/src/js_backend/enqueuer.dart:312-316 | pkg/compiler/lib/src/resolution/enqueuer.dart:313-317 \u2014 \u0060pkg/compiler/lib/src/js_backend/enqueuer.dart\u0060 and \u0060pkg/compiler/lib/src/resolution/enqueuer.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 6 separate duplicated blocks between them, totalling at least 60 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b540603622d838f002c3e67b9941133e5f2d68c281f0dbfea49916dfb0805d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:947-954 | pkg/compiler/lib/src/kernel/element_map_impl.dart:646-653 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":947}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b9d2df76e40ef45692987d4081137a283313af9cfda446c34f60084d2ba09cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:1196-1203 | pkg/compiler/lib/src/kernel/element_map_impl.dart:875-882 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"450c12c513784602af93808eb71396f7aad1dbbefaa73e17d4cd25a9c3fb71ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:1268-1274 | pkg/compiler/lib/src/kernel/element_map_impl.dart:951-957 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1268}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ede9dafef3ee1b479ee52e78a235cf38b52b2007f55efd4579091c09b669013"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:1276-1282 | pkg/compiler/lib/src/kernel/element_map_impl.dart:959-965 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02b397b5ae4933061da79d65fb5303b84cdfdf47529119c4b3425430fba632d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2455-2462 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2179-2186 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2455}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ee3cb12a74dd09c972ef81975eb462fcac702d3850d3b352275ffd98d852b9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2591-2597 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2061-2067 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2591}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a627c95ac66c9da38e8320aa21d3357ed173a1260d217c047fc1b00db508d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2599-2605 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2074-2080 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2599}}}],"partialFingerprints":{"codehealthFindingId/v1":"01cb88ceee11a0a6f2ff77b70f516c162ee1e5f5caec943c0eeff611b97e8a37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2615-2621 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2082-2088 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2615}}}],"partialFingerprints":{"codehealthFindingId/v1":"05d62f4a66f62681c1fa3282b3e856fec17840b74c1c5ab96485025bf93f09d8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2623-2629 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2090-2096 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2623}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a8dac4704fd1568101b5c5f1cd030a93d023a0ded766b2b0a455ad35394654f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2647-2653 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2098-2104 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2647}}}],"partialFingerprints":{"codehealthFindingId/v1":"83dc5cae4f26497e59b957c97a8ca3ce81c8713f7eaedbda9086b222e8809574"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:2697-2704 | pkg/compiler/lib/src/kernel/element_map_impl.dart:2148-2155 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2697}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcbc82624404043d4f26a274bf448c4dabebbbf0facdd207e99c16936db9a7cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/compiler/lib/src/source_file_provider.dart:186-190 | pkg/compiler/lib/src/util/memory_source_file_helper.dart:67-71 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/source_file_provider.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"4516cd026d3145198679b92457ae2544742bc59a2fcdc64617d26e464f53634f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/compiler/lib/src/ssa/codegen_helpers.dart:568-576 | pkg/compiler/lib/src/ssa/codegen_helpers.dart:600-608 | pkg/compiler/lib/src/ssa/codegen_helpers.dart:1606-1614 | pkg/compiler/lib/src/ssa/late_field_optimizer.dart:48-56 \u2014 there are 4 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 4 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3710d3bbc427463a23f910448537e89aed9bd837da5819b0080f96e6dc1c5d5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dap_adapters/lib/src/adapters/dart_cli_adapter.dart:325-330 | pkg/dap_adapters/lib/src/adapters/dart_test_adapter.dart:206-211 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart_cli_adapter.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"0084173c5fe5b5d892c42f10f9e4022967f77f3a25156c0a2a7b744c42d1b79e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dart_runtime_service/lib/src/devtools/client.dart:218-223 | pkg/dds/lib/src/devtools/client.dart:254-259 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devtools/client.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"2440285888d9c6618340b4ef5ce3aa0764feeae1ff04be0d788b7616ce28f33f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart:18-23 | pkg/dds/lib/src/devtools/memory_profile.dart:16-24 \u2014 before extracting anything, compare \u0060pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart\u0060 and \u0060pkg/dds/lib/src/devtools/memory_profile.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 78 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devtools/memory_profile.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"f20512c11edb4ec762b6fa1e2807bb1463f14e03caa10205ab75c00460589f3e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dart_runtime_service_dds/lib/src/logging_repository.dart:35-43 | pkg/dds/lib/src/logging_repository.dart:32-40 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/src/logging_repository.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ebd58b184608dae780ff1e56f437681cf87bc289004c5214f3dab272e0ef03f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dart_runtime_service_vm/lib/src/native_bindings.dart:182-186 | sdk/lib/vmservice/message.dart:150-154 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_vm/lib/src/native_bindings.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"62695eaa131593041187acf4f2dfa73062ff0146a2a3162a8293811e726cc820"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): pkg/dart_runtime_service_vm/lib/src/native_bindings.dart:224-241 | sdk/lib/vmservice/message.dart:203-220 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_vm/lib/src/native_bindings.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be5989d14da0553ba4d3a35f6e0b6658f30a37e5c66dac6d4ce34adf6167299"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dds/lib/src/rpc_error_codes.dart:8-14 | pkg/dtd/lib/src/rpc_error_codes.dart:9-15 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/rpc_error_codes.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"305c76bbad145051434b71d754f95bef21492dc8252a6fac99001e27d62ac2c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:243-251 | pkg/js_ast/lib/src/builder.dart:229-237 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"f846e9571880245b019390683d4502eadd53a701eb30c59ca4667f3c4402aa8d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:253-261 | pkg/js_ast/lib/src/builder.dart:239-247 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f087bddf97eb90cc85f48434a71fc0f818f8065338ef437218506cbfd54792f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:1504-1509 | pkg/js_ast/lib/src/builder.dart:1311-1316 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"843aaee36a14fff77dc6a2cdeabcb856b30b9d91cb454ddd4c96f018d78be6c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:1511-1516 | pkg/js_ast/lib/src/builder.dart:1318-1323 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1511}}}],"partialFingerprints":{"codehealthFindingId/v1":"48accd5a4b84b07743aabfd3e8798caa0334e9516c9a0bb469517601b2f843b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/builder.dart:1518-1523 | pkg/js_ast/lib/src/builder.dart:1325-1330 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/builder.dart\u0060 and \u0060pkg/js_ast/lib/src/builder.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 189 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1518}}}],"partialFingerprints":{"codehealthFindingId/v1":"5846a8d87c029a83f0b19b81c00161f18f1f25138eded4c146e102d4db6717dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:113-119 | pkg/js_ast/lib/src/printer.dart:161-167 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"1418b3231070b7ead71fdc08912b5ee7626d947f0f0474476ce14421ce598508"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:660-668 | pkg/js_ast/lib/src/printer.dart:718-726 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddd99ea3d953496acbf9701c55934273915c29bebdb5f2ae7809cd8ce21dcd8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:1786-1790 | pkg/js_ast/lib/src/printer.dart:1962-1966 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1786}}}],"partialFingerprints":{"codehealthFindingId/v1":"502e1627e2b92024e3937049c9bc51d62ce0cd147625f10fae49b9dea483ca89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:1810-1817 | pkg/js_ast/lib/src/printer.dart:1984-1991 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1810}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc81722152a5edec38e39e79ed15b9597da36d425a9586b35e7a4241bf7837e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:1873-1878 | pkg/js_ast/lib/src/printer.dart:2054-2059 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1873}}}],"partialFingerprints":{"codehealthFindingId/v1":"84f7d6b3997c3eec031ad8210c8272b447e4ddb2a4457d7aa175692fc0a97af3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/printer.dart:1896-1900 | pkg/js_ast/lib/src/printer.dart:2076-2080 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/printer.dart\u0060 and \u0060pkg/js_ast/lib/src/printer.dart\u0060 as WHOLE FILES: this scan already matched 13 separate duplicated blocks between them, totalling at least 157 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1896}}}],"partialFingerprints":{"codehealthFindingId/v1":"1174c8bcf1865c810ed4b12a0aaeca3b0e357fd15f3dd16b26bcf2de95d440f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/template.dart:19-28 | pkg/js_ast/lib/src/template.dart:17-26 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/template.dart\u0060 and \u0060pkg/js_ast/lib/src/template.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa6776b0150bedca73f36a58c24f20c4618e1748630ba9f5f65951cd4ede042"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/template.dart:34-43 | pkg/js_ast/lib/src/template.dart:32-41 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/template.dart\u0060 and \u0060pkg/js_ast/lib/src/template.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea24b1394a15ad7fd1237fb801f9e6a090fba5476c8607f6d78c3489753b90c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/template.dart:99-109 | pkg/js_ast/lib/src/template.dart:97-107 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/template.dart\u0060 and \u0060pkg/js_ast/lib/src/template.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a641e597eda4c0becae6cffdb3785f46ffb523028896d19970b13c2f1a7edfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/template.dart:111-121 | pkg/js_ast/lib/src/template.dart:109-119 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/template.dart\u0060 and \u0060pkg/js_ast/lib/src/template.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"a66caae74b42e797079206e088d6e920d986672761c0c8da24bbbb3bf78f05c1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/js_ast/template.dart:963-968 | pkg/js_ast/lib/src/template.dart:919-924 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/js_ast/template.dart\u0060 and \u0060pkg/js_ast/lib/src/template.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":963}}}],"partialFingerprints":{"codehealthFindingId/v1":"070f07a5413b6421cb32f3e8a213958d4f8bad25f2b9a41264892d4a35d1b143"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:1164-1168 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:1457-1461 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1164}}}],"partialFingerprints":{"codehealthFindingId/v1":"04cd4e90d486e4db44c46f654ae1e43d965a2f543150447cd767dc9ac41ef862"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:1743-1750 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2060-2067 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1743}}}],"partialFingerprints":{"codehealthFindingId/v1":"83925ed62f6f7d871e6b1718a939694fcdc7f696aeb410adc79348f341569162"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:1752-1758 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2069-2075 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1752}}}],"partialFingerprints":{"codehealthFindingId/v1":"657d222cbb66d9f2de7fd4c4eefab003ec12f92a5506bbe7727ec684230846a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2120-2125 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2420-2425 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2120}}}],"partialFingerprints":{"codehealthFindingId/v1":"13391bc6a9e897c5c0a760138eb67ce5b62d98bc28ec49f45a725c489abe30af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2269-2275 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2569-2575 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2269}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f550b144eb34fceedca8f12d20a252b78d4cdef16395ea7b66f025a02aafe09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2338-2349 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2638-2649 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2338}}}],"partialFingerprints":{"codehealthFindingId/v1":"9093ff88e2f3d7bcb29d9e8a27dd4c02e0aa2bc0a206fa4e9c050da4283ea4db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2426-2436 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2732-2742 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2426}}}],"partialFingerprints":{"codehealthFindingId/v1":"e801c766b9b7553e78427fd2ef77a8ade4eebd471ff104628ae665879e08837f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2438-2442 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2744-2748 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2438}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f522361342c6d1906377d261f405d7c80abc1c99cbeb114d06e14b9afa0076b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:2455-2463 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:2761-2769 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2455}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe6370d0f087817c6bfefde620ad195818fbdf427e92806a35a040b2e1aa7c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3193-3232 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:3708-3747 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3193}}}],"partialFingerprints":{"codehealthFindingId/v1":"93645f5f8635215710e3733e19ee7ce16308c8b2dfc28a4848fdbabe97443d7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3502-3506 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4029-4033 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3502}}}],"partialFingerprints":{"codehealthFindingId/v1":"2131f9967a172e1d6ef1408ff1a32e75485a338c582ffa03d051ad33a2d17f22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3508-3512 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4035-4039 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3508}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e3d15c3491f5ef3d307f4da7308d7609867948d1dae938205c4a8f78979ad95"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3866-3871 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4465-4470 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3866}}}],"partialFingerprints":{"codehealthFindingId/v1":"136d31d33d32ff0070a3f8aa98cc0909d0b85fd8498122b3a57eef38cd3ade3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3894-3898 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4495-4499 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3894}}}],"partialFingerprints":{"codehealthFindingId/v1":"de3a189c70867d8ced34fe077c8931aee7f1683946355dc33a9515641b51d927"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:3931-3936 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4528-4533 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3931}}}],"partialFingerprints":{"codehealthFindingId/v1":"44fda29679b0a1d3df8c6ab659b8b4148e9b1a87c392b391f3c40b1117e70649"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4243-4253 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4839-4849 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4243}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ffe93523bef587ab1472ef2ea677345263b5893ea309e788be90f6192a7e174"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4268-4274 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4864-4870 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4268}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d931392528ebec6b6439e15e4492d1d11a6f01a19afd9e50eb9e1428dea6a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4390-4397 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:4986-4993 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4390}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cde1572676da90d5300835209b6594edaab28b35f14f2fd8a5737f5ac6086b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4404-4410 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5000-5006 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4404}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea541f9a9b1eb5962473208574636f2013b6b34b3acc680a450dc009c12035cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4536-4543 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5138-5145 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4536}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e97624f86e73702a6667b65bbcfc21245576ac905fbbf6f06335c4ca3a82416"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4631-4645 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5241-5255 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4631}}}],"partialFingerprints":{"codehealthFindingId/v1":"009a1e6740aae7ce46c1668e60e4f03c24ddb415077435996a28c9ba71cf8bc0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4660-4666 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5270-5276 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4660}}}],"partialFingerprints":{"codehealthFindingId/v1":"e93236a6e0ca3bb06047b9a139fb1eefa253c20129d21b69b6b350c603d8673f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4815-4826 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5425-5436 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4815}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09ba4da44044e90bcca9cf56162c92360fe73abcf1efdb88f6d88ee2b95f65f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4850-4857 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5460-5467 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4850}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2c526a982ccbf19e23bcb91675a6391a68c6a09b86e597f0fda60fd889113e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4859-4866 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5469-5476 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4859}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd81d202031707a26e128fe4687c8b0c96aecd3c60bc0a3cafc56423fc509cbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (40 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:4901-4940 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5511-5550 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4901}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc5bdce78be4b518bcd9138c78524b8eb2d1198c836a5967b48b1fcba7a24e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5291-5296 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5901-5906 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5291}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac1c38ff3fb197062024257258dd7f9e618d3236304f85915ddfd029f074d209"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5298-5305 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:5908-5915 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5298}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a15c583f185543c2a9c3b7b39fe0a7812c3812ee95e08d2088b1bd4a2c83cc5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5410-5416 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6020-6026 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5410}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1eb9970d30c0a63ba95d0239b0a787b5bdeb080620fca858f790f951c4da190"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5418-5427 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6028-6037 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5418}}}],"partialFingerprints":{"codehealthFindingId/v1":"544652eeb7e41575a7efc1a830eb1eb9f4e4a4e5a3c8fb4844c9e83c18cba442"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5542-5551 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6152-6161 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5542}}}],"partialFingerprints":{"codehealthFindingId/v1":"12fe212e0324d51616202aad375fde33f916bdb81b7c8ba5a3df45ae23df4210"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5872-5878 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6525-6531 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5872}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f2fe6d387c0e9bf2e33f7797387022777c3e9b0c466b33928192d9c042e2cca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:5880-5887 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6533-6540 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5880}}}],"partialFingerprints":{"codehealthFindingId/v1":"8386a4eedb2be77f2cf64edbc733039384666c7131a8772c5eeaa2bec2f4add8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6074-6082 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6763-6771 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6074}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ef84ae3af8a512bdfd4b295b0ae240912b75eb4b0c1a506b3210a953bb2cf1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6084-6092 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6773-6781 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6084}}}],"partialFingerprints":{"codehealthFindingId/v1":"f338d6986712e0fe668277e18cf1a1ffbc777c065998ed6e2288cf368c512275"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6094-6100 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6783-6789 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6094}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa812a5fcd2e78140c4ccd929b22003212ef334d4bb39da495a6ff7640b4f15"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6234-6243 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6923-6932 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6234}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fcabfe32ea767c08bfabe18db6502e5bf71211b229873456af7628f8cee551e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6257-6262 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:6946-6951 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6257}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a3c350462640e5a358b1272c71b2554efacdcf702ccbc184ccc86ab0a181415"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:6569-6577 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7258-7266 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6569}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd528c1ee927ca424ab87df1d5e083a78cf36fdcadb6cd80d83d4847cd1c0790"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7043-7048 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7910-7915 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7043}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc3b740c347489e4ebb916a35563ed1df27ac7b073db33eebf050f6eb951ea41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7050-7056 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:7917-7923 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7050}}}],"partialFingerprints":{"codehealthFindingId/v1":"abbcda378ff6541cccf09d283efa459c8fdaa77784144dc352cd40be35c2afdc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7337-7341 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8204-8208 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7337}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b8ca2c110166f4b3598d9c7450fdfca2e34ecfa35d456696ac07a2be98ab47f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7351-7359 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8218-8226 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7351}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91da4a0f22836f20363ccc9686df916d49de0d3b559a79dc1a418e04e67fa91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7365-7374 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8232-8241 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7365}}}],"partialFingerprints":{"codehealthFindingId/v1":"35b90c389c813cab9f487b383216e4c87f6cd515ea490edb2f301dd07df08bd4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7385-7391 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8252-8258 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7385}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cfb0803267e0c02d2156a9082819ccfe825a87f4d862ebf645527bcce2fdc11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7393-7399 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8260-8266 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7393}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd3ddd90a2a4dbc1f296b1c2feb918574edba10f4b3a12c3e2f16279a76bb9e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7635-7641 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8502-8508 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7635}}}],"partialFingerprints":{"codehealthFindingId/v1":"5164271185838957762c920c4dfb11f3a8b4a73f811ba34be5d935f1919e37cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7857-7870 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8725-8738 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7857}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bc5b67a35bbe17ef17b80523eaf7fce1ae9db82dd11c3c4b2b5d13255eef5e5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7884-7889 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8752-8757 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7884}}}],"partialFingerprints":{"codehealthFindingId/v1":"83307367d7b02cebb11e167562c2f9e0d31fc701e597d5883c41ca539e5d8a4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7949-7954 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8815-8820 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7949}}}],"partialFingerprints":{"codehealthFindingId/v1":"0957415e51013ec90cd1a2922c47d806ed78967c1d919c8f497b441c1a2f070f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:7979-7989 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:8845-8855 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7979}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1940adcd6331949483f31ad7e28530d3845ceac2247c956fa8f8611311153eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8164-8170 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9033-9039 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8164}}}],"partialFingerprints":{"codehealthFindingId/v1":"e149a011aa9f2fb0ce3f57b2ec0bdf449348bd791369aa7beca9ccf462183d5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8186-8191 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9055-9060 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8186}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cf2fa05a8f094b4cf8ad1575cca3159243e1e6a933e3082944a591ce1d6b73e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8218-8225 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9087-9094 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8218}}}],"partialFingerprints":{"codehealthFindingId/v1":"995f2d9d50f4a845aeb51b4f08d722b84cf2f3b7fc7410ae802a7a954c8be8f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8355-8364 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9224-9233 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8355}}}],"partialFingerprints":{"codehealthFindingId/v1":"6de53cb3e2da01514162f53adf1a5f1f0e325cc8e32d7d6a31ce495bacfcbe26"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8366-8370 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9235-9239 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8366}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c6d0c866fb441b01da9bd478e77aff99aaaaf5b4ed5ebfd2595093cf541780"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8372-8376 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9241-9245 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8372}}}],"partialFingerprints":{"codehealthFindingId/v1":"5056ab06568f7415ce0e66f3990ea1ee7be15eafe09ea8c6fa33d9e089f1e972"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8480-8487 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9431-9438 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8480}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd85fc3d62f13891ca2f469d9bd79c49e34b4aa12b39b2799bc194c472cad507"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/compiler.dart:8571-8575 | pkg/dev_compiler/lib/src/kernel/compiler_new.dart:9486-9490 \u2014 before extracting anything, compare \u0060pkg/dev_compiler/lib/src/kernel/compiler.dart\u0060 and \u0060pkg/dev_compiler/lib/src/kernel/compiler_new.dart\u0060 as WHOLE FILES: this scan already matched 155 separate duplicated blocks between them, totalling at least 3469 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8571}}}],"partialFingerprints":{"codehealthFindingId/v1":"b600dc1f5d3557b808377a0e644450fc64a7b53f55e60c20b3a68b3d3f598505"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart:529-533 | pkg/js_ast/lib/src/printer.dart:1943-1951 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eb20047622ea77f0131e5b2e58f80325eb20e54d68f151747ca8264b1bdf4f7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/lib/src/base/scope.dart:298-306 | pkg/front_end/lib/src/fragment/constructor/declaration.dart:1625-1633 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/scope.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"92157a1440f13dfa0f87ac67138ee92e0d309456f0fbd9788a7b2d658079c159"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/builder/builtin_type_declaration_builder.dart:29-41 | pkg/front_end/lib/src/builder/never_type_declaration_builder.dart:22-34 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/builtin_type_declaration_builder.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"c54c948cf7588fa6d871a4911f92fc8ba15f15d70856e108c71d0b00321f4ead"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/builder/builtin_type_declaration_builder.dart:43-55 | pkg/front_end/lib/src/builder/never_type_declaration_builder.dart:36-48 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/builtin_type_declaration_builder.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"3217974182b6af7908efa9842aae966f2ff82001941a970d3a8998d2104af947"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): pkg/front_end/lib/src/builder/dynamic_type_declaration_builder.dart:15-22 | pkg/front_end/lib/src/builder/invalid_builder.dart:92-101 | pkg/front_end/lib/src/builder/null_type_declaration_builder.dart:47-55 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/dynamic_type_declaration_builder.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"f07db0a97107e5abcaa816ff31a4b626015d30e5096f909931a25e3a82b60753"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/front_end/lib/src/builder/fixed_type_builder.dart:127-136 | pkg/front_end/lib/src/builder/invalid_type_builder.dart:101-109 | pkg/front_end/lib/src/builder/omitted_type_builder.dart:84-92 | pkg/front_end/lib/src/builder/void_type_builder.dart:118-126 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/fixed_type_builder.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"154b7cab8735531240cff6cabc9af6c6bded8a15d8d6d9e07ad9e839321487f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/builder/function_type_builder.dart:156-163 | pkg/front_end/lib/src/builder/record_type_builder.dart:150-157 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/builder/function_type_builder.dart\u0060 and \u0060pkg/front_end/lib/src/builder/record_type_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 42 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":"pkg/front_end/lib/src/builder/function_type_builder.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd3557a8502da676495e90e465e7a46eb4940d6fc8b3ecfd412cfee69ba9bfc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/front_end/lib/src/builder/function_type_builder.dart:232-236 | pkg/front_end/lib/src/builder/record_type_builder.dart:333-338 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/builder/function_type_builder.dart\u0060 and \u0060pkg/front_end/lib/src/builder/record_type_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 42 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":"pkg/front_end/lib/src/builder/function_type_builder.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"e89be79e9174bcabdb0ef2fe407d08877a5552b3f4f1da755ab6962375de9e12"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): pkg/front_end/lib/src/builder/function_type_builder.dart:523-530 | pkg/front_end/lib/src/builder/named_type_builder.dart:1358-1365 | pkg/front_end/lib/src/builder/record_type_builder.dart:563-570 | pkg/front_end/lib/src/builder/synthesized_type_builder.dart:88-95 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/builder/function_type_builder.dart\u0060 and \u0060pkg/front_end/lib/src/builder/record_type_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 42 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":"pkg/front_end/lib/src/builder/function_type_builder.dart"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb854ec835a772e9ecf000f10f754defc2d4144dafa245300548f97fb0b539c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/lib/src/builder/member_builder.dart:176-182 | pkg/front_end/lib/src/fragment/field/class_member.dart:285-291 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/member_builder.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"792d529aee214ecc794e8ff3f1eb82da7ac0bf3d1a37fbc6a14634f346171cf3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): pkg/front_end/lib/src/dill/dill_class_builder.dart:275-281 | pkg/front_end/lib/src/dill/dill_extension_builder.dart:228-235 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:401-407 | pkg/front_end/lib/src/source/source_class_builder.dart:179-185 | pkg/front_end/lib/src/source/source_extension_builder.dart:109-115 | pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart:128-134 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/dill/dill_class_builder.dart\u0060 and \u0060pkg/front_end/lib/src/dill/dill_extension_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 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. 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":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b705e20bcd42d9b880c43608b15b3c0acdebbb1f7a634c3d322dceb28193bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): pkg/front_end/lib/src/dill/dill_class_builder.dart:288-294 | pkg/front_end/lib/src/dill/dill_extension_builder.dart:242-249 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:414-420 | pkg/front_end/lib/src/source/source_class_builder.dart:191-197 | pkg/front_end/lib/src/source/source_extension_builder.dart:121-127 | pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart:140-146 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/dill/dill_class_builder.dart\u0060 and \u0060pkg/front_end/lib/src/dill/dill_extension_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 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. 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":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d59d7b81c6a2a88e170d63b0e8746c6d3d6106f9d49ee5041ef2774b17bee43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_extension_member_builder.dart:237-243 | pkg/front_end/lib/src/dill/dill_extension_type_member_builder.dart:235-240 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_extension_member_builder.dart"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"740bcee0895b8da86fc87d69dcfab08042d4d1ab0325c67c73da9e731e072f4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_library_builder.dart:50-57 | pkg/front_end/lib/src/source/source_compilation_unit.dart:392-399 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_library_builder.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"8efe04609545d82b7a377baef86ea396c9e3c03538592b7adc3e5ed07b5d4fcb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/front_end/lib/src/fragment/enum_element.dart:168-176 | pkg/front_end/lib/src/fragment/field/declaration.dart:689-697 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:171-179 | pkg/front_end/lib/src/source/source_enum_builder.dart:828-836 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/enum_element.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 47 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"f534931e8acebb1ab331954d9d5280b276266d895088ebf7083e75994f9617c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): pkg/front_end/lib/src/fragment/enum_element.dart:178-185 | pkg/front_end/lib/src/fragment/field/declaration.dart:699-706 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:181-188 | pkg/front_end/lib/src/source/source_enum_builder.dart:838-845 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/enum_element.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 47 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"032aa9d3b94b5e8bdeef3284630658ca313cf34db575e83869881bade98b05f2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/fragment/enum_element.dart:197-204 | pkg/front_end/lib/src/source/source_enum_builder.dart:668-675 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/enum_element.dart\u0060 and \u0060pkg/front_end/lib/src/source/source_enum_builder.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"63008fb0f6e3e57fe4e59233331a305f0299457875c5bd510f84df4ed1e9028d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): pkg/front_end/lib/src/fragment/enum_element.dart:274-281 | pkg/front_end/lib/src/fragment/field/declaration.dart:780-786 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:379-385 | pkg/front_end/lib/src/source/source_enum_builder.dart:875-882 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/enum_element.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 47 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbaa70253aa9a4d4992e1b709c45875faab9cd9455a4803f92f126abf2fa5f37"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/lib/src/fragment/enum_element.dart:283-291 | pkg/front_end/lib/src/source/source_enum_builder.dart:752-760 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/enum_element.dart\u0060 and \u0060pkg/front_end/lib/src/source/source_enum_builder.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b56d3fa8017896652f641ded1fa26985f55c8ff829b283a064d5c48f1fbef5f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/front_end/lib/src/fragment/enum_element.dart:644-653 | pkg/front_end/lib/src/fragment/field/class_member.dart:46-54 | pkg/front_end/lib/src/source/source_enum_builder.dart:936-945 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/enum_element.dart\u0060 and \u0060pkg/front_end/lib/src/source/source_enum_builder.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"35455fd3ea68c203f2d67f9b6e927a9acf16519d8f4e5e10e6c0b7f10467bc7e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/lib/src/fragment/enum_element.dart:665-674 | pkg/front_end/lib/src/source/source_enum_builder.dart:957-966 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/enum_element.dart\u0060 and \u0060pkg/front_end/lib/src/source/source_enum_builder.dart\u0060 as WHOLE FILES: this scan already matched 7 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":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1f2f12e8125f887e54ce73e8c42a4e038e87a005f0fb0f8e79ed012c695da11"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/fragment/factory/body_builder_context.dart:76-89 | pkg/front_end/lib/src/fragment/getter/body_builder_context.dart:63-76 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/body_builder_context.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"f61a0d4815e07af75889068a2aa07f0a007ad3a7668eca1ee0cb6c55b920baf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/front_end/lib/src/fragment/factory/declaration.dart:372-385 | pkg/front_end/lib/src/fragment/method/declaration.dart:278-291 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/declaration.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"07987262f03822e6d125aebb1b70b3153ed801ec21c66b1bf3e38d8c766bcc8f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/declaration.dart:326-337 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:201-212 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/primary_constructor_field.dart\u0060 as WHOLE FILES: this scan already matched 10 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":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d4e3c51d8c47071b3c4b684aa05c72206aabe16e84489e4e6ddbb21509046b3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/declaration.dart:498-505 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:296-303 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/primary_constructor_field.dart\u0060 as WHOLE FILES: this scan already matched 10 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":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"9577a40f4cd4742d87128e56324aec923dc38d43170d23963edda5cb6645b99b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/declaration.dart:708-716 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:214-222 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/primary_constructor_field.dart\u0060 as WHOLE FILES: this scan already matched 10 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":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"5588ffb16f0ecf4ee83ba6b05cdcff6fae01d0a0f8157fc9175e784297e81d22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/declaration.dart:718-726 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:224-232 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/primary_constructor_field.dart\u0060 as WHOLE FILES: this scan already matched 10 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":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":718}}}],"partialFingerprints":{"codehealthFindingId/v1":"45885e001cb73d595aa15dea6e050710e2883d07d08bf2e62728a49176964a6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/lib/src/fragment/field/declaration.dart:788-794 | pkg/front_end/lib/src/fragment/primary_constructor_field.dart:387-393 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/fragment/field/declaration.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/primary_constructor_field.dart\u0060 as WHOLE FILES: this scan already matched 10 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":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef041954bd0a737b32fc6551cf245dce3a913e486345c912acc42b1d41238e99"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): pkg/front_end/lib/src/fragment/getter.dart:145-150 | pkg/front_end/lib/src/fragment/method.dart:143-148 | pkg/front_end/lib/src/fragment/setter.dart:156-161 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"33489de30bdc2525d8a97aa0f7d44bd88673c3cd8dd2b3e6cf327f5a73b5c114"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/front_end/lib/src/fragment/getter/declaration.dart:329-337 | pkg/front_end/lib/src/fragment/setter/declaration.dart:351-360 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/declaration.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/declaration.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 39 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/declaration.dart"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cfcb26fcc1ac5c3bbfa95e38b74570be7bea69d306a364805588659da83ca17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/front_end/lib/src/fragment/getter/encoding.dart:459-467 | pkg/front_end/lib/src/fragment/method/encoding.dart:460-468 | pkg/front_end/lib/src/fragment/setter/encoding.dart:476-484 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/encoding.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/method/encoding.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 13 separate duplicated blocks between them, totalling at least 272 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba4d63d6b22d0f8aa3e743b595fc66bcd8284b746fdf88d8bb6f321dad5ca60"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:5920-5931 | pkg/front_end/lib/src/source/outline_builder.dart:2885-2896 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/body_builder.dart\u0060 and \u0060pkg/front_end/lib/src/source/outline_builder.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 99 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":5920}}}],"partialFingerprints":{"codehealthFindingId/v1":"df954c1764b476efc61390a66cafb00bb630a620b87043de0db0cc409ddc016d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:6448-6452 | pkg/front_end/lib/src/source/outline_builder.dart:4970-4974 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/body_builder.dart\u0060 and \u0060pkg/front_end/lib/src/source/outline_builder.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 99 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":6448}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0c971f793d1e4a7734e3ef75bef60e5cdf92756d00ca511b583018eebcacb83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:6636-6643 | pkg/front_end/lib/src/source/outline_builder.dart:4743-4749 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/body_builder.dart\u0060 and \u0060pkg/front_end/lib/src/source/outline_builder.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 99 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":6636}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff73940e09005c967e6b8f124a18ec72d81ad7a4c2a7b7075288147bc31d494"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/front_end/lib/src/kernel/body_builder.dart:9965-9977 | pkg/front_end/lib/src/source/diet_listener.dart:90-102 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9965}}}],"partialFingerprints":{"codehealthFindingId/v1":"e64f008642461127c3cac2f3e719f60801ae722d5ffe736e757e2edae7048c13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/lib/src/kernel/inferred_collections.dart:300-306 | pkg/kernel/lib/src/ast/expressions.dart:4787-4792 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/inferred_collections.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5913aaf6910984be3bbac678ad3a11bba474fcbda4f3847825f6dd81b78396a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): pkg/front_end/lib/src/kernel/internal_ast.dart:6816-6822 | pkg/front_end/lib/src/kernel/internal_ast.dart:6846-6852 | pkg/kernel/lib/src/ast/patterns.dart:156-161 | pkg/kernel/lib/src/ast/patterns.dart:213-218 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 and \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 80 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":6816}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eb0988afbb589f0c104d9f61a5896e5d3e43f42248fb56c4474a18ecbef62f3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:6927-6933 | pkg/kernel/lib/src/ast/patterns.dart:266-271 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 and \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 80 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":6927}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4532594fce6bed9cf74963fd948fe453bb94e5ce5f091da914fe0af9795e973"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:7062-7068 | pkg/kernel/lib/src/ast/patterns.dart:1623-1628 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 and \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 80 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7062}}}],"partialFingerprints":{"codehealthFindingId/v1":"ead0c77a6c2cca7d369c38ef1a970f95e0122a6f0c11c35c932ac87f954666f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:7112-7118 | pkg/kernel/lib/src/ast/patterns.dart:1299-1304 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 and \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 80 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7112}}}],"partialFingerprints":{"codehealthFindingId/v1":"325fdf014a8735c58211515578c38b87a9cbdc9b3ea60967831355d56c10fed6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:7334-7341 | pkg/kernel/lib/src/ast/patterns.dart:1500-1506 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 and \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 80 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7334}}}],"partialFingerprints":{"codehealthFindingId/v1":"28e51df184bb3e8fa3faf5843494616ec8d9dc71a0d78c708b44c57427e487de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:7394-7402 | pkg/kernel/lib/src/ast/patterns.dart:905-912 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 and \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 80 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7394}}}],"partialFingerprints":{"codehealthFindingId/v1":"476b850826ec5c450013989583586b7e51530ef25af8dc22d7df433c668c8fc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): pkg/front_end/lib/src/kernel/internal_ast.dart:8163-8169 | pkg/front_end/lib/src/kernel/internal_ast.dart:8638-8644 | pkg/kernel/lib/src/ast/initializers.dart:97-102 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":8163}}}],"partialFingerprints":{"codehealthFindingId/v1":"54bf34af4ad4950873c24b9394afce51b53b2576ff1e6f52ad877b91887bc1ca"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): pkg/front_end/lib/src/kernel/internal_ast.dart:9007-9013 | pkg/kernel/lib/src/ast/constants.dart:247-252 | pkg/kernel/lib/src/ast/expressions.dart:4163-4168 \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":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":9007}}}],"partialFingerprints":{"codehealthFindingId/v1":"8be0f62e138932d41c3e7f51fa9919c8c08c23ebb52362e44b810c6ac415fd83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/front_end/lib/src/source/diet_listener.dart:1426-1430 | pkg/front_end/lib/src/source/outline_builder.dart:4994-4998 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":1426}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4d5df26db5101fa9b62de12d622632c3cb2ea361a74a14c027bcbe21ed985b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/lib/src/source/directive_listener.dart:104-109 | pkg/front_end/lib/src/util/textual_outline.dart:1103-1108 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/directive_listener.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb4a9b9203fa7d9b9cb6abcc53fa0ddfde53eae06bd3f4543d5dedfdd205bbdb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/source/source_class_builder.dart:1143-1150 | pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart:880-887 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/source/source_class_builder.dart\u0060 and \u0060pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 45 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":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1143}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dd316bbe537fbc5eadf4c6a556685c6856f0ba3a4ae58808aa8063b99650ed9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/lib/src/source/source_constructor_builder.dart:207-212 | pkg/front_end/lib/src/source/source_factory_builder.dart:243-248 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_constructor_builder.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"781768132cd6925100cb28abf7b516aafcccdc6f03029565c1b5701c8b35a6e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:626-633 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1201-1208 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/type_inference/collection_encoding.dart\u0060 and \u0060pkg/front_end/lib/src/type_inference/inference_visitor.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 34 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":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"e93be3f9f0b23d6c136307c4d1fa2ed2f92ab50ecca126f161f856995439c723"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:635-645 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:4465-4475 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/type_inference/collection_encoding.dart\u0060 and \u0060pkg/front_end/lib/src/type_inference/inference_visitor.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 34 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":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfe540ba9850fd4e82c5f68bc5299dc6981afd9e1fc9f4c6bad9d024df2dd9f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:660-664 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:1210-1214 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/type_inference/collection_encoding.dart\u0060 and \u0060pkg/front_end/lib/src/type_inference/inference_visitor.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 34 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":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"e895507d80ce06202f85462851ed46bdfaedd14a3d390cc4b39c1462eaf71059"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/front_end/lib/src/type_inference/collection_encoding.dart:710-719 | pkg/front_end/lib/src/type_inference/inference_visitor.dart:4454-4463 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/type_inference/collection_encoding.dart\u0060 and \u0060pkg/front_end/lib/src/type_inference/inference_visitor.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 34 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":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9990988af77045f8eb2911a6cd8b8314569a062b948ed4124d95d320a3257c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/front_end/lib/src/type_inference/type_demotion.dart:50-54 | pkg/kernel/lib/src/replacement_visitor.dart:288-292 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_demotion.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"f10842b5baebb8900666f3e100f74bb3eb5c2b42c6f5e03cbea1f830286944d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): pkg/kernel/lib/src/ast/declarations.dart:488-495 | pkg/kernel/lib/src/ast/declarations.dart:645-652 | pkg/kernel/lib/src/ast/declarations.dart:886-893 | pkg/kernel/lib/src/ast/members.dart:152-159 | pkg/kernel/lib/src/ast/typedefs.dart:82-89 \u2014 there are 5 copies across 3 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 5 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/declarations.dart"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"0019eb7a013d9b9adf4777dafd4fc4ef56825201bb56c0d15be552c236066817"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/kernel/lib/src/ast/expressions.dart:170-176 | pkg/kernel/lib/src/ast/statements.dart:1131-1137 \u2014 before extracting anything, compare \u0060pkg/kernel/lib/src/ast/expressions.dart\u0060 and \u0060pkg/kernel/lib/src/ast/statements.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 33 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3e8d8b13731f2e9a2780118d4c368b12c1ae44dae600d3860dac6691db95859"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/kernel/lib/src/ast/expressions.dart:178-184 | pkg/kernel/lib/src/ast/statements.dart:1139-1145 \u2014 before extracting anything, compare \u0060pkg/kernel/lib/src/ast/expressions.dart\u0060 and \u0060pkg/kernel/lib/src/ast/statements.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 33 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff499d92be57fc990364fa30218d68dbbe2424488ca54e22d1e0ba255027995e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): pkg/kernel/lib/src/ast/expressions.dart:1668-1673 | pkg/kernel/lib/src/ast/expressions.dart:4780-4785 | pkg/kernel/lib/src/ast/statements.dart:972-977 | pkg/kernel/lib/src/ast/statements.dart:1285-1290 \u2014 before extracting anything, compare \u0060pkg/kernel/lib/src/ast/expressions.dart\u0060 and \u0060pkg/kernel/lib/src/ast/statements.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 33 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1668}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdd183cbc0b579b555396d94eaf6a83bb4bc5cc34d34ea568854780d6ce34d70"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 11): pkg/kernel/lib/src/ast/types.dart:481-487 | pkg/kernel/lib/src/ast/types.dart:2703-2709 | pkg/kernel/lib/src/ast/variables.dart:218-224 | pkg/kernel/lib/src/ast/variables.dart:478-484 | pkg/kernel/lib/src/ast/variables.dart:745-751 | pkg/kernel/lib/src/ast/variables.dart:1010-1016 | pkg/kernel/lib/src/ast/variables.dart:1277-1283 | pkg/kernel/lib/src/ast/variables.dart:1734-1740 | pkg/kernel/lib/src/ast/variables.dart:1844-1850 | pkg/kernel/lib/src/ast/variables.dart:1927-1933 | pkg/kernel/lib/src/ast/variables.dart:2155-2161 \u2014 there are 11 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 11 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"0575f22c3a83f41647df37657a3fec48693fa6630ce2d3f10937109a504dcad1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/linter/lib/src/rules/always_put_control_body_on_new_line.dart:27-37 | pkg/linter/lib/src/rules/curly_braces_in_flow_control_structures.dart:30-40 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/always_put_control_body_on_new_line.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cd4d323c93faba29530817c4ae2238ccabb890b8904b03e6c11e459555ee74d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): pkg/linter/lib/src/rules/analyzer_element_model_tracking.dart:36-43 | pkg/linter/lib/src/rules/avoid_implementing_value_types.dart:26-33 | pkg/linter/lib/src/rules/diagnostic_describe_all_properties.dart:32-39 | pkg/linter/lib/src/rules/hash_and_equals.dart:26-33 | pkg/linter/lib/src/rules/one_member_abstracts.dart:30-37 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 5 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_element_model_tracking.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"9927c05af6597c2e44d198f3bf28f5128c766d67e9b5e3091204c6f25669e28a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/linter/lib/src/rules/avoid_annotating_with_dynamic.dart:26-35 | pkg/linter/lib/src/rules/use_function_type_syntax_for_parameters.dart:30-39 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_annotating_with_dynamic.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"21e8051d5eb15ca220d1c2473299e89b7a212de50b8242465fce01444272c75e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): pkg/linter/lib/src/rules/avoid_catches_without_on_clauses.dart:30-37 | pkg/linter/lib/src/rules/avoid_catching_errors.dart:27-34 | pkg/linter/lib/src/rules/empty_catches.dart:24-31 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_catches_without_on_clauses.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a8f383e53bcb278bf0ef2c3b07a4dba154a7378cafc55e5c9aba7e2219d0102"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/avoid_empty_else.dart:23-30 | pkg/linter/lib/src/rules/prefer_conditional_assignment.dart:58-65 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_empty_else.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0bf86d6cc34f7d4d19eae8b42ccb5bc3306b46ef509196b7646b427ad7dab81"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/linter/lib/src/rules/avoid_escaping_inner_quotes.dart:24-32 | pkg/linter/lib/src/rules/unnecessary_string_escapes.dart:27-35 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_escaping_inner_quotes.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d7a0bc1ae066a62e78f40ad388a922cec70335d3287a58e74820288a9d47fea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/avoid_final_parameters.dart:29-39 | pkg/linter/lib/src/rules/var_with_no_type_annotation.dart:30-37 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_final_parameters.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffd08dd10f300e22d0cf212a2a8e5a5094aebaa0531b90dcbe5378dfe308d215"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 7): pkg/linter/lib/src/rules/avoid_function_literals_in_foreach_calls.dart:52-59 | pkg/linter/lib/src/rules/avoid_print.dart:26-33 | pkg/linter/lib/src/rules/avoid_slow_async_io.dart:33-40 | pkg/linter/lib/src/rules/prefer_inlined_adds.dart:26-33 | pkg/linter/lib/src/rules/prefer_iterable_whereType.dart:25-32 | pkg/linter/lib/src/rules/prefer_spread_collections.dart:23-30 | pkg/linter/lib/src/rules/unnecessary_unawaited.dart:24-31 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 7 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_function_literals_in_foreach_calls.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc11670f072b2dc46d97f6d6e1a5b7d477e10c88a0a507fcbf3e19e25b6c1a2a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/avoid_multiple_declarations_per_line.dart:27-34 | pkg/linter/lib/src/rules/prefer_typing_uninitialized_variables.dart:31-38 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_multiple_declarations_per_line.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb84a03089f1329402c6f0851dd2f25b1f6d39080e80fc8f674b96917f117d8c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/avoid_relative_lib_imports.dart:23-30 | pkg/linter/lib/src/rules/migrate_design_widgets.dart:24-31 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_relative_lib_imports.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ba690e827884e9afa8a74d9613de4d6ed7e76565bccd3fc94ac4ae55321822e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/linter/lib/src/rules/avoid_return_types_on_setters.dart:27-35 | pkg/linter/lib/src/rules/avoid_void_async.dart:26-34 | pkg/linter/lib/src/rules/recursive_getters.dart:24-32 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_return_types_on_setters.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"babc080a1c8ce1dcbf8d3ebac99bd2fdb056029960d8b9dabc2baac8df52e46d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): pkg/linter/lib/src/rules/avoid_setters_without_getters.dart:25-35 | pkg/linter/lib/src/rules/sort_constructors_first.dart:23-32 | pkg/linter/lib/src/rules/sort_unnamed_constructors_first.dart:27-36 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_setters_without_getters.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"b220189ca4d1cc8974336566b9241697955d336f306a8735a7ebafa8d44932b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 9): pkg/linter/lib/src/rules/avoid_unnecessary_containers.dart:25-33 | pkg/linter/lib/src/rules/sized_box_for_whitespace.dart:24-32 | pkg/linter/lib/src/rules/sized_box_shrink_expand.dart:26-34 | pkg/linter/lib/src/rules/sort_child_properties_last.dart:24-31 | pkg/linter/lib/src/rules/unnecessary_new.dart:27-34 | pkg/linter/lib/src/rules/use_colored_box.dart:25-33 | pkg/linter/lib/src/rules/use_decorated_box.dart:24-32 | pkg/linter/lib/src/rules/use_full_hex_values_for_flutter_colors.dart:30-37 | pkg/linter/lib/src/rules/valid_regexps.dart:23-30 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 9 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_unnecessary_containers.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f17e99b123d3b20b9a03dfe57353c6645c51a25000ee6c5c0bc7b4a24a94cb0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/linter/lib/src/rules/avoid_unused_constructor_parameters.dart:32-40 | pkg/linter/lib/src/rules/matching_super_parameters.dart:24-32 | pkg/linter/lib/src/rules/prefer_const_constructors_in_immutables.dart:30-38 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_unused_constructor_parameters.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c433ca4094c0bda6ac444a6e9875dfb9772498691535e9a3f3ab214e7f5b48f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/linter/lib/src/rules/cancel_subscriptions.dart:24-33 | pkg/linter/lib/src/rules/close_sinks.dart:24-33 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/cancel_subscriptions.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0a7224df869bec630df537a6f92e885de988f16d23d5e4067056eb384e86c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): pkg/linter/lib/src/rules/dangling_library_doc_comments.dart:26-33 | pkg/linter/lib/src/rules/directives_ordering.dart:77-84 | pkg/linter/lib/src/rules/file_names.dart:24-31 | pkg/linter/lib/src/rules/flutter_style_todos.dart:32-39 | pkg/linter/lib/src/rules/library_annotations.dart:27-34 | pkg/linter/lib/src/rules/library_private_types_in_public_api.dart:30-37 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 6 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/dangling_library_doc_comments.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"00658c95ab76652c3ef4ab4b5d3a4bb7f3da36eefeca4735b9c4f7e43061bc0b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 6): pkg/linter/lib/src/rules/deprecated_member_use_from_same_package.dart:45-52 | pkg/linter/lib/src/rules/document_ignores.dart:30-37 | pkg/linter/lib/src/rules/eol_at_end_of_file.dart:26-33 | pkg/linter/lib/src/rules/lines_longer_than_80_chars.dart:40-47 | pkg/linter/lib/src/rules/prefer_final_fields.dart:26-33 | pkg/linter/lib/src/rules/unreachable_from_main.dart:37-44 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 6 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/deprecated_member_use_from_same_package.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"71aa5d880f032d7899e461763b7c66e2d3107d25592c18bde3ed66e5ad2202a3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/linter/lib/src/rules/do_not_use_environment.dart:24-32 | pkg/linter/lib/src/rules/prefer_const_constructors.dart:26-34 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/do_not_use_environment.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc705c623d440e7f9e3949823613ca1d575d7226d24f1220782af1b52fce208a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): pkg/linter/lib/src/rules/exhaustive_cases.dart:26-33 | pkg/linter/lib/src/rules/no_default_cases.dart:32-39 | pkg/linter/lib/src/rules/no_duplicate_case_values.dart:24-31 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/exhaustive_cases.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"47f3fe05d0590bfb60480793d19eceaffc79579161f2d924fc188f53154d0af2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): pkg/linter/lib/src/rules/library_names.dart:24-31 | pkg/linter/lib/src/rules/package_prefixed_library_names.dart:30-37 | pkg/linter/lib/src/rules/unnecessary_library_directive.dart:26-33 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/library_names.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f66758191ef5392f5378e858455bb6681ac486edb05a58ae4da5f824816bf8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/library_prefixes.dart:26-33 | pkg/linter/lib/src/rules/no_leading_underscores_for_library_prefixes.dart:33-40 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/library_prefixes.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6dd7b8db76f490aa40c46060b3680b409b8989884a39d7f761a363d27f0db23"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/missing_code_block_language_in_doc_comment.dart:29-36 | pkg/linter/lib/src/rules/unintended_html_in_doc_comment.dart:133-140 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/missing_code_block_language_in_doc_comment.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a3e8dffbaba66a709a6d1a0c54b34946c45e00708f3150e3cc9982eb3b6ff0e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): pkg/linter/lib/src/rules/no_literal_bool_comparisons.dart:26-33 | pkg/linter/lib/src/rules/prefer_contains.dart:33-40 | pkg/linter/lib/src/rules/prefer_is_empty.dart:35-42 | pkg/linter/lib/src/rules/use_if_null_to_convert_nulls_to_bools.dart:32-39 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/no_literal_bool_comparisons.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd036701fe893e3df78de23d68e4a022df44f8e26fc59629ca0e4b88443667e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/no_self_assignments.dart:24-31 | pkg/linter/lib/src/rules/unnecessary_null_aware_assignments.dart:30-37 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/no_self_assignments.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a4f70a0d8c465bfe1a89f048fe1d3d068cdf13b88ce16f777e170297b7165a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): pkg/linter/lib/src/rules/omit_obvious_property_types.dart:37-45 | pkg/linter/lib/src/rules/specify_nonobvious_property_types.dart:36-44 | pkg/linter/lib/src/rules/unnecessary_late.dart:23-31 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/omit_obvious_property_types.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"e063dbb5c4315510b1dc58960e859ff2e734f072d8d6ca6d9fc6bb897311c99e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): pkg/linter/lib/src/rules/only_throw_errors.dart:39-46 | pkg/linter/lib/src/rules/throw_in_finally.dart:24-31 | pkg/linter/lib/src/rules/use_rethrow_when_possible.dart:24-31 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/only_throw_errors.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"51bb67221e6d04ad7f745415a916ca68ba616c86e7b6b03aebd9a388cc7b4e88"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 5): pkg/linter/lib/src/rules/prefer_adjacent_string_concatenation.dart:27-34 | pkg/linter/lib/src/rules/prefer_interpolation_to_compose_strings.dart:29-36 | pkg/linter/lib/src/rules/unnecessary_null_in_if_null_operators.dart:29-36 | pkg/linter/lib/src/rules/use_is_even_rather_than_modulo.dart:26-33 | pkg/linter/lib/src/rules/use_truncating_division.dart:24-31 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 5 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_adjacent_string_concatenation.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"edf73fe7fc0805f6e2b059e6892739a60d2bf8a6e056756c17b219f0fce8c58a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/linter/lib/src/rules/prefer_foreach.dart:42-47 | pkg/linter/lib/src/rules/unnecessary_overrides.dart:51-56 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_foreach.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"baaf5ed28b4542c06f0c930395ce3208c53a05c58c0128f11799edfdc9a0a7e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): pkg/linter/lib/src/rules/prefer_if_elements_to_conditional_expressions.dart:28-35 | pkg/linter/lib/src/rules/prefer_if_null_operators.dart:24-31 | pkg/linter/lib/src/rules/prefer_null_aware_operators.dart:25-32 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_if_elements_to_conditional_expressions.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc033321725a0204d0387bb337c52a8b9575464d23b657d7161b9e49965dde6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/linter/lib/src/rules/prefer_initializing_formals.dart:27-35 | pkg/linter/lib/src/rules/tighten_type_of_initializing_formals.dart:29-37 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_initializing_formals.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c41d31a2e6eb3afff70f1d11e1f7cdd98702f142c1e7be2f55aabca379a51c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): pkg/linter/lib/src/rules/sized_box_for_whitespace.dart:36-43 | pkg/linter/lib/src/rules/use_colored_box.dart:37-44 | pkg/linter/lib/src/rules/use_decorated_box.dart:36-43 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/sized_box_for_whitespace.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2bc0957d2bf174f43d0751bd9c27f9dff7c7cbab23ff8648dd222c234947dd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/unnecessary_brace_in_string_interps.dart:34-41 | pkg/linter/lib/src/rules/unnecessary_string_interpolations.dart:28-35 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_brace_in_string_interps.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"2186bb6b2db20da2d79858fec2535a7fe0543d70e0583512a20c199d0f00879b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/unnecessary_raw_strings.dart:23-30 | pkg/linter/lib/src/rules/use_raw_strings.dart:23-30 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_raw_strings.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"d57831fd94e8ef719105a7a901e2a3cad2732a12d03aad4f4b087828a18d2121"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): pkg/observatory/lib/src/elements/cpu_profile.dart:178-182 | pkg/observatory/lib/src/elements/cpu_profile_table.dart:498-502 | pkg/observatory/lib/src/elements/native_memory_profiler.dart:163-167 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"d45ac58f6fe44a7bc3331a3c554fa658514b4595d4d311ccdaa534be6c85c56f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): pkg/observatory/lib/src/elements/isolate/counter_chart.dart:38-44 | pkg/observatory/lib/src/elements/isolate_reconnect.dart:67-73 | pkg/observatory/lib/src/elements/script_inset.dart:110-116 \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":"pkg/observatory/lib/src/elements/isolate/counter_chart.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"be6172c133bd44cfb34f91756593b0c74cf80160927ae74046c256870a1c0c35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate/location.dart:42-48 | pkg/observatory/lib/src/elements/isolate/run_state.dart:37-43 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate/location.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d480298eb25e6e08b30ea2ce5dbbbedb772988826293c52037dc49bdfa5a186"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate/location.dart:50-57 | pkg/observatory/lib/src/elements/isolate/run_state.dart:45-52 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate/location.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"663f8c29cf0882fe25a10ab4728af3bcfb0a9c6d106b99a4c4c97f3d74d6f89b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate/run_state.dart:79-87 | pkg/observatory/lib/src/elements/isolate/shared_summary.dart:181-189 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate/run_state.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"f65a7ab06612e4f6992533e209686a0335c27ee3d2b321426b9fa2477b9ef508"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate_ref.dart:53-59 | pkg/observatory/lib/src/elements/nav/vm_menu.dart:58-64 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate_ref.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"6124c8023c260fd844c06feba78a3be9d4129f338972a8b2f535c6e1e0da201d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate_view.dart:99-105 | pkg/observatory/lib/src/elements/logging_list.dart:60-66 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate_view.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f7ec32aacd0b956b8dc5c8d24f8b588bf10d9faed9936d34908e0d110f638af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/observatory/lib/src/elements/sentinel_value.dart:35-41 | pkg/observatory/lib/src/elements/sentinel_view.dart:59-65 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/sentinel_value.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d170172d557a3de19faab4df4c205cc4b80021733f86b2a1ac6d0c9b35800cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/vm_snapshot_analysis/lib/src/commands/compare.dart:87-100 | pkg/vm_snapshot_analysis/lib/src/commands/summary.dart:153-166 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/commands/compare.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"de615545fccee22e13285b550ec38cd0b46fb53d573672b02547e3fd5713c798"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): pkg/wasm_builder/lib/src/ir/functions.dart:23-30 | pkg/wasm_builder/lib/src/ir/globals.dart:22-29 | pkg/wasm_builder/lib/src/ir/tables.dart:22-29 | pkg/wasm_builder/lib/src/ir/tags.dart:124-131 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/functions.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"950335867b093620c7c8b3b0f2dbca67faeec307db06f564f050fbdafb0b60e9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/analysis_server/tool/code_completion/relevance_metrics.dart:689-702 | pkg/analysis_server/tool/code_completion/relevance_table_generator.dart:900-913 \u2014 before extracting anything, compare \u0060pkg/analysis_server/tool/code_completion/relevance_metrics.dart\u0060 and \u0060pkg/analysis_server/tool/code_completion/relevance_table_generator.dart\u0060 as WHOLE FILES: this scan already matched 29 separate duplicated blocks between them, totalling at least 312 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b1ea6f23997bf510a9adac700d89253db075987a746263a300e5b859b89cfb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analyzer/tool/generators/ast_generator.dart:1370-1376 | pkg/analyzer/tool/generators/string_search_util_generator.dart:136-142 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":1370}}}],"partialFingerprints":{"codehealthFindingId/v1":"edb2e186110cebacfd2243a32bc5551a2d4254463f4745133869458bacf57a79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/dart2wasm/lib/async.dart:152-160 | pkg/dart2wasm/lib/async.dart:171-179 | pkg/dart2wasm/lib/async.dart:190-198 | pkg/dart2wasm/lib/sync_star.dart:139-147 \u2014 before extracting anything, compare \u0060pkg/dart2wasm/lib/async.dart\u0060 and \u0060pkg/dart2wasm/lib/sync_star.dart\u0060 as WHOLE FILES: this scan already matched 5 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":"pkg/dart2wasm/lib/async.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"c17a16588d29fe8fa8d927edd0e0912ec20d958aa7e409d09c8f73b4114b63ad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/front_end/testcases/extension_types/field_access.dart:12-19 | pkg/front_end/testcases/extension_types/field_access_lib.dart:6-13 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/extension_types/field_access.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"0220dd82461fdc26f6ba4f157c9327e143c5c0e2ab49a78bdd7cad948c9b048b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/compiler/lib/src/kernel/dart2js_target.dart:368-373 | pkg/frontend_server/lib/compute_kernel.dart:627-632 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/dart2js_target.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a781fa658d28db062dddad34ee4bd1666411cbe95a4f25be0ef42e883ea7449"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/compiler/lib/src/kernel/dart2js_target.dart:375-380 | pkg/frontend_server/lib/compute_kernel.dart:634-639 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/dart2js_target.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a1c6f98cc5dec792c827a4ca2e60e40787a5459ec30fabe35f1fe21f47d6d9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/analyzer/lib/src/dart/element/type_algebra.dart:228-232 | pkg/kernel/lib/type_algebra.dart:872-876 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_algebra.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c4007f99fe338b932f2283507c38e74ca75f343be7e08aa5c4e9655987cb1b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 6): pkg/smith/lib/configuration.dart:808-813 | pkg/smith/lib/configuration.dart:964-969 | pkg/smith/lib/configuration.dart:1015-1020 | pkg/smith/lib/configuration.dart:1047-1052 | pkg/smith/lib/configuration.dart:1082-1087 | pkg/test_runner/lib/src/configuration.dart:596-601 \u2014 there are 6 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 6 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a02aee2407367616d6c38f6b9036a5b60cc48a08a2e63280685dc04a593545"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_http/http_impl.dart:347-352 | sdk/lib/internal/bytes_builder.dart:131-136 \u2014 before extracting anything, compare \u0060sdk/lib/_http/http_impl.dart\u0060 and \u0060sdk/lib/internal/bytes_builder.dart\u0060 as WHOLE FILES: this scan already matched 4 separate duplicated blocks between them, totalling at least 39 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c1f787ac110d254868e611107b5d686cfdc2ddbc7935dab8e0f9473459515c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart:197-205 | sdk/lib/_internal/js_runtime/lib/async_patch.dart:125-133 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/async_patch.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 164 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"e40b55edac3851b545c09482c6b9437d656dc6e28938c57907063923e91e189e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart:12-17 | sdk/lib/_internal/js_dev_runtime/private/custom_hash_set.dart:16-25 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"8259fc79a75e60b7b9557c3b03f635d1eb1b4788e5c8b939c82b75b4bbcf9611"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 10): sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:874-878 | sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart:914-918 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1053-1057 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1101-1105 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1154-1158 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1207-1211 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1260-1264 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1316-1320 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1369-1373 | sdk/lib/_internal/js_runtime/lib/native_typed_data.dart:1498-1502 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/native_typed_data.dart\u0060 as WHOLE FILES: this scan already matched 37 separate duplicated blocks between them, totalling at least 306 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":874}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cb32ebe21b576b94a094893425ec90735c46a64859277a10fc69dd48ca1edc6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart:197-202 | sdk/lib/_internal/js_runtime/lib/regexp_helper.dart:195-200 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/regexp_helper.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 34 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b892f1052f828a96e61719a2a8000cb424cf9aa9752c5c7198368c93396f9e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:108-113 | sdk/lib/_internal/js_runtime/lib/collection_patch.dart:692-697 | sdk/lib/_internal/js_runtime/lib/collection_patch.dart:1131-1136 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:67-72 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 63 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"52df1b45fdb628ccfdee51de014e6222e1023942b650a2fecfc6484b72e00dfa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/collection_patch.dart:187-195 | sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart:151-159 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/js_runtime/lib/collection_patch.dart\u0060 and \u0060sdk/lib/_internal/js_runtime/lib/linked_hash_map.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 63 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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"60a8c0ff32ed238e8425e1ff4f2baaefada053729bcc994ebef767cea76c389a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_runtime/lib/js_array.dart:792-797 | sdk/lib/_internal/js_runtime/lib/js_string.dart:454-459 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ca818b9995b62ce94873b10c6a3fe494210b1ecbfaec916f972ceb4ef8bb78e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/vm/lib/array_patch.dart:15-19 | sdk/lib/_internal/wasm/common/array_patch.dart:17-21 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/array_patch.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"a98d68e2956696127e99e5345995c77308ff43773fc742f250ebfa35de614512"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/vm/lib/array_patch.dart:41-49 | sdk/lib/_internal/wasm/common/array_patch.dart:35-43 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/array_patch.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"fabb16df06ce64bc6cb3918a241d65a3c42b5de2efb488c3f9de8c43ebaeb9f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/vm/lib/convert_patch.dart:1511-1516 | sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart:1383-1388 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/convert_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 193 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1511}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae9bba53fd4da16b6384f04514d8e18b140154b2fbba2c1de58ac70050376280"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/_internal/vm/lib/growable_array.dart:67-75 | sdk/lib/collection/list.dart:533-541 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"405f380e2a7bb4bebfcd2fbe61e362787b44bf6f6cafd09de34ab3849260709c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): sdk/lib/_internal/vm/lib/string_patch.dart:1443-1449 | sdk/lib/_internal/wasm/common/string_helper.dart:47-53 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1443}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7092bf154db5641f83634081c223962c81d353bb8fd10c9c937c39196b6358f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:325-330 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:662-667 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1053-1058 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1396-1401 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1739-1744 | sdk/lib/_internal/wasm/common/typed_data.dart:2202-2207 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"4073c863487bdf7e5f18b157b1933f570ebbc308c46bff0b326f70ffa78a2883"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:342-348 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:679-685 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1070-1076 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1413-1419 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1756-1762 | sdk/lib/_internal/wasm/common/typed_data.dart:2219-2225 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a6f3bec30afb5b4d0b408ceee356b10724770b41effe3c0c2e3ad98d2f6be22"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:355-361 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:692-698 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1084-1090 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1427-1433 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1770-1776 | sdk/lib/_internal/wasm/common/typed_data.dart:2232-2238 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4e68d9982f69f2ee539773733508b7253af72fb0f8e386b9360128ff8c83e08"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 6): sdk/lib/_internal/vm/lib/typed_data_patch.dart:363-369 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:700-706 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1092-1098 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1435-1441 | sdk/lib/_internal/vm/lib/typed_data_patch.dart:1778-1784 | sdk/lib/_internal/wasm/common/typed_data.dart:2240-2246 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm/lib/typed_data_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/typed_data.dart\u0060 as WHOLE FILES: this scan already matched 14 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"f90d551daf1202fe4ccdbc6d394cf0b759127a3481c0e34a855baac4c31fbb5d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:346-353 | sdk/lib/_internal/wasm/common/compact_hash.dart:279-286 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"c60fc93d0f525fd754299ed62dc46775a2d046778a69dab2a85707aa2867298c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/compact_hash.dart:1185-1192 | sdk/lib/_internal/wasm/common/compact_hash.dart:1085-1092 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/vm_shared/lib/compact_hash.dart\u0060 and \u0060sdk/lib/_internal/wasm/common/compact_hash.dart\u0060 as WHOLE FILES: this scan already matched 21 separate duplicated blocks between them, totalling at least 194 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1185}}}],"partialFingerprints":{"codehealthFindingId/v1":"de4f29c4c329e064f2a15300ee5b235e250d4bc083f76a8d55e32930ecc61692"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/wasm/js/boxed_int_patch.dart:14-18 | sdk/lib/_internal/wasm/standalone/boxed_int_patch.dart:13-17 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js/boxed_int_patch.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9932dd0a0de2fec37a3b6e2c34fab47f8f3a36a4e4cc41d9866131560aa884e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/wasm/js/string_patch.dart:204-209 | sdk/lib/_internal/wasm/standalone/string_patch.dart:158-163 \u2014 \u0060sdk/lib/_internal/wasm/js/string_patch.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/string_patch.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 8 separate duplicated blocks between them, totalling at least 129 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js/string_patch.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"93df644130651d56a7fe319d87fb04f499d6407ff43b5fd784dc1006e513df96"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:184-188 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:124-128 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29ba3536992bc6c9ce0a781782c8b7fbc0cac8b77e84d9f6fc02da2ba2c9feb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/wasm/js_common/js_string.dart:659-664 | sdk/lib/_internal/wasm/standalone/embedder_string.dart:493-498 \u2014 before extracting anything, compare \u0060sdk/lib/_internal/wasm/js_common/js_string.dart\u0060 and \u0060sdk/lib/_internal/wasm/standalone/embedder_string.dart\u0060 as WHOLE FILES: this scan already matched 15 separate duplicated blocks between them, totalling at least 124 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":659}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a364514469df5d1fa29a93b4478ade79b685fcc7679937b563f5c8371ad3e51"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): sdk/lib/collection/queue.dart:152-160 | sdk/lib/internal/internal.dart:1066-1074 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/queue.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b7110f71e49ff035c827d1c72aefacd6852efbb65846632f79be7ef34b10649"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 3): pkg/analyzer/lib/file_system/memory_file_system.dart:612-618 | pkg/analyzer/lib/file_system/overlay_file_system.dart:375-381 | pkg/analyzer/lib/file_system/physical_file_system.dart:408-414 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/file_system/memory_file_system.dart"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"247335769ed598ab0e7cf7b160eea2f644eb0e40017f794b362704f1000a0801"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): pkg/analyzer_plugin/lib/plugin/folding_mixin.dart:20-24 | pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart:20-24 | pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart:20-24 | pkg/analyzer_plugin/lib/plugin/outline_mixin.dart:20-24 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/plugin/folding_mixin.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc8fc437a6d77f23ef1c9689f93a4baa8b0eae76489c81e6eb8ce3bde1df2135"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): pkg/analyzer_plugin/lib/plugin/folding_mixin.dart:43-53 | pkg/analyzer_plugin/lib/plugin/highlights_mixin.dart:43-53 | pkg/analyzer_plugin/lib/plugin/occurrences_mixin.dart:43-53 | pkg/analyzer_plugin/lib/plugin/outline_mixin.dart:43-53 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/plugin/folding_mixin.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8df2e87ccac61c33ae0df875493a44623bf8aa1d80d7994a3b466995f09713d6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 9): pkg/_fe_analyzer_shared/lib/src/exhaustiveness/key.dart:27-31 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/key.dart:66-70 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/key.dart:99-103 | pkg/_fe_analyzer_shared/lib/src/exhaustiveness/key.dart:175-179 | pkg/front_end/lib/src/type_inference/matching_cache.dart:757-761 | pkg/front_end/lib/src/type_inference/matching_cache.dart:777-781 | pkg/front_end/lib/src/type_inference/matching_cache.dart:797-801 | pkg/front_end/lib/src/type_inference/matching_cache.dart:860-864 | pkg/front_end/lib/src/type_inference/matching_cache.dart:880-884 \u2014 there are 9 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 9 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/key.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"99d2b1a8050dc1d70d2a609037984b8b56629399ed87cccb2575ed0f14cc4ada"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/add_async.dart:244-252 | pkg/analysis_server/lib/src/services/correction/dart/remove_async.dart:195-203 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_async.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"10099e3e89fe86159c7433505b17bf34b17bf10078e4870971add4c917fe5d21"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/analysis_server/lib/src/services/correction/dart/add_async.dart:259-267 | pkg/analysis_server/lib/src/services/correction/dart/remove_async.dart:210-218 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_async.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"02333cd0b6717d62dd13c3743eba1b8f9c704d8683d5136685084886d8972472"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart:78-88 | pkg/analysis_server/lib/src/services/refactoring/convert_selected_formal_parameters_to_named.dart:96-105 | pkg/analysis_server/lib/src/services/refactoring/move_selected_formal_parameters_left.dart:100-109 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/refactoring/convert_selected_formal_parameters_to_named.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 48 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":"pkg/analysis_server/lib/src/services/refactoring/convert_all_formal_parameters_to_named.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dee7999ed2ddd8f0633cfd8f2fce72f2af7502b9bd925f323c18d7d2526bea8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): pkg/analysis_server/lib/src/services/refactoring/legacy/rename_import.dart:138-143 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_label.dart:51-56 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_library.dart:53-58 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_parameter.dart:132-137 | pkg/analysis_server/lib/src/services/refactoring/legacy/rename_type_parameter.dart:66-71 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 5 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_import.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"a785d1ec7f7885c227ed01c87d51ad78b8d6057ad4a36e55a0bb10180048cfd9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/dart/analysis/index.dart:1319-1330 | pkg/analyzer/lib/src/dart/analysis/search.dart:2018-2029 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":1319}}}],"partialFingerprints":{"codehealthFindingId/v1":"3295e3d7d97f27dcabcfdaf665543334a79a977637e4ecc2c8e46d300c61c279"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/analyzer/lib/src/dart/element/type_schema.dart:42-50 | pkg/analyzer/lib/src/summary2/function_type_builder.dart:60-68 | pkg/analyzer/lib/src/summary2/named_type_builder.dart:93-101 | pkg/analyzer/lib/src/summary2/record_type_builder.dart:56-64 \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":"pkg/analyzer/lib/src/dart/element/type_schema.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"4407ee38c47919af935e85ee964c6086577a64967f36c09315efa7fcda0d77b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/analyzer/lib/src/fine/library_manifest.dart:116-120 | pkg/analyzer/lib/src/fine/requirements.dart:891-895 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"01d8f838a918a2a2ee820528ef08b3bf8e5cb9a373dc3516339422691336f8d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/analyzer/lib/src/generated/error_verifier.dart:8977-8988 | pkg/analyzer/lib/src/generated/resolver.dart:6160-6171 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8977}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3758975adac076c647b60210eba85965778724b47fc1ec2c3b72b3cd858638b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart:95-102 | pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_yaml.dart:24-31 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b81ea7ce883dd7e65834dd35800f67773ef0cfa2354ca161f2ea0c43fe718b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart:1850-1859 | pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_yaml.dart:59-68 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1850}}}],"partialFingerprints":{"codehealthFindingId/v1":"333fc8ce79db561ce38c5aca4e3b6f590c6b422cfcb0aaf959066471e40f8a4b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart:71-81 | pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart:65-75 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"420d9842463b322a0ffe9ca4ddcb1b3c513c2ece8ec663121d9b25dd2401491c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart:172-177 | pkg/compiler/lib/src/inferrer/typemasks/set_type_mask.dart:87-92 | pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart:61-66 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 3 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/forwarding_type_mask.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a0c5aaf6d3fc65501d0079112ef6418298d1c0b219b69805751832f47eb6b20"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/compiler/lib/src/js/rewrite_async.dart:889-894 | pkg/dev_compiler/lib/src/compiler/rewrite_async.dart:904-909 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/rewrite_async.dart\u0060 and \u0060pkg/dev_compiler/lib/src/compiler/rewrite_async.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"57bb7ffa6f589e6c5923438ebe06a57b106282ecede61a66e15f4f5cdba5518a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/compiler/lib/src/js/rewrite_async.dart:1524-1532 | pkg/dev_compiler/lib/src/compiler/rewrite_async.dart:1567-1575 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/rewrite_async.dart\u0060 and \u0060pkg/dev_compiler/lib/src/compiler/rewrite_async.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1524}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9bde4d16fdc6cd5a1a17324a9ababc6b65801bf74b8ae5b014910f2ae81f845"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/js/rewrite_async.dart:1534-1541 | pkg/dev_compiler/lib/src/compiler/rewrite_async.dart:1577-1585 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/rewrite_async.dart\u0060 and \u0060pkg/dev_compiler/lib/src/compiler/rewrite_async.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1534}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e173c7092cb5b1432186f8c6da60efa4af204474b87f75bc240e93d68dfd7cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/js/rewrite_async.dart:1681-1688 | pkg/dev_compiler/lib/src/compiler/rewrite_async.dart:1731-1738 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/rewrite_async.dart\u0060 and \u0060pkg/dev_compiler/lib/src/compiler/rewrite_async.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1681}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc0284205b146bf004c38921fe2d2a30f3bbb045456d726b5d86cdd42a0297e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/js/rewrite_async.dart:3226-3232 | pkg/dev_compiler/lib/src/compiler/rewrite_async.dart:3312-3318 \u2014 before extracting anything, compare \u0060pkg/compiler/lib/src/js/rewrite_async.dart\u0060 and \u0060pkg/dev_compiler/lib/src/compiler/rewrite_async.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 39 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":3226}}}],"partialFingerprints":{"codehealthFindingId/v1":"c53e059071e307c89e550a8f142081b50c3157ae4df015878ed39f34286b036e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/compiler/lib/src/js_model/element_map_impl.dart:512-516 | pkg/compiler/lib/src/kernel/element_map_impl.dart:166-170 \u2014 \u0060pkg/compiler/lib/src/js_model/element_map_impl.dart\u0060 and \u0060pkg/compiler/lib/src/kernel/element_map_impl.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 23 separate duplicated blocks between them, totalling at least 317 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e919fe7c7e3b4ae479eff1d019f3494b0fdfcd102377445db1f9fb97552f6c8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/compiler/lib/src/js_model/type_recipe.dart:184-189 | pkg/compiler/lib/src/universe/recorded_use.dart:71-76 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/type_recipe.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d885798b6f4ee807f3954556cc15ddc8c0dcf63708c80484956fb1913e1e5a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/compiler/lib/src/serialization/binary_sink.dart:136-142 | pkg/compiler/lib/src/serialization/object_sink.dart:60-66 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/binary_sink.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad1da407dddfdcd6aec0ea202bb249b287991e4e814135e7a25b4a7c967a70bf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/compiler/lib/src/serialization/binary_source.dart:126-133 | pkg/compiler/lib/src/serialization/object_source.dart:58-65 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/binary_source.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"479b068892b4c8aa528004e6703ef8c95d9da1486a112b572468b0632a8c1f1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): pkg/compiler/lib/src/util/maplet.dart:282-294 | pkg/compiler/lib/src/util/setlet.dart:340-352 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/util/maplet.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"848cbb9ebdd00edeb7aa7eccf4084aa939b150975d38aa089f536e450e3f8d98"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dart2js_info/lib/src/common_element.dart:58-65 | pkg/dart2js_info/lib/src/diff.dart:72-79 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/common_element.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"0459f3c6ffbdb09417823ab60b04fb80f1e7336de84f5a905dc51ef66c1d5899"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/dtd/lib/src/response_types/_connected_app.dart:12-19 | pkg/dtd/lib/src/response_types/response_types.dart:124-131 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd/lib/src/response_types/_connected_app.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddaaf688244f3b30e0c2f08df96cdbdd18664b255a15649e900e61bc35b50890"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/dwds/lib/src/loaders/build_runner_strategy_provider.dart:168-173 | pkg/dwds/lib/src/loaders/frontend_server_strategy_provider.dart:47-52 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/loaders/build_runner_strategy_provider.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"d74f3cce770de90f606462107ecdbd0adf8b7b3ebc159c66d15552b5af375649"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/dill/dill_class_builder.dart:296-306 | pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart:422-433 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/dill/dill_class_builder.dart\u0060 and \u0060pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 74 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":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"268e9061b0c308103f6371fb5a71904af75d936f0fe189b9a488cb6586575f25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/front_end/lib/src/fragment/getter/declaration.dart:234-245 | pkg/front_end/lib/src/fragment/setter/declaration.dart:235-246 \u2014 \u0060pkg/front_end/lib/src/fragment/getter/declaration.dart\u0060 and \u0060pkg/front_end/lib/src/fragment/setter/declaration.dart\u0060 are one unit implemented once per sibling directory, so they are most likely parallel implementations of one contract rather than a copy of each other \u2014 this scan matched 3 separate duplicated blocks between them, totalling at least 39 lines. If both are selected at run time, neither can be retired in favour of the other, and the lines that DIFFER between them are the reason both exist. The move that pays here is to hoist the identical part into a shared location the whole family can reach and give what differs a parameter or a seam, so a change lands once instead of once per sibling; extracting one helper per block leaves every sibling to drift on its own."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/declaration.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c9ac6c769831b7dd2a770ec746359d5a9a6f01bb83ab24ca2e83a3207f8ba5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart:459-463 | pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart:477-481 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:1432-1436 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd3fa9aabe9745c9512ee9212d57dbc3bd6f5cfebcff707c0f4419500db8794c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart:468-472 | pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart:486-490 | pkg/front_end/lib/src/kernel/hierarchy/members_node.dart:1440-1444 \u2014 there are 3 copies across 2 file(s) \u2014 more copies than files, so at least one file holds the block twice. Extract it once into a single shared function every call site can reach and call it from all 3 sites; resolving a subset leaves the remainder to drift apart."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"2793d7be01080b3ce974a40ccb53cda3413740a858f666cce7970e78d7e55f3a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/front_end/lib/src/kernel/internal_ast.dart:7249-7260 | pkg/kernel/lib/src/ast/patterns.dart:1372-1382 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/kernel/internal_ast.dart\u0060 and \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 as WHOLE FILES: this scan already matched 8 separate duplicated blocks between them, totalling at least 80 lines, which is the signature of one file having been copied from the other rather than of a helper waiting to be extracted. The two sit in different directories, so one cannot simply be deleted in favour of the other while both are reached separately: hoist the shared part into a location both already depend on and have each file call it, and retire whichever file turns out to have no caller of its own left. Extracting one helper per block leaves the fork in place."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7249}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b8416e9f4662f7b946ed4eccf51474f3c2319d84c7c3b1eee0a487be8e1a735"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): pkg/front_end/lib/src/source/diet_listener.dart:1382-1398 | pkg/front_end/lib/src/source/outline_builder.dart:4976-4992 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":1382}}}],"partialFingerprints":{"codehealthFindingId/v1":"94134f71eaefa615e3c51631775d602f505b2a5ff94cd89fb704f161ea167140"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/front_end/lib/src/source/source_class_builder.dart:1466-1471 | pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart:245-250 \u2014 before extracting anything, compare \u0060pkg/front_end/lib/src/source/source_class_builder.dart\u0060 and \u0060pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 45 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":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1466}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd60ba63adce44f19df562916ce37b202f508c36ec9a3c42aa869728cd8367b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 4): pkg/kernel/lib/src/ast/expressions.dart:115-120 | pkg/kernel/lib/src/ast/expressions.dart:1596-1601 | pkg/kernel/lib/src/ast/statements.dart:18-23 | pkg/kernel/lib/src/ast/types.dart:2028-2033 \u2014 before extracting anything, compare \u0060pkg/kernel/lib/src/ast/expressions.dart\u0060 and \u0060pkg/kernel/lib/src/ast/statements.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 33 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a42d66cdf34fa7f2ed75114d9018a2da8a00cb4df8f1480e372f174c03e0e67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/kernel/lib/src/ast/expressions.dart:240-250 | pkg/kernel/lib/src/ast/patterns.dart:888-898 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"de5c5295ad7ecf41578e78c1049b02e67f0e1535c473914808b38000c3438ce5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/kernel/lib/src/ast/expressions.dart:5204-5210 | pkg/kernel/lib/src/ast/statements.dart:476-482 \u2014 before extracting anything, compare \u0060pkg/kernel/lib/src/ast/expressions.dart\u0060 and \u0060pkg/kernel/lib/src/ast/statements.dart\u0060 as WHOLE FILES: this scan already matched 5 separate duplicated blocks between them, totalling at least 33 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5204}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf640aa872bf82c838c4e0d35af79ff39d2f440a28c8913e421065641ee5988c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/kernel/lib/src/ast/patterns.dart:2128-2133 | pkg/kernel/lib/src/ast/statements.dart:857-862 \u2014 before extracting anything, compare \u0060pkg/kernel/lib/src/ast/patterns.dart\u0060 and \u0060pkg/kernel/lib/src/ast/statements.dart\u0060 as WHOLE FILES: this scan already matched 3 separate duplicated blocks between them, totalling at least 37 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":2128}}}],"partialFingerprints":{"codehealthFindingId/v1":"00dcee3703620237f9ee746f0b264fc77759e7fdcb335df8b80a903d1df31301"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): pkg/linter/lib/src/rules/always_declare_return_types.dart:29-38 | pkg/linter/lib/src/rules/annotate_overrides.dart:26-35 | pkg/linter/lib/src/rules/avoid_types_as_parameter_names.dart:32-41 | pkg/linter/lib/src/rules/noop_primitive_operations.dart:24-33 | pkg/linter/lib/src/rules/unnecessary_null_aware_operator_on_extension_on_nullable.dart:33-42 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 5 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/always_declare_return_types.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"21993b75e6599b90081e986d56fa4538860a9cce3afbd3968190e94b2d2062e7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/linter/lib/src/rules/empty_container_bodies.dart:30-38 | pkg/linter/lib/src/rules/initialize_in_field_declaration.dart:30-38 | pkg/linter/lib/src/rules/unnecessary_breaks.dart:24-33 | pkg/linter/lib/src/rules/use_declaring_parameters.dart:30-38 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/empty_container_bodies.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"22e828515592a5ba0124e6f4e68b31b4af2a63896b1c27765664c539480754e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): pkg/linter/lib/src/rules/omit_local_variable_types.dart:32-40 | pkg/linter/lib/src/rules/prefer_collection_literals.dart:27-35 | pkg/linter/lib/src/rules/unnecessary_await_in_return.dart:30-38 | pkg/linter/lib/src/rules/unrelated_type_equality_checks.dart:32-40 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 4 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/omit_local_variable_types.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f7d7cccf37c566f30fa9fe7a5ae3283489dba6113d1a8d451d68783bdf87cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/linter/lib/src/rules/simplify_variable_pattern.dart:27-35 | pkg/linter/lib/src/rules/use_enums.dart:27-36 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/simplify_variable_pattern.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"e250feeefc886c6d68cb60bc4039389b581b165747d50543543385ea103ea2a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/linter/lib/src/rules/unnecessary_library_name.dart:37-43 | pkg/linter/lib/src/rules/unnecessary_type_name_in_constructor.dart:46-52 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_library_name.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"d347622aed90c900535def6e73c3eb3549cad40b5af5739946da921a2561312a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/linter/lib/src/rules/unnecessary_parenthesis.dart:28-35 | pkg/linter/lib/src/rules/unnecessary_primary_constructor_body.dart:29-36 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_parenthesis.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9a207d406c50c95ca9e3635f5843414d87c68bc81083409b496012199c86fa6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/linter/lib/src/rules/unnecessary_underscores.dart:28-37 | pkg/linter/lib/src/rules/use_primary_constructors.dart:31-40 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_underscores.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2912a8c2e16a6be13ba0b84a7a4bd00e796e761f75025303292b545ab862045"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/observatory/lib/src/elements/cpu_profile.dart:172-176 | pkg/observatory/lib/src/elements/cpu_profile_table.dart:492-496 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/cpu_profile.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f62d9c3280f053cd36b8c786d025e1b596820f2c6ed8c6c6fb551dbd852a3d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/observatory/lib/src/elements/isolate_reconnect.dart:57-65 | pkg/observatory/lib/src/elements/nav/vm_menu.dart:48-56 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/isolate_reconnect.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"86457de2eb5fda3f5d293f8d08f4465a7b18599095004534e14b26315893e26f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): pkg/observatory/lib/src/elements/metric/details.dart:171-180 | pkg/observatory/lib/src/repositories/metric.dart:160-169 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/metric/details.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6727283b4e59257424b7496cbd1657442a6a4c18ed2059432b827dae00f4a24"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): pkg/observatory/lib/src/elements/nav/notify.dart:45-50 | pkg/observatory/lib/src/elements/vm_connect.dart:47-52 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/nav/notify.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"64f728d3fcea0236fe18f144bb72e8b24fd88e55e3f369b59e99ae4c03b9f38a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/observatory/lib/src/repositories/isolate.dart:15-23 | pkg/observatory/lib/src/repositories/isolate_group.dart:10-18 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/repositories/isolate.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a3d2894f451a38451b47b730d11e8eb24bacb23cefa80a0fb63ba7b5720ce8b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 5): pkg/wasm_builder/lib/src/ir/function.dart:246-251 | pkg/wasm_builder/lib/src/ir/global.dart:147-152 | pkg/wasm_builder/lib/src/ir/memory.dart:144-149 | pkg/wasm_builder/lib/src/ir/table.dart:124-129 | pkg/wasm_builder/lib/src/ir/tags.dart:15-20 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from all 5 call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/function.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ed5fed45cf27b29639da79b6ea975c12cedaea5f5a56e8aede9c9b4f84ecada"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/vm/lib/transformations/record_use/constant_collector.dart:52-58 | pkg/vm/lib/transformations/type_flow/rta.dart:500-506 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/record_use/constant_collector.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"41620b90052d133f2e40c080921b6ec49fa4b4618d0d45c17f91cba7f36ad583"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart:102-106 | sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart:166-170 | sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart:202-206 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_map.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d53852ce352cf1ac7b60d2ca32a79466a4df39554b48182fd3bb7b29ee1f90f1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): sdk/lib/_internal/js_dev_runtime/private/custom_hash_set.dart:71-76 | sdk/lib/_internal/js_dev_runtime/private/custom_hash_set.dart:85-90 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_set.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8099d34ce988ceb7086612c5b63ca9770a29b7db96c4b59f57de23a72136109"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2794-2798 | sdk/lib/_internal/vm_shared/lib/bigint_patch.dart:2811-2815 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/bigint_patch.dart"},"region":{"startLine":2794}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc80494807cae42d5a1416dbd5cabc66582a39f52db6b940d2f9d6c356c66001"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (6 members, 50\u002B identical tokens): pkg/compiler/tool/modular_test_suite_helper.dart:256-289 | pkg/compiler/tool/modular_test_suite_helper.dart:320-350 | pkg/compiler/tool/modular_test_suite_helper.dart:377-406 | pkg/compiler/tool/modular_test_suite_helper.dart:443-474 | pkg/compiler/tool/modular_test_suite_helper.dart:506-538 | pkg/compiler/tool/modular_test_suite_helper.dart:571-603 \u2014 These 6 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 6 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 6 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/modular_test_suite_helper.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4133a6b46a91589ef067db59401fd040c6dd3ab5be881c8dc0b7012053a7bf8"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (5 members, 50\u002B identical tokens): pkg/test_runner/lib/src/runtime_configuration.dart:437-472 | pkg/test_runner/lib/src/runtime_configuration.dart:479-508 | pkg/test_runner/lib/src/runtime_configuration.dart:512-539 | pkg/test_runner/lib/src/runtime_configuration.dart:547-574 | pkg/test_runner/lib/src/runtime_configuration.dart:582-626 \u2014 These 5 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 5 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 5 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"86063591f377649d18c8860a040e3ecdd67a7f087c17e15dc38f91a57a2e0343"}},{"ruleId":"D4","level":"warning","message":{"text":"Members sharing a duplicated core (4 members, 50\u002B identical tokens): pkg/test_runner/lib/src/compiler_configuration.dart:1747-1801 | pkg/test_runner/lib/src/compiler_configuration.dart:1958-2004 | pkg/test_runner/lib/src/compiler_configuration.dart:2103-2148 | pkg/test_runner/lib/src/compiler_configuration.dart:2150-2193 \u2014 These 4 members share a duplicated core: a run of at least 50 identical tokens appears in every one of them. That run is NOT broken out as duplicated-block rows below \u2014 it is what admitted this row, and the blocks below cover only the part of it that clears the block floor, so they understate the correspondence. Read the members as one construct written 4 times. The repair is at the members\u0027 grain \u2014 factor the shared implementation out once and have all of them call it with their differences as parameters or as an injected step, or, where the difference is systematic, generate them from one template. Extracting the individual blocks below is not the same fix: it leaves every body in place and the next edit still has to be made 4 times."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":1747}}}],"partialFingerprints":{"codehealthFindingId/v1":"447972a59b484f143d8de8b6435a16231289ee0b0b96f4d971b2b4cb5ed8def7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 3): pkg/test_runner/lib/src/compiler_configuration.dart:1972-1989 | pkg/test_runner/lib/src/compiler_configuration.dart:2117-2134 | pkg/test_runner/lib/src/compiler_configuration.dart:2164-2181 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":1972}}}],"partialFingerprints":{"codehealthFindingId/v1":"24fe7b07c85ddda6e6e43112162fd7b0948bb0c803cfbe095e5b94a76915cd2d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): pkg/analysis_server/lib/src/services/snippets/dart/test_definition.dart:22-37 | pkg/analysis_server/lib/src/services/snippets/dart/test_group_definition.dart:20-35 \u2014 before extracting anything, compare \u0060pkg/analysis_server/lib/src/services/snippets/dart/test_definition.dart\u0060 and \u0060pkg/analysis_server/lib/src/services/snippets/dart/test_group_definition.dart\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. 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":"pkg/analysis_server/lib/src/services/snippets/dart/test_definition.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae580503881d3302210bafdfcdaecdb4c3ecb9b6c30507d34709273e316da64e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14\u201315 lines \u00D7 4): pkg/compiler/tool/modular_test_suite_helper.dart:377-391 | pkg/compiler/tool/modular_test_suite_helper.dart:443-456 | pkg/compiler/tool/modular_test_suite_helper.dart:506-519 | pkg/compiler/tool/modular_test_suite_helper.dart:571-584 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/modular_test_suite_helper.dart"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"00cf0bcf06acd62d69a4ab75035854a32a9c19e3f5d478c6d6b6acbcc5490a5b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/test_runner/lib/src/command_output.dart:1273-1287 | pkg/test_runner/lib/src/command_output.dart:1311-1325 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":1273}}}],"partialFingerprints":{"codehealthFindingId/v1":"8577627bafd33f0c29e6129bc8a5e554db2b7cc0c2caeb127ed8dbd908eab534"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): pkg/test_runner/lib/src/compiler_configuration.dart:536-550 | pkg/test_runner/lib/src/compiler_configuration.dart:887-901 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"35dc991d845ae60fda47f4218dced4e3f70ec821cecad332a3df1bb41f62fce4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/compiler/tool/modular_test_suite_helper.dart:525-538 | pkg/compiler/tool/modular_test_suite_helper.dart:590-603 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/modular_test_suite_helper.dart"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dada74ee4fa3cfb249dfe33917c01f6fdd16cd3cfa549b84f56c6ca38ffd823"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201314 lines \u00D7 2): pkg/test_runner/lib/src/browser_controller.dart:1191-1201 | pkg/test_runner/lib/src/browser_controller.dart:1216-1229 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser_controller.dart"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2164f1120f65a2a060ec965e12f04724462a79a2e3d84c6c5442af1a41851a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/test_runner/lib/src/compiler_configuration.dart:1566-1579 | pkg/test_runner/lib/src/compiler_configuration.dart:2036-2049 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":1566}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16fd29a7633a7ecef89c7a56ba96631abc66bf52135ae65700376c49e30a077"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12\u201314 lines \u00D7 2): pkg/test_runner/lib/src/process_queue.dart:711-724 | pkg/test_runner/lib/src/process_queue.dart:840-851 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/process_queue.dart"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"7406c74546b8a8a0ac32a6b7b6c4d7bc6d9e281f04f88308b26ebc35e48f84ab"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): pkg/test_runner/lib/src/runtime_configuration.dart:210-224 | pkg/test_runner/lib/src/runtime_configuration.dart:285-298 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c21d468c0a7c617319ee8ec0293dc06fa2b0d03ee6b51625201bec991fbfc8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/test_runner/lib/src/process_queue.dart:781-792 | pkg/test_runner/lib/src/process_queue.dart:886-897 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/process_queue.dart"},"region":{"startLine":781}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb058a0b76930697ccd40142303de12f33f4726ecfd0712d2ea3ea9a3408f097"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/test_runner/lib/src/runtime_configuration.dart:439-450 | pkg/test_runner/lib/src/runtime_configuration.dart:584-595 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5d5c59aa62822287c486e8183b0d932dc9f7827c9c2ba5473aa976063d216b6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11\u201312 lines \u00D7 2): pkg/test_runner/lib/src/runtime_configuration.dart:462-472 | pkg/test_runner/lib/src/runtime_configuration.dart:497-508 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ce4bbf7aa90e720c83b46c8539aaf66c42afac6ec893adc9652bf1e974ff1f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): pkg/test_runner/lib/src/runtime_configuration.dart:513-524 | pkg/test_runner/lib/src/runtime_configuration.dart:548-559 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"72f82c178fe01aba6aa6042c6d95f85ef2aaf23563f6b2a10bd71a1bab41bd59"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9\u201311 lines \u00D7 3): pkg/test_runner/lib/src/command_output.dart:835-843 | pkg/test_runner/lib/src/command_output.dart:1172-1182 | pkg/test_runner/lib/src/command_output.dart:1535-1545 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"298172d2bcdbca9f58a2c2f66841d7ae4383bc8febab75702b4d5f6609cef35c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): pkg/test_runner/lib/src/runtime_configuration.dart:438-448 | pkg/test_runner/lib/src/runtime_configuration.dart:480-490 | pkg/test_runner/lib/src/runtime_configuration.dart:583-593 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"64be77e3d96b4f82fbda9d233ac6f9c97decfdc72f46045091621c222fbebb4a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): pkg/analyzer/lib/src/test_utilities/test_code_format.dart:94-104 | pkg/analyzer/lib/src/test_utilities/test_code_format.dart:107-117 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/test_utilities/test_code_format.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"9320efbf81708cd4697d461a7cdfe31abefb3449c64557ea0caa1bf6409dd367"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 5): pkg/test_runner/lib/src/runtime_configuration.dart:437-447 | pkg/test_runner/lib/src/runtime_configuration.dart:479-489 | pkg/test_runner/lib/src/runtime_configuration.dart:512-521 | pkg/test_runner/lib/src/runtime_configuration.dart:547-556 | pkg/test_runner/lib/src/runtime_configuration.dart:582-592 \u2014 all 5 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f1aa3a1386c73ef06136a731764cca76500e031a08dd58cc22f85234b3310aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): pkg/test_runner/lib/src/browser_controller.dart:1077-1086 | pkg/test_runner/lib/src/browser_controller.dart:1191-1200 | pkg/test_runner/lib/src/browser_controller.dart:1216-1228 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser_controller.dart"},"region":{"startLine":1077}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b19fc7fed1a0d19b220d905de6fd59e82dc555e63cd25555a50e1efb34253ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/test_runner/lib/src/compiler_configuration.dart:526-534 | pkg/test_runner/lib/src/compiler_configuration.dart:622-630 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ae6d2e72909f35b3b2eeb2df29ae1265715ef75a84f3d9d9c5a0e1d93e2c9a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/test_runner/lib/src/test_suite.dart:447-455 | pkg/test_runner/lib/src/test_suite.dart:586-594 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/test_suite.dart"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"80d3869fe5db2c133d950ae1aaa7eb018fbef1d9e43864534de3f69eeee4bff5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): pkg/test_runner/lib/src/compiler_configuration.dart:1771-1778 | pkg/test_runner/lib/src/compiler_configuration.dart:1972-1979 | pkg/test_runner/lib/src/compiler_configuration.dart:2117-2124 | pkg/test_runner/lib/src/compiler_configuration.dart:2164-2171 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":1771}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dbcc7aca209ee6b170ea153dc56ddf2a51c0b53ee3534ee71613eb195abfeb4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): pkg/test_runner/lib/src/test_progress.dart:172-179 | pkg/test_runner/lib/src/test_progress.dart:191-198 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/test_progress.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ee30afc8d5eb3399a7b79938253161a1297371170ccf2d5f21d81520747849"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/analysis_server/tool/lsp_spec/meta_model_reader.dart:309-315 | pkg/analysis_server/tool/lsp_spec/meta_model_reader.dart:321-327 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/meta_model_reader.dart"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6ff81913a88d0bc245bcd376d2a589da9a8805badb7db131888f674f004c6e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): pkg/dwds_test_common/lib/integration/test_inspector.dart:183-189 | pkg/dwds_test_common/lib/integration/test_inspector.dart:198-204 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/test_inspector.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"d36eab2c7706f691e58bb8e0220c184099698f2b71136f2c2e73c64f5b06e181"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 6): pkg/compiler/tool/modular_test_suite_helper.dart:268-274 | pkg/compiler/tool/modular_test_suite_helper.dart:330-336 | pkg/compiler/tool/modular_test_suite_helper.dart:385-391 | pkg/compiler/tool/modular_test_suite_helper.dart:451-456 | pkg/compiler/tool/modular_test_suite_helper.dart:514-519 | pkg/compiler/tool/modular_test_suite_helper.dart:579-584 \u2014 all 6 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/modular_test_suite_helper.dart"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab60e4499aff0be9bf2e9e2377d7a24a975365f79dd0fb216559b79e446e4606"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): pkg/test_runner/lib/src/compiler_configuration.dart:1964-1969 | pkg/test_runner/lib/src/compiler_configuration.dart:2109-2114 | pkg/test_runner/lib/src/compiler_configuration.dart:2156-2161 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":1964}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d05c17e030880c567cd2680ae50863764b37147dd917dd11c3af6a18912937e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): pkg/test_runner/lib/src/process_queue.dart:706-710 | pkg/test_runner/lib/src/process_queue.dart:833-839 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/process_queue.dart"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5ca6f040de22aa6c0d7ab21647cc2146e50e6c5a5947570f2c82a463f4fe1a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): pkg/scrape/example/control_flow.dart:32-40 | pkg/scrape/example/if.dart:16-24 \u2014 the copies sit in sibling files of one directory, so a shared home is within easy reach: extract the block into a single shared function the call sites can all reach \u2014 a file they already depend on, or a new one alongside them \u2014 and call it from both call sites, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/example/control_flow.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab06dc01cd3f0b85235782dd437f99ef56b9c98a6067557c7844aca142388ce2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WrapperClass (LCOM4 69): WrapperClass\u0027s methods fall into 69 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 69 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":"pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods.dart"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"307f1f23259775401161ab53e39b50b601fc80f7d474325f19954d151886946b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WrapperClass (LCOM4 69): WrapperClass\u0027s methods fall into 69 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 69 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":"pkg/front_end/parser_testcases/error_recovery/keyword_named_class_methods_2.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f257a8b499a5944ff254d3dd833065abe39bd3d8eebe1492be22f958eb600e7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ReferenceDependenciesCollector (LCOM4 61): _ReferenceDependenciesCollector\u0027s methods fall into 61 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 61 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":"pkg/dart2wasm/lib/deferred_load/dependencies.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"60689864d6d716473fb8d340ebe359a4a5c87dadc0221c4a82a5a056722f2c6b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryElementImpl (LCOM4 61): LibraryElementImpl\u0027s methods fall into 61 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 61 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6699}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6524b5000d7964c6266917930b4f3150cb904a3bfd36c0c1ff876de8defb932"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Simplification (LCOM4 56): Simplification\u0027s methods fall into 56 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 56 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":"pkg/cfg/lib/passes/simplification.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"15df1acd7934d21c6d0a11b1b4d99ec08d71c16e816ee97b096e1b24f3de1f99"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BinaryPrinter (LCOM4 55): BinaryPrinter\u0027s methods fall into 55 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 55 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":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"17d2a28a1e786733a9e56e6d8ab7df7b6879d318d7541b83166a2398b31cfefd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RelevanceDataCollector (LCOM4 53): RelevanceDataCollector\u0027s methods fall into 53 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 53 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":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5f23b4f24517ac80228a7c8a42bdc48d5538297f5c1534524fb37448ac6cf64"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AnnotationsListener (LCOM4 53): AnnotationsListener\u0027s methods fall into 53 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 53 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":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d11a30d674325bfcebc19c9225fa85e3b26dba24c494c2b57109f28e26ca468"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CommonMasks (LCOM4 52): CommonMasks\u0027s methods fall into 52 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 52 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":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"2921b9a4a0663264f77bfac80e089dd30e71051993b6ab124f79df69b61c2858"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InferenceVisitorImpl (LCOM4 49): InferenceVisitorImpl\u0027s methods fall into 49 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 49 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":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"01bf1098c5f46f2bf4d48c82e2555bf612f5f7df367afc41fd3cb62110a3802e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MiniAstBuilder (LCOM4 48): MiniAstBuilder\u0027s methods fall into 48 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 48 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":"pkg/analyzer/tool/summary/mini_ast.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4683b7669952cfffa3ff77213c65984011a11cc1b6d23ad114e34d9e6e7ffe8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RelevanceDataCollector (LCOM4 47): RelevanceDataCollector\u0027s methods fall into 47 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 47 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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e618977ace58b6c798ae92859c7d4a6f914fca9b84306640e82907f8b08b24"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FlowGraphChecker (LCOM4 44): FlowGraphChecker\u0027s methods fall into 44 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 44 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":"pkg/cfg/lib/ir/flow_graph_checker.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"b49cd05e6f10b20e8b91f99848120579942bacc96140115a3e3ea4f67399dd34"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CatchVariable (LCOM4 40): CatchVariable\u0027s methods fall into 40 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 40 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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1231}}}],"partialFingerprints":{"codehealthFindingId/v1":"42c832fe0b9e6f6a594884bbe5ecacf7b08482df797012297b6c0b3eb80227e2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ProxyService (LCOM4 39): ProxyService\u0027s methods fall into 39 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 39 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":"pkg/dwds/lib/src/services/proxy_service.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ab401f89bd843fa9b88daf7510dac32085901fb1224b69e474145b0c1e765f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ThisVariable (LCOM4 39): ThisVariable\u0027s methods fall into 39 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 39 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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1903}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ae1afcd5912d7f5df9058f350a6189b05760b006032780e513ae207e2a0bfbe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeProviderImpl (LCOM4 38): TypeProviderImpl\u0027s methods fall into 38 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 38 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":"pkg/analyzer/lib/src/dart/element/type_provider.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"4059778a67a19fd6898fa59ad1520a3d6d22b571122f08e7c9e5f15efe651bab"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ElementCollector (LCOM4 38): _ElementCollector\u0027s methods fall into 38 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 38 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":"pkg/analyzer/lib/src/fine/manifest_ast.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f44dc25ec21afe90749ed5f1c6c73c652d7cf713799b1face4edcc6c5bb7990"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PreTranslationAnalysis (LCOM4 37): PreTranslationAnalysis\u0027s methods fall into 37 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 37 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":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":2973}}}],"partialFingerprints":{"codehealthFindingId/v1":"83eb6dda8dc55dd67af8578336733d4b303e7fe307992a899725a49bf4880dca"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BodyBuilderContext (LCOM4 36): BodyBuilderContext\u0027s methods fall into 36 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 36 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":"pkg/front_end/lib/src/kernel/body_builder_context.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c7946c4c0f112c7924146cdac1449b32c2fce30395016d87a7928deaf321da"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocalVariable (LCOM4 36): LocalVariable\u0027s methods fall into 36 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 36 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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d3755afd0310326d1083ffebc7b124268845184bbf7cca2558318b1b3a7390d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocalFunctionVariable (LCOM4 36): LocalFunctionVariable\u0027s methods fall into 36 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 36 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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d42d63900cb711755bb2b1564b74599c6831ed75d62b70b8f56e4d7700e5779"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LateVariable (LCOM4 36): LateVariable\u0027s methods fall into 36 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 36 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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3b33d60791365fb78634f26973c28d7ff2f7ec6b0c465730cd84db97ef26e5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstVariable (LCOM4 36): ConstVariable\u0027s methods fall into 36 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 36 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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":966}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e676ecf453a0fbaa3a5f7f9a30d0a505846fe3dc15179efb554ae8a6ef734a2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SyntheticVariable (LCOM4 35): SyntheticVariable\u0027s methods fall into 35 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 35 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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":2110}}}],"partialFingerprints":{"codehealthFindingId/v1":"6134bb410fd430544fae5949fbe3552055238849c73e19db7e9df9c52087b426"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CloneVisitorNotMembers (LCOM4 34): CloneVisitorNotMembers\u0027s methods fall into 34 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 34 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":"pkg/kernel/lib/clone.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"a14d82effa53928a53f9bee4cd3b14cfbabfa6fbb7ab510d677c9d7072f30d02"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VmTarget (LCOM4 33): VmTarget\u0027s methods fall into 33 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 33 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":"pkg/vm/lib/modular/target/vm.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a8f2a2b5f3e821c5b13a055ba4c67596df584b7cea71e4b149997a0887b4a15"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: OperationsCfe (LCOM4 33): OperationsCfe\u0027s methods fall into 33 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 33 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":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"581228b04a92e1d63d158fc76b3a1bdaada2684b291ada0ce0b12cf92f355a2c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MetadataResolver (LCOM4 32): MetadataResolver\u0027s methods fall into 32 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 32 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":"pkg/analyzer/lib/src/summary2/metadata_resolver.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f12be940f4ea5fbc6faaadacf68d0a17d201aad7bc658316931a6d932cb67d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstantiatorGeneratorVisitor (LCOM4 32): InstantiatorGeneratorVisitor\u0027s methods fall into 32 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 32 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":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3528bd1cb8303959469ce7e200451421afff86bc20a677c3f1b389e538c7270"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryFragmentImpl (LCOM4 31): LibraryFragmentImpl\u0027s methods fall into 31 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 31 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":7664}}}],"partialFingerprints":{"codehealthFindingId/v1":"d27387ca2809b232011aa16883b4077064a4a5fd9fd21347a4b23c1000ae3730"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExitDetector (LCOM4 31): ExitDetector\u0027s methods fall into 31 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 31 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":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"17b2378acccd3880b2f092f206cd0c44430f5e2b506cb284c035d5b137fb2b7d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrimaryConstructorFieldDeclaration (LCOM4 31): PrimaryConstructorFieldDeclaration\u0027s methods fall into 31 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 31 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":"pkg/front_end/lib/src/fragment/primary_constructor_field.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"76f95323d522a6c1665b4d08c8d5670ee25d9e3f0349e883ecc44d62d6f72e93"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeSystemImpl (LCOM4 30): TypeSystemImpl\u0027s methods fall into 30 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 30 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":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f844355a91de2f9adc484267ab06b44e1c2aac2962bfe0e2bc097c995d711b0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstantiatorGeneratorVisitor (LCOM4 30): InstantiatorGeneratorVisitor\u0027s methods fall into 30 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 30 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":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"728d4d30be75683f5beb7cbf34ee9cef384794478c6ac07e743d59112661bfa8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _EnumValuesFieldDeclaration (LCOM4 30): _EnumValuesFieldDeclaration\u0027s methods fall into 30 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 30 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":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"115d128220389ce4e752f46a3f5c5b9e1b17895516e112d22f2e1b655931a700"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeSystemOperations (LCOM4 29): TypeSystemOperations\u0027s methods fall into 29 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 29 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":"pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf0cae06386f2fd11cc419cb747c0ff41fc8c730055bb22b7cd7bc4280ffb64"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ResolutionVisitor (LCOM4 29): ResolutionVisitor\u0027s methods fall into 29 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 29 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":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d2349974376c294c4633994120d25d779ed903a3cde9c1726a48af167046c6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReferenceResolver (LCOM4 29): ReferenceResolver\u0027s methods fall into 29 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 29 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":"pkg/analyzer/lib/src/summary2/reference_resolver.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7f73d46d18449ee03b0b1d71fe67fe29853b67e5c22bcea029977bbeb4800cc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EnumElementDeclaration (LCOM4 29): EnumElementDeclaration\u0027s methods fall into 29 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 29 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":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"85fa61e6588c055783651caa1ff9afc4cada24f1e15564d22cc1e1f9b970ba20"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WasmTarget (LCOM4 28): WasmTarget\u0027s methods fall into 28 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 28 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":"pkg/dart2wasm/lib/target.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"3288bf6e101d92ba02fcda3e83cc376926d06d1fb2427d7c5121a64cf32fa58b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MethodInvocationImpl (LCOM4 28): MethodInvocationImpl\u0027s methods fall into 28 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 28 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":37399}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bbeb9179c5c050a3d580afdf0d7cc135c6c1666d9e235671c30a08f7d0c7d3f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EquivalenceVisitor (LCOM4 28): EquivalenceVisitor\u0027s methods fall into 28 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 28 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":"pkg/kernel/lib/src/equivalence.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"22c8a0cf7b5e19843953ef56c0491827eefae7f9a5873be4780d7ae4120d1450"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CoreTypes (LCOM4 27): CoreTypes\u0027s methods fall into 27 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 27 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":"pkg/kernel/lib/core_types.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"3852c22260fa07849c1e0a45ca91555bbacd92cee3a1723aea2c9141bb59a480"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassElementImpl (LCOM4 27): ClassElementImpl\u0027s methods fall into 27 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 27 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e092566c5ab68d54c9108330dc16d908a479a8f36c62966d6066c7eb5b54b7c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeImpl (LCOM4 27): TypeImpl\u0027s methods fall into 27 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 27 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":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":1480}}}],"partialFingerprints":{"codehealthFindingId/v1":"678d6b3b1773add111052f6a3d81e52416884c385305e37714a026c95e56f5a5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DanglingElseVisitor (LCOM4 27): DanglingElseVisitor\u0027s methods fall into 27 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 27 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":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1760}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c23be7fc8dcf90fc7578e2accb81768e5e28777d68ea99334b47cd787850bf1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SimpleToken (LCOM4 26): SimpleToken\u0027s methods fall into 26 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 26 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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/token.dart"},"region":{"startLine":1107}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ffb00ab59b99c2472101e25f6c4a2e978b8c30f0fffcd01e1b560a13510504d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeCheckingVisitor (LCOM4 26): TypeCheckingVisitor\u0027s methods fall into 26 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 26 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":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b2ace1f2b9122278b471b72afd88aa5a1d2e4d736390792830195f694d432aa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Arm64Constraints (LCOM4 26): Arm64Constraints\u0027s methods fall into 26 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 26 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":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"50d07cb2fc9af8505f4e605396ca87b527ed6848fb07f46d92b0dfb1799ceb81"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FakeWebkitDebugger (LCOM4 26): FakeWebkitDebugger\u0027s methods fall into 26 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 26 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":"pkg/dwds_test_common/lib/fixtures/fakes.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef73aaa18bf6bf9f0789246bf9fb08bc0615e7a1e6a19db831d358dc0193ffc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SimpleToken (LCOM4 26): SimpleToken\u0027s methods fall into 26 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 26 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":"pkg/_fe_analyzer_shared/lib/src/scanner/token.dart"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8832e5c28194c91d206868b78d806338fdb92b6f66256bd71d084b07f2f9daa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AssignmentExpressionImpl (LCOM4 26): AssignmentExpressionImpl\u0027s methods fall into 26 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 26 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":2667}}}],"partialFingerprints":{"codehealthFindingId/v1":"841bede120bb8eda4dc56f40780e4e55f5942f2ec5101b2339cbff3a2132210f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExecutableFragmentImpl (LCOM4 26): ExecutableFragmentImpl\u0027s methods fall into 26 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 26 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":2782}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccaff82e8fcf9567440ea3a0b69dab361d22d7017c3baf37101ebba369cf14a7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DanglingElseVisitor (LCOM4 26): DanglingElseVisitor\u0027s methods fall into 26 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 26 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":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":1924}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec5a1c7156c72ce19095fa7ea44cc3e4fa539ac1c98ecb783e5a5071b47cf63d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Library (LCOM4 26): Library\u0027s methods fall into 26 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 26 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":"pkg/kernel/lib/src/ast/libraries.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"9254b8c36555c683eda019587a827d24bba6a6631ce8a493ee515ef3852aa5df"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IndexExpressionImpl (LCOM4 25): IndexExpressionImpl\u0027s methods fall into 25 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 25 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":31000}}}],"partialFingerprints":{"codehealthFindingId/v1":"870b1bf5774fa6b61a0b617c3ffca2f7d9575dc664780931f42d11a30b2e2f6c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AstBuilder (LCOM4 25): AstBuilder\u0027s methods fall into 25 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 25 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":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea1eff40d9dc652e7778dd7741fa0a57845809251d182439ac143f18c048370"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceLoader (LCOM4 25): SourceLoader\u0027s methods fall into 25 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 25 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":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"4732e5e1c948a58584e3d595eac494cfcee45184a4999c1cf638a4c061aacda7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BoxedDouble (LCOM4 24): BoxedDouble\u0027s methods fall into 24 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 24 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":"sdk/lib/_internal/wasm/common/boxed_double.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"adeaf4a73937ee85398c785c8cd54e5b285a66b20a6ce3f0ae329e305e02ca97"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IfElementImpl (LCOM4 24): IfElementImpl\u0027s methods fall into 24 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 24 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":27320}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b771a20b11d5217621149e99e9a3d5e6b4a5e16c02578e84dc85ced40d5c2c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ElementImpl (LCOM4 24): ElementImpl\u0027s methods fall into 24 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 24 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":2067}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f0855ef132298d978fc489def91c853bdab7d0a35518e252b917dde0e981c58"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionAstVisitor (LCOM4 24): FunctionAstVisitor\u0027s methods fall into 24 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 24 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":"pkg/analyzer/lib/src/test_utilities/function_ast_visitor.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbe4caba816ad60750dc689bb3d92be6a4a2730bc48c622cc2d5172ca5a75078"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PreTranslationAnalysis (LCOM4 24): PreTranslationAnalysis\u0027s methods fall into 24 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 24 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":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":2826}}}],"partialFingerprints":{"codehealthFindingId/v1":"a61dd14d8723b60495847e351c8be6b128631af60f4657bbc3851a323f13cd5c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AsyncRewriterBase (LCOM4 24): AsyncRewriterBase\u0027s methods fall into 24 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 24 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":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"42835e5e772948e0337f0a7e9fb87fffb787eb1df91ad28df9f556a6c3929cd9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullableInference (LCOM4 24): NullableInference\u0027s methods fall into 24 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 24 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":"pkg/dev_compiler/lib/src/kernel/nullable_inference.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"de304e27e9bba0e0681abd65feeb355a63f9a10d7d86333402e8fcfe088e868f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InferenceVisitorBase (LCOM4 24): InferenceVisitorBase\u0027s methods fall into 24 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 24 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":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f76f9786c4558aa3678dc1e6afa340d4395e31e839fc0b597d30072d27feed4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListQueue (LCOM4 23): ListQueue\u0027s methods fall into 23 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 23 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":"benchmarks/InvarianceQueue/dart/InvarianceQueue.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4450f8307cc8fc6fddb27b415bf34c1f5bdf01748b043ae511416520e98cc7b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DotShorthandConstructorInvocationImpl (LCOM4 23): DotShorthandConstructorInvocationImpl\u0027s methods fall into 23 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 23 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":14773}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f3366eb0bb83cefd68cd23e6706bcf37529338b73619d954b3e12774c798de"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DotShorthandInvocationImpl (LCOM4 23): DotShorthandInvocationImpl\u0027s methods fall into 23 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 23 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":15054}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee112e0ab70593787e8fa3ba9f863b433fe427ab1439a09f5177c20b1650cc83"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HInstructionStringifier (LCOM4 23): HInstructionStringifier\u0027s methods fall into 23 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 23 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":"pkg/compiler/lib/src/ssa/tracer.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"c759ee8106b08ef955480376d6fece882dcbb587a0a9f54f80479b2a1c8b195c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionReferenceImpl (LCOM4 22): FunctionReferenceImpl\u0027s methods fall into 22 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 22 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25206}}}],"partialFingerprints":{"codehealthFindingId/v1":"829a061af68ebbdebf7aaee1f73b05fa4a5020f4a61567320d881f514bf22412"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImplicitCallReferenceImpl (LCOM4 22): ImplicitCallReferenceImpl\u0027s methods fall into 22 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 22 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":28679}}}],"partialFingerprints":{"codehealthFindingId/v1":"a427b696c5b85a09b54bec1df519c904480a85c2be3e07fe0ab970df6b658b68"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorFragmentImpl (LCOM4 22): ConstructorFragmentImpl\u0027s methods fall into 22 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 22 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":1118}}}],"partialFingerprints":{"codehealthFindingId/v1":"76cba6f8d984ee2628373eed109dfcfdab54084adf96e31d53b063c6901bc619"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AnonymousMethodInvocationImpl (LCOM4 21): AnonymousMethodInvocationImpl\u0027s methods fall into 21 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 21 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":1108}}}],"partialFingerprints":{"codehealthFindingId/v1":"e01bc9c34585f376f504b8e78fed5faeb1b3e1a02a133c993b2a62f6ad79df0c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConditionalExpressionImpl (LCOM4 21): ConditionalExpressionImpl\u0027s methods fall into 21 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 21 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":9891}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b641b4b8a27df052bc3af5329c5b7475e7edb6ee9d1965290bd28916c88ec32"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorTearOffImpl (LCOM4 21): ConstructorTearOffImpl\u0027s methods fall into 21 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 21 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":12586}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cdf4c7e0cff1e96b9ebdc2fe8299a9e24b5ca421ea316e8e59f8f96c2d79db9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IfStatementImpl (LCOM4 21): IfStatementImpl\u0027s methods fall into 21 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 21 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":28166}}}],"partialFingerprints":{"codehealthFindingId/v1":"af5ac16b9cbee2b557769e351276ecf130aaffc02f82e8930a7a5973e6fc670d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassFragmentImpl (LCOM4 21): ClassFragmentImpl\u0027s methods fall into 21 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 21 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca86c9f84fb13c702d411dcf9677978477929602e13298520a50f8e0781f68c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExecutableElementImpl (LCOM4 21): ExecutableElementImpl\u0027s methods fall into 21 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 21 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":2518}}}],"partialFingerprints":{"codehealthFindingId/v1":"da66d778c855ff56aa8e688d6a320bec9d5cabfb96afa41e1cdf1f3144b67f12"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FragmentBuilder (LCOM4 21): FragmentBuilder\u0027s methods fall into 21 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 21 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":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1265}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aecb0dd4db849d3d9de9d318c2776bd0d11b0ca273a184ed0a7d8fa16059ef3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryCompiler (LCOM4 21): LibraryCompiler\u0027s methods fall into 21 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 21 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":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"de34abc4e368e182829aa6f6664addcb9f5f9297a0114b055e02484bf6413a90"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RegularFieldDeclaration (LCOM4 21): RegularFieldDeclaration\u0027s methods fall into 21 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 21 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":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b567eb8a9a5346dc9da479a72c8b037e70ad6330a8a6d2ccb15ae05b8b16715"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BoxedInt (LCOM4 20): BoxedInt\u0027s methods fall into 20 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 20 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":"sdk/lib/_internal/wasm/common/boxed_int.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"45845a57beeb18c254e2b269b695e18dc9e66047c72992c31757a213288662fc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EmbedderStringImpl (LCOM4 20): EmbedderStringImpl\u0027s methods fall into 20 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 20 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":"sdk/lib/_internal/wasm/standalone/embedder_string.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"d62d1f3d928a1ebf29576e89c9849c148a3885dff3bb0a2d3da0acc78dfef787"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorReferenceImpl (LCOM4 20): ConstructorReferenceImpl\u0027s methods fall into 20 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 20 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":12266}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f55e1042d2ca01fb8ae58063635a094ed0f1fbb7373f2e0b9b04de0fd747d91"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorElementImpl (LCOM4 20): ConstructorElementImpl\u0027s methods fall into 20 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 20 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a3d201e4e7a4aeb6f181855cb24b666e28b43cf598a60ecfbbd0c10f7a9cd9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaTypePropagator (LCOM4 20): SsaTypePropagator\u0027s methods fall into 20 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 20 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":"pkg/compiler/lib/src/ssa/types_propagation.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"40789cfde9dd4eaf2eba0a4fc2e8fc07a4b57445d7e2ffc712907efa00e10ae2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ProgramCompiler (LCOM4 20): ProgramCompiler\u0027s methods fall into 20 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 20 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":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"97311fc30d245fc6ff253b1dd26d9055ffd3e4ee809608b1072a23bdb9263384"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AsyncStateVisitor (LCOM4 20): AsyncStateVisitor\u0027s methods fall into 20 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 20 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":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"0413e8373fd802eb7e22fa646c45d46020b2edf3bdeb8adf38eb1050d8fdca9f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _InnerTypeSubstitutor (LCOM4 19): _InnerTypeSubstitutor\u0027s methods fall into 19 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 19 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":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"efa02113bfb315fdbb005ae6fb618aa17b4195287d41ca8c0d96c28fcc23ea33"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CastPatternImpl (LCOM4 19): CastPatternImpl\u0027s methods fall into 19 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 19 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6828}}}],"partialFingerprints":{"codehealthFindingId/v1":"999bfadad32a921fa05d12717521378dbef91600c414b046b1a8e21c73350568"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompoundAssignmentImpl (LCOM4 19): CompoundAssignmentImpl\u0027s methods fall into 19 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 19 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":9645}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eac6abb82813f46b1c49c45f4050bd51c048af779babb29c31a435c91090692"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorInvocationImpl (LCOM4 19): ConstructorInvocationImpl\u0027s methods fall into 19 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 19 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":11526}}}],"partialFingerprints":{"codehealthFindingId/v1":"5588d4670ce678623837d8e26fe8885d5668ad19be71cfc3d3ce565b1d95bb65"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionOverride2Impl (LCOM4 19): ExtensionOverride2Impl\u0027s methods fall into 19 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 19 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":19220}}}],"partialFingerprints":{"codehealthFindingId/v1":"db75ee287e162e279c61119863f39a3965912731d84ff8cc4009b66c4734741a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionExpressionInvocationImpl (LCOM4 19): FunctionExpressionInvocationImpl\u0027s methods fall into 19 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 19 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24585}}}],"partialFingerprints":{"codehealthFindingId/v1":"a03f163393de654478097f199908b97a1fd52e1a7fc8c8aee518eb28b93f635b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParsedDotShorthandExpressionImpl (LCOM4 19): ParsedDotShorthandExpressionImpl\u0027s methods fall into 19 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 19 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":41964}}}],"partialFingerprints":{"codehealthFindingId/v1":"1788ca93332c295fa0f7b9ec1e5b78a460c3771022f235de9fa730df7b8d6a9e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrimaryConstructorDeclarationImpl (LCOM4 19): PrimaryConstructorDeclarationImpl\u0027s methods fall into 19 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 19 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":45688}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f32d37f4dff604b9df4910d4732926ef22284e72f8c2596d72b9673a207bdcc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldFragmentImpl (LCOM4 19): FieldFragmentImpl\u0027s methods fall into 19 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 19 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3743}}}],"partialFingerprints":{"codehealthFindingId/v1":"3af9f88eb73832835b6c789b54958552589c14425a872c5ce463d3d570b9f5b8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ModularConstantEmitter (LCOM4 19): ModularConstantEmitter\u0027s methods fall into 19 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 19 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":"pkg/compiler/lib/src/js_backend/constant_emitter.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"348e1c59d69682c9dd05a2bfe9f8e8ae9f3e4bab3b5856863d341003de9d7cd3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceConstructorBuilder (LCOM4 19): SourceConstructorBuilder\u0027s methods fall into 19 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 19 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":"pkg/front_end/lib/src/source/source_constructor_builder.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"e069e092bb17a6ba72bdb9d2865e9d0413f871f26099689e2d73fc051cf82293"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ReportNoClearEffectVisitor (LCOM4 19): _ReportNoClearEffectVisitor\u0027s methods fall into 19 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 19 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":"pkg/linter/lib/src/rules/unnecessary_statements.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4d5fcebb24a448db1b3b4c7f35b9b252ef1b418e7ea091726a2465b5cf3bbee"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AstCodeGenerator (LCOM4 18): AstCodeGenerator\u0027s methods fall into 18 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 18 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":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca8f7902a32a0dff5f0bf43efc19623300c375d6152bae9f7286e80bd1a3e01f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AnnotationImpl (LCOM4 18): AnnotationImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"90ca6683b799d98753a40e4add43e90cebe6f877c82732fd30d4bb7472d3f080"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AsExpressionImpl (LCOM4 18): AsExpressionImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":1719}}}],"partialFingerprints":{"codehealthFindingId/v1":"743be6605d638c34eab7a9cfcf8e08e6c9b42c823fe28a8d79bb1e2b9f31b281"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassDeclarationImpl (LCOM4 18): ClassDeclarationImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7666}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e448027176f3f38134faf11698f9fc147dbeee45b07c546a02d5311ca7235f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorReference2Impl (LCOM4 18): ConstructorReference2Impl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":12069}}}],"partialFingerprints":{"codehealthFindingId/v1":"98cacb37d512be436a393c0d42a083860feb292c37e57a4f9433e5019bfd0aaf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DirectAssignmentImpl (LCOM4 18): DirectAssignmentImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13981}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac87f8f5db6211cc8e85840f8092be36b3593dc9d113912849663b4a545592fe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DotShorthandConstructorInvocation2Impl (LCOM4 18): DotShorthandConstructorInvocation2Impl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":14514}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f509840183c23e0c5e0cdfd8b20445211c320ba24c83fa6fc8efa2e867ae765"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DotShorthandPropertyAccessImpl (LCOM4 18): DotShorthandPropertyAccessImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":15651}}}],"partialFingerprints":{"codehealthFindingId/v1":"0251028a18eba056e74476f536d39ca3b488cbb27999f8bbd9a6e3216dd8e003"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionInstantiationImpl (LCOM4 18): FunctionInstantiationImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24809}}}],"partialFingerprints":{"codehealthFindingId/v1":"5708e036877f6e2113dfb333b96cbc0aeb7a28b83340cb03da830dd3244658b4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IfNullAssignmentImpl (LCOM4 18): IfNullAssignmentImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":27741}}}],"partialFingerprints":{"codehealthFindingId/v1":"e213dd02ac8cbcfdfbbfcd0fe6dab51871f21a490ead431848d1c5fb85884307"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IfNullImpl (LCOM4 18): IfNullImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":27928}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c27819dfcd0333a38b93408a6f6fd7cad0d649bf9eb138ffbc0fb09949fb315"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImplicitCallTearOffImpl (LCOM4 18): ImplicitCallTearOffImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":28881}}}],"partialFingerprints":{"codehealthFindingId/v1":"58053269efb9391b6482ceee6dc3f843c0e54ea3ec78d16b5638dd650e0e8988"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImplicitFunctionInstantiationImpl (LCOM4 18): ImplicitFunctionInstantiationImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":29071}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e1cdf057f8d8d644ec8d297cb753d46b4b1848bc097d6d0f307e5bbcc033a68"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IncrementOrDecrementExpressionImpl (LCOM4 18): IncrementOrDecrementExpressionImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":30431}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1d2bef5ea4a979a8fbd5f599a70d5cf5ac9fc13a1b514d4e63dbc801b172f3e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidExtensionOverrideExpressionImpl (LCOM4 18): InvalidExtensionOverrideExpressionImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":32593}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b32cb0923b2cd7b5364d1db8aac8739c838fd9102e42405ca6981c121e4564e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidSuperExpressionImpl (LCOM4 18): InvalidSuperExpressionImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":33064}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea5a9544c06c3544c816d55cb3ffe83cdf73f043f01907f3fe7aa3e0d86a9b1a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IsExpressionImpl (LCOM4 18): IsExpressionImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":33354}}}],"partialFingerprints":{"codehealthFindingId/v1":"f79252014498d323f68438924330da731c3d6ef0bb756719a689fb32dd937b41"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LogicalAndImpl (LCOM4 18): LogicalAndImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":34690}}}],"partialFingerprints":{"codehealthFindingId/v1":"7403c2aaf569433653bef504f6e63807f0329289e6f20b27cf2a58704fc2505c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LogicalAndPatternImpl (LCOM4 18): LogicalAndPatternImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":34903}}}],"partialFingerprints":{"codehealthFindingId/v1":"8903a6b6c5301381d23bc19edd93a46f15f479d911700b94e6cae0133b778e35"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LogicalOrImpl (LCOM4 18): LogicalOrImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":35303}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a1efe9dcd4a5c6d08d7d3f16a3cb45b5341234c008ab18d1cc8484c4d629198"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MethodDeclaration2Impl (LCOM4 18): MethodDeclaration2Impl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":36597}}}],"partialFingerprints":{"codehealthFindingId/v1":"931b765621c63cb26ebc62b4008927c667166c4e8a75eb07a302bb70dfc54876"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParsedTypeArgumentsImpl (LCOM4 18): ParsedTypeArgumentsImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":42645}}}],"partialFingerprints":{"codehealthFindingId/v1":"732a9ed930f081d33bc706af0ad0990490ffb2e68c20eb77385af6d4eae27be6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParsedValueArgumentsImpl (LCOM4 18): ParsedValueArgumentsImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":43051}}}],"partialFingerprints":{"codehealthFindingId/v1":"d367052db4d90d99c4bcbfb580aac0b059fcce103d81d34fc328c2bf29db4397"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternAssignmentImpl (LCOM4 18): PatternAssignmentImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":43704}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0a7fb442d8126f23deab7694a9f733d165a0b002c12ff02de801ecd680d265"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrefixedIdentifierImpl (LCOM4 18): PrefixedIdentifierImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":44896}}}],"partialFingerprints":{"codehealthFindingId/v1":"de893565a3ee2a2e12bd0814e63adb0cd87f947a8a371efafa878b7d7638fd2d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReceiverIndexExpressionImpl (LCOM4 18): ReceiverIndexExpressionImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":46876}}}],"partialFingerprints":{"codehealthFindingId/v1":"59ad4c9caf8b78e4160addee56c268b2dd27b515ef149e8c009b1539e02133e2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableFragmentImpl (LCOM4 18): VariableFragmentImpl\u0027s methods fall into 18 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 18 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11839}}}],"partialFingerprints":{"codehealthFindingId/v1":"235b5f6902558a2887af9a4f85d70afda7ac0fe9b643752cc708109ad1ce10cd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DevCompilerTarget (LCOM4 18): DevCompilerTarget\u0027s methods fall into 18 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 18 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":"pkg/dev_compiler/lib/src/kernel/target.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"67db5dc66c86590b52ed687b3cd77e6e70c9ec5ad253873313236652efe04f0e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _EnumElementClassMember (LCOM4 18): _EnumElementClassMember\u0027s methods fall into 18 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 18 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":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"90692f574db487c754bff4a0143c5290c03f4d2124e53e4e7e6fced162d9c81f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceFactoryBuilder (LCOM4 18): SourceFactoryBuilder\u0027s methods fall into 18 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 18 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":"pkg/front_end/lib/src/source/source_factory_builder.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f48fb0b3d00d28c4cea5a94c2865244ccc844bc9c2d029de1ed29c1aa3ff42"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FutureValueTypeVisitor (LCOM4 18): FutureValueTypeVisitor\u0027s methods fall into 18 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 18 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":"pkg/kernel/lib/src/future_value_type.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce194631e46b679dceedfceef9a0f6fe23665454dc90abbd22c03fe8f813e07e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: A (LCOM4 17): A\u0027s methods fall into 17 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 17 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":"pkg/front_end/testcases/closure_context_lowering/this_variable.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"19dd386ba2fea9611ebd4b15febcf087ee950e6b88e713656b28e1e635fad90f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AllowedTypes (LCOM4 17): AllowedTypes\u0027s methods fall into 17 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 17 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":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":2373}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fbb08ca9c81875988565b9e11498e449f4bb7fb154e1375ab97d89dcd86f4b7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DateTime (LCOM4 17): DateTime\u0027s methods fall into 17 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 17 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":"sdk/lib/_internal/js_shared/lib/date_time_patch.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a97777bddab024752598ea6d8eb23cf61f33e56ba14a62fb28111867152c55"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BinaryExpressionImpl (LCOM4 17): BinaryExpressionImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":3873}}}],"partialFingerprints":{"codehealthFindingId/v1":"2467cce7f30d9c9feda553fe546f60b31a08e1cd6eb11eed758f9596f8f3f99b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BinaryOperatorInvocationImpl (LCOM4 17): BinaryOperatorInvocationImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":4127}}}],"partialFingerprints":{"codehealthFindingId/v1":"580cf579309cc2004bb163a7a6b2f97aee8a24129a18deb393aa3004418f8660"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CallInvocationImpl (LCOM4 17): CallInvocationImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":5357}}}],"partialFingerprints":{"codehealthFindingId/v1":"459c9d8ef17f71004a3270d5f019a71dc0ed787f61b1292c0ba5fbf7b200d595"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantPatternImpl (LCOM4 17): ConstantPatternImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":10512}}}],"partialFingerprints":{"codehealthFindingId/v1":"12daff014b60d1e03f6abcf9b736e656e24d2d81b39cf1f29d9b369b0297a96b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EnumConstantArgumentsImpl (LCOM4 17): EnumConstantArgumentsImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":16507}}}],"partialFingerprints":{"codehealthFindingId/v1":"62dc248f29cbd6c01cb9dae1ee0b2afddf3ab531ea55c09b19073594c5af404d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionTypeDeclarationImpl (LCOM4 17): ExtensionTypeDeclarationImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":19693}}}],"partialFingerprints":{"codehealthFindingId/v1":"8880f05e067b0aebc9aabb511fc6f0c8afd2587f2cb6d84aa98cc5c8ded2ab59"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionTypeAliasImpl (LCOM4 17): FunctionTypeAliasImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25427}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a951ce547bdb1ed933c444f2ab43271c122e6881efd082dbe5e4fd098b0f39"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImportPrefixedFunctionInvocationImpl (LCOM4 17): ImportPrefixedFunctionInvocationImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":29864}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1c423d36816291aa49146532eb8a81ace0ae3629dc755ee6eb2fdc0d26a4d52"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImportPrefixedNameExpressionImpl (LCOM4 17): ImportPrefixedNameExpressionImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":30090}}}],"partialFingerprints":{"codehealthFindingId/v1":"16dc752fd84d3596fa8a43f93f422d35144af0b39a6dbdefb39ff54d50721c79"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceCreationExpressionImpl (LCOM4 17): InstanceCreationExpressionImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":31431}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96682b128a848f7826848d1b4b5095e3f77e38352e1dfd0424cfee41983f3d3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LogicalNotImpl (LCOM4 17): LogicalNotImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":35125}}}],"partialFingerprints":{"codehealthFindingId/v1":"4330ab7b933645bb3a83e8be7f33a6c2054212f5c2c1418de2029fae0f3d1596"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LogicalOrPatternImpl (LCOM4 17): LogicalOrPatternImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":35516}}}],"partialFingerprints":{"codehealthFindingId/v1":"b867ceac62f9fc151598d0fac645d04ef1cf3904f0ceb2f1a631c9656efffd81"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapLiteralEntryImpl (LCOM4 17): MapLiteralEntryImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":35758}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5247d501601694d2368f3142678651cddcc256df8f62cbc909720acc94ce650"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullAssertionExpressionImpl (LCOM4 17): NullAssertionExpressionImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":40047}}}],"partialFingerprints":{"codehealthFindingId/v1":"df72a642e80aa60aa3e27d62500c7983e49c1317b6071902b2265d5ccd4a0530"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullAssertPatternImpl (LCOM4 17): NullAssertPatternImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":40225}}}],"partialFingerprints":{"codehealthFindingId/v1":"5892d45421c50b1cc564d143e113246e446d3d0c9fd96023523410d0eb2cb2fa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullCheckPatternImpl (LCOM4 17): NullCheckPatternImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":40591}}}],"partialFingerprints":{"codehealthFindingId/v1":"70741f719ef618469ec399ece009801c6fd49668f1c0176ab399bc5df2ca541c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: OperatorDeclarationImpl (LCOM4 17): OperatorDeclarationImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":41129}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f569c808aaa62da1451fba358cc472299d24d27fbdff3e49a2f91c83ac63c1a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParenthesizedPatternImpl (LCOM4 17): ParenthesizedPatternImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":41631}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e9e22f501f97b3e26d3c2be19cbb144cf0cbff02f18b6ce1bf2d6b338bd93ee"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParsedNameAccessImpl (LCOM4 17): ParsedNameAccessImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":42476}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0c28ac2064256fe8eb601672d243debaa8aadb8ab35b80b810dea379aa5aa57"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternFieldImpl (LCOM4 17): PatternFieldImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":43942}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f5eb9897d4176855a0e47635be3e67dd13291271e8ab01cdc55dd08a699c36a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReceiverMethodInvocationImpl (LCOM4 17): ReceiverMethodInvocationImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":47077}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3e6b2e3a561776c6cedcd4555ac86336a2617856db93ec51d4ffa72b7996701"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RelationalPatternImpl (LCOM4 17): RelationalPatternImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":49722}}}],"partialFingerprints":{"codehealthFindingId/v1":"f093bd392652d641ca8ed06b722fcc1576c6cd5c1114ef9f01dbdc68c8406a6a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetterDeclarationImpl (LCOM4 17): SetterDeclarationImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":50802}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed2f1c9970b9f92961e74548b8e1180815a89f14cc8c7f5d96ce980b7d286f0e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeLiteralImpl (LCOM4 17): TypeLiteralImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":56379}}}],"partialFingerprints":{"codehealthFindingId/v1":"f71d4c9be07a483aeb1d36b087534dfb48cd128c1e8a0b38338f80ab9da66d38"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnaryOperatorInvocationImpl (LCOM4 17): UnaryOperatorInvocationImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":56930}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1bbb60f285c725b00090a1b9460a7437e4202a417c7b0a03cff4148504916e5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableDeclarationImpl (LCOM4 17): VariableDeclarationImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":58128}}}],"partialFingerprints":{"codehealthFindingId/v1":"3241ef00c47f2ed9c8c7e14c045f3a8f5d8efd684a1ab2c707249fd3f8918635"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SubstitutedExecutableElementImpl (LCOM4 17): SubstitutedExecutableElementImpl\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/element/member.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4473e45bfef87017d44468900f9cbf9efcfcde641d250d45bcf2c53db7712c1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _PatternVariableBinderVisitor (LCOM4 17): _PatternVariableBinderVisitor\u0027s methods fall into 17 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 17 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":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":1595}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c4bdc1a63ba844818cdfe9d3315e780ae3443bbc310bc5f8a91fbce5d197606"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ScopeModelBuilder (LCOM4 17): ScopeModelBuilder\u0027s methods fall into 17 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 17 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":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"0990447dc8e8bfb2a5ae09a43b0509a39e2c506193615adb646c41e31e703b29"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Dart2jsTarget (LCOM4 17): Dart2jsTarget\u0027s methods fall into 17 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 17 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":"pkg/compiler/lib/src/kernel/dart2js_target.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a2cc1c5707739f942b5473dc9b2a5dd015e4176492c41ffcd73cfa62f86811e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HBasicBlock (LCOM4 17): HBasicBlock\u0027s methods fall into 17 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 17 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":800}}}],"partialFingerprints":{"codehealthFindingId/v1":"1211858fef6fb61e60bd058a67d505f724722ebe9984087c559c556fce40283e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _EnumValuesClassMember (LCOM4 17): _EnumValuesClassMember\u0027s methods fall into 17 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 17 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":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"57d938b616d30aaa83ad3fcf9dbc2c953624ad87c2e0a3d28fb4d55df4341569"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _AllFreeTypeVariablesVisitor (LCOM4 16): _AllFreeTypeVariablesVisitor\u0027s methods fall into 16 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 16 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":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"289a9ac22e434783c2e1121110990f7c37c71987dbc9d85e31e65ba3a6bb97b0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _StructuralParameterOccurrenceVisitor (LCOM4 16): _StructuralParameterOccurrenceVisitor\u0027s methods fall into 16 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 16 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":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1845}}}],"partialFingerprints":{"codehealthFindingId/v1":"b58ca9d426a8dd793cd2b9a5d4f22d05795a392ba9873db331af712cb87e0c4c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FakeStrategy (LCOM4 16): FakeStrategy\u0027s methods fall into 16 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 16 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":"pkg/dwds_test_common/lib/fixtures/fakes.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9964af658c13a1012914c8ed5338f82dc503afdbd95d823c0d37eeae104646b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AnonymousBlockBodyImpl (LCOM4 16): AnonymousBlockBodyImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd789e0263d2693e8f504188541f351cf08b8c671c99244b955661892da03531"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AwaitExpressionImpl (LCOM4 16): AwaitExpressionImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":3678}}}],"partialFingerprints":{"codehealthFindingId/v1":"48025bdd183f5155c5d16da23cd1b63cdab08908762129710f234702936971dc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CascadeMethodInvocationImpl (LCOM4 16): CascadeMethodInvocationImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6090}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f781b8f4abc153ce117917075f24f0135fbe27f15ea430b6e7cb16c220ed448"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CatchClauseImpl (LCOM4 16): CatchClauseImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7091}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3d0dd01d6fb9e6d4e25d26955636021a3ae5706235fd0b28fafe829c5341f1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassTypeAliasImpl (LCOM4 16): ClassTypeAliasImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":8211}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebff261a4da659e8e9d90e5ed7a234b3c8720ab3802ba0c17a9dcfd63622fa0c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorNameImpl (LCOM4 16): ConstructorNameImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":11818}}}],"partialFingerprints":{"codehealthFindingId/v1":"610a5d377bc06030da7cd70c51c3de03ff6a4d070342db321fed6a3ef54bb57f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DeclaredVariablePatternImpl (LCOM4 16): DeclaredVariablePatternImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13577}}}],"partialFingerprints":{"codehealthFindingId/v1":"026490d5d8687105731a0a5766b5a63c0f03c4ccdc29bebfaa842239d047a3db"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EnumDeclarationImpl (LCOM4 16): EnumDeclarationImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":16983}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4fbf9399402e57a2291cf78be3a69fac645d28976f91c6651375c6f611d8a03"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionOverrideImpl (LCOM4 16): ExtensionOverrideImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":19488}}}],"partialFingerprints":{"codehealthFindingId/v1":"c97c3539f589cda3e6c3cad606ba5dd49675d4151746eb25cfd151180d41a831"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForElementImpl (LCOM4 16): ForElementImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":21272}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed6201f2d5260cd248408fdc6da0cd22ff8416b07fa913a7e6d62ac5aa28682"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForPartsWithExpressionImpl (LCOM4 16): ForPartsWithExpressionImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":22802}}}],"partialFingerprints":{"codehealthFindingId/v1":"137b7b01e506d98d90b31b1bb3f24b714cc16fffc5afb982de04b6c6d49b2c16"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GetterDeclarationImpl (LCOM4 16): GetterDeclarationImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":26623}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c667f061791b7a20499c0ee09b7c880152bb89a5f4fab597bc9860ab5e5fa99"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GuardedPatternImpl (LCOM4 16): GuardedPatternImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":26897}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2bcd2687bee57b40ae4bdcea7ec465e5bbe2eea9c048d16a9e7ff2cb8c6f9a0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidExpressionAssignmentTargetImpl (LCOM4 16): InvalidExpressionAssignmentTargetImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":32264}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e3b7bd6aac40dd6c1a3fca847671be56062e24d5d95fcb08c7f08bef1b5c72b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidExtensionOverrideAssignmentTargetImpl (LCOM4 16): InvalidExtensionOverrideAssignmentTargetImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":32430}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1efc7590d386e42abf9c6cf72ef748b904ec6cdd26194a133c757e66162c19c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidSuperAssignmentTargetImpl (LCOM4 16): InvalidSuperAssignmentTargetImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":32913}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b5ace36669de12db60a1c574b92a1dd6208b32d654384f19a133aa70c09fd27"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapPatternEntryImpl (LCOM4 16): MapPatternEntryImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":36044}}}],"partialFingerprints":{"codehealthFindingId/v1":"150ff86addfcdedf8428c51fae42c8c194eccf7ac928cdfa08b2119cde3277be"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MethodDeclarationImpl (LCOM4 16): MethodDeclarationImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":36901}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d6bc61283b2c1db588b70ed41ad56608741b7a5303c62391a16ab283e9ce78"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MixinDeclarationImpl (LCOM4 16): MixinDeclarationImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":38044}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7810e0c100b014fe388cb54df5eb371f292aaf3cebc34481e0b09a9ed86ca2e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParenthesizedExpressionImpl (LCOM4 16): ParenthesizedExpressionImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":41414}}}],"partialFingerprints":{"codehealthFindingId/v1":"d812328fb9263be6abf946b144636c9914860462371a2ca7bb82073f021a2d00"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PostfixExpressionImpl (LCOM4 16): PostfixExpressionImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":44680}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a43d14ace11484bc7d61ad83b2699f9194d1fce8ee3ddcc80c01be938c6e319"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReceiverIndexAssignmentTargetImpl (LCOM4 16): ReceiverIndexAssignmentTargetImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":46680}}}],"partialFingerprints":{"codehealthFindingId/v1":"3be58b15651336524d03d00f18e227d96ca4a4da3ba971e90c5b993c221f9370"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReceiverPropertyExtractionImpl (LCOM4 16): ReceiverPropertyExtractionImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":47515}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f78b95b7b8e7a3973d013e198d36ca4e3ac9418277acdb379d82cd07ff498b7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RedirectingConstructorInvocationImpl (LCOM4 16): RedirectingConstructorInvocationImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":49194}}}],"partialFingerprints":{"codehealthFindingId/v1":"193f962f64b458745468ad1beb82f9151e68dfedd1e91ae42228540e47e8352f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SimpleIdentifierImpl (LCOM4 16): SimpleIdentifierImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":51304}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18b70fa45c795c68d7bf5c9e03bdaccc9b01875bee1d0c54f2f16b9e0c08e9e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SuperConstructorInvocationImpl (LCOM4 16): SuperConstructorInvocationImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52556}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf8244b2d431c657cf80700b35c47e68ca8130b48fb8137707ff62309ba41f1e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SwitchCaseImpl (LCOM4 16): SwitchCaseImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":53311}}}],"partialFingerprints":{"codehealthFindingId/v1":"4478da657d17573fc6761cd1ce07611538e5eb8ec71a0bb5ad91c40eb480e4da"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SwitchExpressionCaseImpl (LCOM4 16): SwitchExpressionCaseImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":53755}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2528b89a2ba9dda80e3d4a6a2675744c0ebf4dc22a1c4db28b843e740bc935"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ThrowExpressionImpl (LCOM4 16): ThrowExpressionImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":55000}}}],"partialFingerprints":{"codehealthFindingId/v1":"72432d96d083e12fe31a6f42dc056bb5e8f41117f1f0520be1803e759e08f510"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnqualifiedFunctionInvocationImpl (LCOM4 16): UnqualifiedFunctionInvocationImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":57115}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d05bed736b07d9c2c9a25bf698bd9fbc324a7e4a4a78120235110173dd0b44"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldElementImpl (LCOM4 16): FieldElementImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3360}}}],"partialFingerprints":{"codehealthFindingId/v1":"2045558bb575ec39f4df3fe30e05d80a00431881eababf35dc9a641b8978e54d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableElementImpl (LCOM4 16): VariableElementImpl\u0027s methods fall into 16 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 16 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11657}}}],"partialFingerprints":{"codehealthFindingId/v1":"c61e2cd061a94e4fc8bdf161a5902d92633db01190a3016cce29cf2958ed847b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidTypeBuilderImpl (LCOM4 16): InvalidTypeBuilderImpl\u0027s methods fall into 16 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 16 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":"pkg/front_end/lib/src/builder/invalid_type_builder.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"864c09cb3cc9fcb15e22ed3e24a258a870974e30d8adcb1ee32ba26fdf2a7ac4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VoidTypeBuilder (LCOM4 16): VoidTypeBuilder\u0027s methods fall into 16 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 16 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":"pkg/front_end/lib/src/builder/void_type_builder.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4158da51ca122ae4aad8e8a5ceb0ebca461762bf003bafbe4318b1893a2c1e5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Constructor (LCOM4 16): Constructor\u0027s methods fall into 16 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 16 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":"pkg/kernel/lib/src/ast/members.dart"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eeb2dba67913797efb4e04669cd37d290900804ee03d5061224091cf9a7e0af"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: OccurrenceCollectorVisitor (LCOM4 16): OccurrenceCollectorVisitor\u0027s methods fall into 16 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 16 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":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"99034e47d8aa9b37dd1bb9cdb8131d50c3a6f496e8be473dae4ff4db381d9132"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ConstantTreeShaker (LCOM4 16): _ConstantTreeShaker\u0027s methods fall into 16 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 16 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":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2664}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d893c8eb609b8f9d558af1b95f1ea176b780a4640f6f3f307889174147e9251"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ExpressionTransformer (LCOM4 15): _ExpressionTransformer\u0027s methods fall into 15 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 15 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":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":627}}}],"partialFingerprints":{"codehealthFindingId/v1":"35fb583c7d347450447eb745f01f4a2f4402542fd2eccc18504ae59c6cfec445"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: C (LCOM4 15): C\u0027s methods fall into 15 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 15 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":"pkg/front_end/testcases/general/non_covariant_checks.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"721c0810f7a6b9f0ef3abed57750741d4d39ea9ddcc6a94f9a206760680ca1d8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AstToIrTypes (LCOM4 15): AstToIrTypes\u0027s methods fall into 15 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 15 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":"pkg/cfg/lib/front_end/ast_to_ir_types.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"8769379e59950971af249fc27cb894103a04eb548e1ec99e839442de22d0f7a2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AnalysisServer (LCOM4 15): AnalysisServer\u0027s methods fall into 15 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 15 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":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b55ac49c162fdfd883afdf8f176d1b911392cbcf70f1e372cd92a40150c78c0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AnonymousExpressionBodyImpl (LCOM4 15): AnonymousExpressionBodyImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4e9b4857157a4618d431ee994bac54d1f7a557be46324dc7edbbbbe4511aa05"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AssertInitializerImpl (LCOM4 15): AssertInitializerImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":1930}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cb61efb6af0eed991f5b78be71f92dbaa0d3484a6ec17dac56f23f4f90de8df"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AssertStatementImpl (LCOM4 15): AssertStatementImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":2213}}}],"partialFingerprints":{"codehealthFindingId/v1":"d064e085f4ff55383b03d915441d0bd5014ea7f4b1b698a43c664ec2deda1843"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CascadeSectionImpl (LCOM4 15): CascadeSectionImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6493}}}],"partialFingerprints":{"codehealthFindingId/v1":"321f44217c0f8903d3a7c66486dac1dcc62efb73f881ef3eafd3ff17116abbb5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConfigurationImpl (LCOM4 15): ConfigurationImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":10211}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d818858d029afdc5cd41af6203e39ecefa6baa588ef2cf08f53070b78939ace"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorTypeReferenceImpl (LCOM4 15): ConstructorTypeReferenceImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":12824}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f111eaeea17d48656c848134f8b6177018ecd280d8abfdcd97218ab180c899e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DotShorthandMethodInvocationImpl (LCOM4 15): DotShorthandMethodInvocationImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":15324}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b44948a3305f72b0296ebd556f377bbca8562ab311cb302a5b74f5aeb290607"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionDeclarationImpl (LCOM4 15): ExtensionDeclarationImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18699}}}],"partialFingerprints":{"codehealthFindingId/v1":"376e37cfb88470fdea7ca13378792f7caf480c320d125f65b736ef52ea6802f3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForEachPartsWithDeclarationImpl (LCOM4 15): ForEachPartsWithDeclarationImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20652}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f1bd6ac25e1aeb457fcfa4c91709ff626c7f93bcadb3102d706c9a51ccea24f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForPartsWithDeclarationsImpl (LCOM4 15): ForPartsWithDeclarationsImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":22563}}}],"partialFingerprints":{"codehealthFindingId/v1":"01eede16dae18501e68b4bf43769c03cb6655556ac4c24965f3c966bf9de65dd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForPartsWithPatternImpl (LCOM4 15): ForPartsWithPatternImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":23059}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0303f2e50216164daf49a4632bd00cfa6035758696f829d41963d28ad4353c7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionDeclarationStatementImpl (LCOM4 15): FunctionDeclarationStatementImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24047}}}],"partialFingerprints":{"codehealthFindingId/v1":"8341e090ae95dbf763af3af14400eeab3cd74e55edccb4c5e82a71030a83eb4e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GenericTypeAliasImpl (LCOM4 15): GenericTypeAliasImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":26355}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d1eb37d40a8d059994ed9239d868983aa8da2975d4b8c562415b8ae5c88a363"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImportPrefixedAssignmentTargetImpl (LCOM4 15): ImportPrefixedAssignmentTargetImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":29671}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4626dbc34fe7819f9ed98be8b2e4b8993cb78f1a5528de0399dfdbb4a412cb9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullAwareElementImpl (LCOM4 15): NullAwareElementImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":40413}}}],"partialFingerprints":{"codehealthFindingId/v1":"82e25f3a72af10b8c6c24c4ccfce37a94d1b1f6af21718c4053e4c71b9099144"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParsedNameAccessAssignmentTargetImpl (LCOM4 15): ParsedNameAccessAssignmentTargetImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":42312}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ece2dfa43bda87cbd45c71738eaaeff7dc430fb2e863369b6ef417d35033f27"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternVariableDeclarationImpl (LCOM4 15): PatternVariableDeclarationImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":44265}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ccb35159acb70be5b2667e34808aa8ce32196ce396d0835e21ad48caacc2348"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrefixExpressionImpl (LCOM4 15): PrefixExpressionImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":45193}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0ecb00da0898f56dba9002c681d302ee2060bf0339346d24c919de64175cd22"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReceiverPropertyAssignmentTargetImpl (LCOM4 15): ReceiverPropertyAssignmentTargetImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":47299}}}],"partialFingerprints":{"codehealthFindingId/v1":"30552f9109fdcdd457280e3d69dee666e68cc034b87cc4ca3f6ca54f20cdc18b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SimpleStringLiteralImpl (LCOM4 15): SimpleStringLiteralImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":51603}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f0a20d3813c20e297bdff87eff0c57bbb967da21c0097615140f9f96b097c0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SpreadElementImpl (LCOM4 15): SpreadElementImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":51774}}}],"partialFingerprints":{"codehealthFindingId/v1":"831d403f5a4a8b6c2c8431dcd2af2a868189f2ca36d249c6c412f196ab60d050"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SuperExpressionImpl (LCOM4 15): SuperExpressionImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52772}}}],"partialFingerprints":{"codehealthFindingId/v1":"68f09593de2a10112d11d74094db6e216a6fffa90c1b7233d955a211325528eb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SwitchPatternCaseImpl (LCOM4 15): SwitchPatternCaseImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":54271}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d160d0d416ec8f64247e0a388e5a4b3394dd27a5995f3805205e6886f61c68d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TopLevelGetterDeclarationImpl (LCOM4 15): TopLevelGetterDeclarationImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":55225}}}],"partialFingerprints":{"codehealthFindingId/v1":"d059eccc4fe72e2272fc3240e10e4747dda6c788ce77acdb59df385e3fe135b1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WhileStatementImpl (LCOM4 15): WhileStatementImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":59077}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1de76e60e9facd7afbb314545b5a61aa8a4ff58edbf1b52c78e6a2b35c9d540"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WildcardPatternImpl (LCOM4 15): WildcardPatternImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":59304}}}],"partialFingerprints":{"codehealthFindingId/v1":"39a1d15eb5d80d37c77b2c053618b62f03428850ee3ee486d716ff37cdaad721"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FormalParameterElementImpl (LCOM4 15): FormalParameterElementImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3899}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8004e2606cca39262c00d9fba3cb5cfdb45a6266c0edf0d5703cc0da0017777"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FragmentImpl (LCOM4 15): FragmentImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":4395}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f1756ad85f97d5f8c44b0ae5b9376dcd62c88bf0a0dd9a00594e3798f3f9587"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MultiplyDefinedElementImpl (LCOM4 15): MultiplyDefinedElementImpl\u0027s methods fall into 15 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 15 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":9322}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dbf3e2a16a07ded8832feb8e8b85c87870228e62483b1a9f1803eed439c226b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AsyncRewriterBase (LCOM4 15): AsyncRewriterBase\u0027s methods fall into 15 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 15 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":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"880329101ac874f5c4ec794eda3011a22b50ad025e8a8146c440b4694050f53f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MemberUsage (LCOM4 15): MemberUsage\u0027s methods fall into 15 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 15 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":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c2ca3ef7d91a21e3cf31fb5ca65fc4de8f988c2004bfc539075a0a314e39d6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _MethodClassMember (LCOM4 15): _MethodClassMember\u0027s methods fall into 15 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 15 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":"pkg/front_end/lib/src/source/source_method_builder.dart"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"e39e05580097584c83204ddfc2a3df1f0bffaefeb7400f1d7f3a9a49bc2da8b9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GetterClassMember (LCOM4 15): GetterClassMember\u0027s methods fall into 15 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 15 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":"pkg/front_end/lib/src/source/source_property_builder.dart"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cb89c14b77a408b37c0ddb3b58f404e905520045c6283ab2d27023c8e4bd81b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetterClassMember (LCOM4 15): SetterClassMember\u0027s methods fall into 15 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 15 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":"pkg/front_end/lib/src/source/source_property_builder.dart"},"region":{"startLine":695}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ba636565abc9a97fa627473650d9964284b418e4490129e5efb04ac2f147cd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CoverageVisitor (LCOM4 15): CoverageVisitor\u0027s methods fall into 15 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 15 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":"pkg/kernel/lib/src/coverage.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b4c1bc26a869aa60dc29c9481a64413292c698679ed608be21749a119549f5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocalVariables (LCOM4 14): LocalVariables\u0027s methods fall into 14 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 14 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":"pkg/dart2bytecode/lib/local_vars.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"c43e7153d0458baec3b946f059d18538639b628bba2bd01ef8b05a532e26b51d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionTypeInstantiator (LCOM4 14): FunctionTypeInstantiator\u0027s methods fall into 14 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 14 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":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1497}}}],"partialFingerprints":{"codehealthFindingId/v1":"1be00246538af3f48b7bd0a8c7c6145df1dffd261388fc754a8c1d1af21fb71b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JSDataViewImpl (LCOM4 14): JSDataViewImpl\u0027s methods fall into 14 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 14 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":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"372d3b8672c0f5b91eaa6750ff3a82bf9d0d4680589dec64fc0933fb2b136726"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Arm64Assembler (LCOM4 14): Arm64Assembler\u0027s methods fall into 14 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 14 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":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"25b78dadc716b85c622002db6a50d774b58cce82df48dc8824403a18f2255e0c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantPropagation (LCOM4 14): ConstantPropagation\u0027s methods fall into 14 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 14 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":"pkg/cfg/lib/passes/constant_propagation.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"c80ab7967721c0352cc28ea7440a6c4d724ef66a8f874993ce87a08a8965f01d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AssignedVariablePatternImpl (LCOM4 14): AssignedVariablePatternImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":2477}}}],"partialFingerprints":{"codehealthFindingId/v1":"f577f4bb857116d8d1ee9c8b450559ad2386452e8296d8197f5db1712134b0ef"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BlockFunctionBodyImpl (LCOM4 14): BlockFunctionBodyImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":4736}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e1adb79020fc655976587ff92d34236d98080efeeee868081ef2d78013613e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CommentReferenceImpl (LCOM4 14): CommentReferenceImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":8942}}}],"partialFingerprints":{"codehealthFindingId/v1":"ece2355164020357b56e26f8d2a8c8b8fb1a18f899eecbc2f922de309328066e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorFieldInitializerImpl (LCOM4 14): ConstructorFieldInitializerImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":11280}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf7451ae2b2c71aa8c62c92a8b43d66e1b6fa97c5ac5b2dacb4ddc487b1c0178"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DoStatementImpl (LCOM4 14): DoStatementImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":14227}}}],"partialFingerprints":{"codehealthFindingId/v1":"871c6a3e7cbf1060f64beae11433191dfffae1ef544bc2ecd98af42128243026"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExpressionFunctionBodyImpl (LCOM4 14): ExpressionFunctionBodyImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17693}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0289434b93b109e8a0ee9646a583c7b46a4dcf2ac08f4f9eb4c1d453b445b4a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldFormalParameterImpl (LCOM4 14): FieldFormalParameterImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20259}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b7d93d4e4831483ee38cfd1c7e94134e8af9874b2d88250d5d527f378750ab6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForEachPartsWithIdentifierImpl (LCOM4 14): ForEachPartsWithIdentifierImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20844}}}],"partialFingerprints":{"codehealthFindingId/v1":"664d2cde009d0bc1ddb3f48e515c67318624c7928876f5e62af76f021433f243"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FormalParameterDefaultClauseImpl (LCOM4 14): FormalParameterDefaultClauseImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":21687}}}],"partialFingerprints":{"codehealthFindingId/v1":"6206f275973917dccc34c6ddf4db312b9387e53a6a87824e57c0ba0c33241742"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForStatementImpl (LCOM4 14): ForStatementImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":23291}}}],"partialFingerprints":{"codehealthFindingId/v1":"569a5868f3d107df1537690f2ad817f09d1d77b18f5fec07e7ffb7262513e673"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionTypedFormalParameterSuffixImpl (LCOM4 14): FunctionTypedFormalParameterSuffixImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":25705}}}],"partialFingerprints":{"codehealthFindingId/v1":"27226be9e42bb882c625b2de4c68de1c96a1502bbb8ac7d651976e61f347565c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GenericFunctionTypeImpl (LCOM4 14): GenericFunctionTypeImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":26073}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce32808a885f86b13cf1f0537afc1242aa4c6d95e19271e9935e2f9271635024"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NamedArgumentImpl (LCOM4 14): NamedArgumentImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":38548}}}],"partialFingerprints":{"codehealthFindingId/v1":"5056f13e5bc69fd9075099851d779ee6ba016892606ad4bc6dd103f8e9f86dbd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PropertyAccessImpl (LCOM4 14): PropertyAccessImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":46142}}}],"partialFingerprints":{"codehealthFindingId/v1":"2171c6aee2041d79d57dad45802b5965475c37e7e556f7c0a31acae4651f17d1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordLiteralNamedFieldImpl (LCOM4 14): RecordLiteralNamedFieldImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":47980}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be31bd8cc295c94244534ee1fe40c2e882c60355229cd0649d724e9b1ce921e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StaticQualifierImpl (LCOM4 14): StaticQualifierImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52008}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e4f220a958fce70d0be62c4b28200681ca35df6f41ed47bfbead12e8908b652"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SuperFormalParameterImpl (LCOM4 14): SuperFormalParameterImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52907}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ed7c0419a30059ef75b28fd641b183df1b38cb4f893e2310978cc3f47f5f1d0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WhenClauseImpl (LCOM4 14): WhenClauseImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":58895}}}],"partialFingerprints":{"codehealthFindingId/v1":"be3806615f25aeb38ebc9c398685cdc7971b9ccc88a0d0388c4e4a6bfe0b7c7b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FormalParameterFragmentImpl (LCOM4 14): FormalParameterFragmentImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":4112}}}],"partialFingerprints":{"codehealthFindingId/v1":"83dae9fb9a3240a8926d717348fce25c295ca250455a668aec3ca58069176436"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeAliasElementImpl (LCOM4 14): TypeAliasElementImpl\u0027s methods fall into 14 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 14 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11116}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c34e88620be4f5ff5f9a2889ec2f8f69d7c5cd91d7af83213ab5edbe0f0ea4d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ConstantOrdering (LCOM4 14): _ConstantOrdering\u0027s methods fall into 14 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 14 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":"pkg/compiler/lib/src/js_emitter/constant_ordering.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"8354ad55e7f208d34efed654c86715f4a08c3c46f706279411f8a3f705349886"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaLoadElimination (LCOM4 14): SsaLoadElimination\u0027s methods fall into 14 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 14 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":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4389}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d7017c8435340668c59d428445a9aa048ecc6b6960df8eefa4b7cb89bbf6155"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DdcStrategy (LCOM4 14): DdcStrategy\u0027s methods fall into 14 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 14 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":"pkg/dwds/lib/src/loaders/ddc.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fce1bd91e0b1557a4ae33a0d3f8d86f1c9ab00e4551cd2e66a543c23b4b29eb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DdcLibraryBundleStrategy (LCOM4 14): DdcLibraryBundleStrategy\u0027s methods fall into 14 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 14 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":"pkg/dwds/lib/src/loaders/ddc_library_bundle.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"8628e89a4daff5fd676c893c420b81759edb04a984d87e71fe1d650d1259f73a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RequireStrategy (LCOM4 14): RequireStrategy\u0027s methods fall into 14 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 14 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":"pkg/dwds/lib/src/loaders/require.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf301b227abb10dd84a2522f1c3c420b77ff99b8c5eeb3ac14a41dd96953ccb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DefaultEnumConstructorDeclaration (LCOM4 14): DefaultEnumConstructorDeclaration\u0027s methods fall into 14 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 14 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":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":1094}}}],"partialFingerprints":{"codehealthFindingId/v1":"a97267a2b84e672620465d552e0ea7f2ed8d663786eb0409e4733d2525081672"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HierarchicalApiVisitor (LCOM4 13): HierarchicalApiVisitor\u0027s methods fall into 13 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 13 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":"pkg/analysis_server/tool/spec/api.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"14193c26bb4c36823298c74f5e7117abed3b1a830a5f170e315140284d4cac11"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HierarchicalApiVisitor (LCOM4 13): HierarchicalApiVisitor\u0027s methods fall into 13 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 13 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":"pkg/analyzer_plugin/tool/spec/api.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"de9a8eaa45df4c970c5208d9869875add45b4b62b55c553b487e6d21a2636500"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NodeCounter (LCOM4 13): NodeCounter\u0027s methods fall into 13 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 13 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":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":3489}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c4586f17b3545b06b4bd372702b1db971a7d917d0be18bc6add52c74141e6bb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JSArrayBase (LCOM4 13): JSArrayBase\u0027s methods fall into 13 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 13 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":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e8a0c76328df29c0816e873799aece7863f67f28f500df346b13e86a17f3563"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CodeGenerator (LCOM4 13): CodeGenerator\u0027s methods fall into 13 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 13 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":"pkg/native_compiler/lib/back_end/code_generator.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2e6638ab39766d4f6eb57436f007366b42fda001f74e115992235988da620fb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TestPluginManager (LCOM4 13): TestPluginManager\u0027s methods fall into 13 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 13 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":"pkg/analysis_server/lib/src/utilities/mocks.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b8aef579f28188ff42d2209a52a0474ff7771f732bb44fd84fa63f55d544832"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CascadePropertyExtractionImpl (LCOM4 13): CascadePropertyExtractionImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6379}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e16e80a59ecf64575be2f77359c93ab58a474d836b1e498fc44bc4afb7ba6ad"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CaseClauseImpl (LCOM4 13): CaseClauseImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6664}}}],"partialFingerprints":{"codehealthFindingId/v1":"48946d06fad88c537cb3e1d2b3a2880babd61b4e5bfc88146c410ed8b009c32a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExpressionStatementImpl (LCOM4 13): ExpressionStatementImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18345}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee69c252b1a1a2240f474b493de678dcf258c8eefcf61692e84e17e92ccbde5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtendsClauseImpl (LCOM4 13): ExtendsClauseImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18523}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b809b86072193131d692eb1645b23345be08581a11126ee9e6551f44eeddd27"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionOnClauseImpl (LCOM4 13): ExtensionOnClauseImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18992}}}],"partialFingerprints":{"codehealthFindingId/v1":"019e191b07e02f41f1678bc74c5188fdaeef1456e5032e46ff43085ac9e7fecd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldDeclarationImpl (LCOM4 13): FieldDeclarationImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":20023}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f4bf2c782baa99034663605c53af26ad2bab91dcea5b6a5bca3df862454b4e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolationExpressionImpl (LCOM4 13): InterpolationExpressionImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":31917}}}],"partialFingerprints":{"codehealthFindingId/v1":"1afcfc1a5d20d72a988c28f4c119a1d0d6689ad385472482836b1d1ee38454e9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NativeFunctionBodyImpl (LCOM4 13): NativeFunctionBodyImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":39623}}}],"partialFingerprints":{"codehealthFindingId/v1":"299a7a3859767065c548ea8b0367efe7239d6bec1fde2ff6e68bd6003c538513"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PartOfDirectiveImpl (LCOM4 13): PartOfDirectiveImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":43461}}}],"partialFingerprints":{"codehealthFindingId/v1":"18a26847144bf91660ef257f9bb178ad85f9d5f66f53e902750275a7adeccdcc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternVariableDeclarationStatementImpl (LCOM4 13): PatternVariableDeclarationStatementImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":44509}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c27d1da8dfe905d0ba0294aa0d0da123651c559dbc0a98bbca902ccf78ee99"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReturnStatementImpl (LCOM4 13): ReturnStatementImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":50195}}}],"partialFingerprints":{"codehealthFindingId/v1":"76a8fbc0aafb45569f37208dcc1d794f98265db92c47ebd6edcd7dd9918e9cb8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TopLevelVariableDeclarationImpl (LCOM4 13): TopLevelVariableDeclarationImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":55581}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8206c837980a7e26a3fb0618a27eb7e2cc9ddae5a8d82fc8cc6631b11e7e5a0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableDeclarationStatementImpl (LCOM4 13): VariableDeclarationStatementImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":58663}}}],"partialFingerprints":{"codehealthFindingId/v1":"61b8c84715af4ae32c00f8dfc1089d9a50ecd66c85ab3a4e797b14f6dc56a17f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: YieldStatementImpl (LCOM4 13): YieldStatementImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":59717}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed1d16bf9ef025161b9be2a23362a7eb261ceff4112e8505f9a232b622d1246b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetterElementImpl (LCOM4 13): SetterElementImpl\u0027s methods fall into 13 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 13 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":10384}}}],"partialFingerprints":{"codehealthFindingId/v1":"d059461fc1177414a0902167512a81cd709908e1e94e75b2ecf5c762e29cefde"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HInstruction (LCOM4 13): HInstruction\u0027s methods fall into 13 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 13 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1146}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e725f22d990a25f0d68632f0188bc102896fe8003c1f4f98b27a19f2897786a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FixedTypeBuilderImpl (LCOM4 13): FixedTypeBuilderImpl\u0027s methods fall into 13 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 13 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":"pkg/front_end/lib/src/builder/fixed_type_builder.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd64d9f268b4f68ab42aba18b453ad2203bbe34bbdbc47f10978425c59a4303a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceMethodBuilder (LCOM4 13): SourceMethodBuilder\u0027s methods fall into 13 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 13 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":"pkg/front_end/lib/src/source/source_method_builder.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"a27ae4d2ff8494534f94afe1ca6572a43109c13da196997c5ab7fd6ecf8f7fad"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IncludesTypeParametersNonCovariantly (LCOM4 13): IncludesTypeParametersNonCovariantly\u0027s methods fall into 13 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 13 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":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c78b875250222c711a125b0be990f1f1398b6cae4a0037a332b190c2bb45b6d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Field (LCOM4 13): Field\u0027s methods fall into 13 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 13 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":"pkg/kernel/lib/src/ast/members.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"b173c35785366015e18e7a63f7f9410254cc573902654d2577c149a05c5ebaa2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FindFreeTypeParametersVisitor (LCOM4 12): FindFreeTypeParametersVisitor\u0027s methods fall into 12 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 12 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":"pkg/dart2bytecode/lib/generics.dart"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"f658b083a174911b1f15f3b29c1772f17d3d2789981e70985c859e6fc3862339"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartType (LCOM4 12): DartType\u0027s methods fall into 12 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 12 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":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1049f54b0d2167cd7340bea48f2c29e42e8e4cb2ef8312c3c5069a21f883df2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartTypeNoFp (LCOM4 12): DartTypeNoFp\u0027s methods fall into 12 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 12 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":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":173148}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d611cde1e63b6eba422008472e2cd4a85ccc8a8f93606e8bcccc1cec59b517e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartTypeFlatTp (LCOM4 12): DartTypeFlatTp\u0027s methods fall into 12 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 12 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":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":237028}}}],"partialFingerprints":{"codehealthFindingId/v1":"df9293c68a255b04d01efe593caaa09f3471ea875c0433db74541f3a9e418c4f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartTypeNoFpFlatTp (LCOM4 12): DartTypeNoFpFlatTp\u0027s methods fall into 12 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 12 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":"runtime/tools/dartfuzz/dartfuzz_type_table.dart"},"region":{"startLine":261194}}}],"partialFingerprints":{"codehealthFindingId/v1":"365d60ef0d28909c6945aab5a155713f7db471ce40813ae5046aa18647f78b6f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ClassMirror (LCOM4 12): _ClassMirror\u0027s methods fall into 12 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 12 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":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee199683f3206154720b93fb43cfd6996cadf079c4e5a09a45dd2f50e47c96c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DateTime (LCOM4 12): DateTime\u0027s methods fall into 12 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 12 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":"sdk/lib/_internal/vm_shared/lib/date_patch.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a082aeede8861dee4becfcb6879b7b2c40155ed8370b64ef8a539e36c1cdbae"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LegacyAnalysisServer (LCOM4 12): LegacyAnalysisServer\u0027s methods fall into 12 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 12 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":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"2432fcf7bcd94371b2e67b38f436777946cd92f72659ff7da36060e5fe26bc66"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BreakStatementImpl (LCOM4 12): BreakStatementImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":5189}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0809171b15abc1bad9d540313b781428b67e1623b5e8acb36d7bbc77abe653f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CascadePropertyAssignmentTargetImpl (LCOM4 12): CascadePropertyAssignmentTargetImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":6267}}}],"partialFingerprints":{"codehealthFindingId/v1":"f74dad41e8f4d2faf08fa828198c2f3973e47576390d4bb1b53abde331eff0d2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompilationUnitImpl (LCOM4 12): CompilationUnitImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":9226}}}],"partialFingerprints":{"codehealthFindingId/v1":"b99d8a4c35ddd7b77e4d6e9a1d608aa806b0ff69c52d36c66a74e3c9cf9b200c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ContinueStatementImpl (LCOM4 12): ContinueStatementImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13058}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbaef211154fe051cfece89b8e0dae54dae82e5523c511329ea50779f7010fb8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DeclaredIdentifierImpl (LCOM4 12): DeclaredIdentifierImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13371}}}],"partialFingerprints":{"codehealthFindingId/v1":"d05c67307e87cfdfc2af77e98033b132f6f76e41257d9ae1029b9d1ed639c8bf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DotShorthandNameExpressionImpl (LCOM4 12): DotShorthandNameExpressionImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":15513}}}],"partialFingerprints":{"codehealthFindingId/v1":"86e369b222f4cce0ce30acb2b51a07aefd282be0658f7e272b9c8b078a4fc8a1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EnumConstantDeclarationImpl (LCOM4 12): EnumConstantDeclarationImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":16766}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7ba56ccfccd2ac83cbae0dc626d52358db72db8a230be0a1c613b65d655c9db"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExportDirectiveImpl (LCOM4 12): ExportDirectiveImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17362}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c235b8248b7903661733093803c7c4d5f9d63f1a107412650429ed04a816924"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImportDirectiveImpl (LCOM4 12): ImportDirectiveImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":29355}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5527c82f1e95cc5f09ca8a40d6332a1fdb9340ec9600e1046fdf892a5da631f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IntegerLiteralImpl (LCOM4 12): IntegerLiteralImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":31712}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6801c8ba1ee6963fe93a8641bcfdd3c05ca61eea89406abc95a18dde311fd45"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryDirectiveImpl (LCOM4 12): LibraryDirectiveImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":33971}}}],"partialFingerprints":{"codehealthFindingId/v1":"d812b03c5938cff96c4b99250c7a36b608eb8170ce1b2a5862eee19a7d029824"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NameWithTypeParametersImpl (LCOM4 12): NameWithTypeParametersImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":39285}}}],"partialFingerprints":{"codehealthFindingId/v1":"df1c87a6852a1d65d870bf0d0ca88728092a495a342d24ad2e3312a7f8bc8742"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NativeClauseImpl (LCOM4 12): NativeClauseImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":39453}}}],"partialFingerprints":{"codehealthFindingId/v1":"a45ef8bf6d7b143f5015e33d280bafb7699bb5fbc140cb734dcdb21db15b2f67"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParsedCascadeNameImpl (LCOM4 12): ParsedCascadeNameImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":41854}}}],"partialFingerprints":{"codehealthFindingId/v1":"8276f929b0b91ff512b442ff2314679da45343244cf89b185c21fc308096c78f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParsedUnqualifiedNameImpl (LCOM4 12): ParsedUnqualifiedNameImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":42938}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d9001f1d17bca7c30441f0d87f762c1c71ad920cbffada9770e8f0b633a6125"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordTypeAnnotationNamedFieldImpl (LCOM4 12): RecordTypeAnnotationNamedFieldImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":48667}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0b72a97f28fba2a74d70b0d90a37bd2ad757e98524a174d7b5e0ad0cc3dad79"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordTypeAnnotationPositionalFieldImpl (LCOM4 12): RecordTypeAnnotationPositionalFieldImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":48998}}}],"partialFingerprints":{"codehealthFindingId/v1":"116a35bff680e90b7d279660ad4dd4ff9bc18fc716cb632cabd2bece4e5dd7da"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RestPatternElementImpl (LCOM4 12): RestPatternElementImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":49921}}}],"partialFingerprints":{"codehealthFindingId/v1":"42f15e4d425de6f4e7fefe6d90ee7dbd177b2a6fd6340058bf60dd5e15c9a1e8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeParameterImpl (LCOM4 12): TypeParameterImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":56544}}}],"partialFingerprints":{"codehealthFindingId/v1":"659eee9bc280ab94fdf7a972f2afb56b6bf129e64f491482f44aa5f6fcb2b7be"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnqualifiedNameExpressionImpl (LCOM4 12): UnqualifiedNameExpressionImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":57434}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3fbb72a1f7fc9b13be54263cf883138d07e682183762b78de9c2de281cdc18"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PropertyInducingElementImpl (LCOM4 12): PropertyInducingElementImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":10070}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a76863caa3a757cda9cf1cf9247550b10dbeae83a64c76b5a31b33472cc4cc8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SubstitutedVariableElementImpl (LCOM4 12): SubstitutedVariableElementImpl\u0027s methods fall into 12 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 12 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":"pkg/analyzer/lib/src/dart/element/member.dart"},"region":{"startLine":884}}}],"partialFingerprints":{"codehealthFindingId/v1":"cff23ad3c1413e923347ec43a0d8d536ce7db6024d4f322e9f49349a776f66b5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _OpTypeAstVisitor (LCOM4 12): _OpTypeAstVisitor\u0027s methods fall into 12 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 12 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":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a5bc0e1a26c774e0be6c040cc18fe9bba56c98d1426833554cec353361842a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantValuefier (LCOM4 12): ConstantValuefier\u0027s methods fall into 12 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 12 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":"pkg/compiler/lib/src/ir/visitors.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89a96dfdbdb07a2ed3442bc99df7c3ddc58cdda6314b080aa710a15d8d8c7c0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedMethod (LCOM4 12): InterpolatedMethod\u0027s methods fall into 12 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 12 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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":2148}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8745bc6dcfc4789019274f6f83a52b5d79c92ec5965ee4c9d42266445b35b8a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TypeBuilderComputerHelper (LCOM4 12): _TypeBuilderComputerHelper\u0027s methods fall into 12 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 12 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":"pkg/front_end/lib/src/kernel/type_builder_computer.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e2ec6b5c1c59cb5b22f13034f4562a8385c94cecd216da8be5649a208e62392"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ObjectAccessTarget (LCOM4 12): ObjectAccessTarget\u0027s methods fall into 12 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 12 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":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffd3bf0aae9f9f016b32891c0e3288498df88c4132f738f5c46eead7b6b99dc5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Procedure (LCOM4 12): Procedure\u0027s methods fall into 12 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 12 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":"pkg/kernel/lib/src/ast/members.dart"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7d70a208f0cd8c354f433728e37469dac1305560652081768355a82afdc290"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantReplacer (LCOM4 12): ConstantReplacer\u0027s methods fall into 12 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 12 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":"pkg/kernel/lib/src/constant_replacer.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"028d4dbaf5097bf952e4ae0b9fbac914d92580b3d28e730b663734826f6e42b3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LinkEntry (LCOM4 11): LinkEntry\u0027s methods fall into 11 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 11 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":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89e2b6d2147f5cc7bd7d2fe90a4fa5171fad0d35964f4d709f42f557999f750"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ErrorNotingLogger (LCOM4 11): ErrorNotingLogger\u0027s methods fall into 11 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 11 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":"pkg/front_end/presubmit_helper_spawn.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"f63a7670f22672c26f14444870b39b1d15b4f7f53eff4349867e73290c9c6bca"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TimerCounterInstrumenterConfig (LCOM4 11): TimerCounterInstrumenterConfig\u0027s methods fall into 11 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 11 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":"pkg/front_end/tool/flame/instrumenter.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"de3bd34134310b9ca0c92f034f9311d26be2181c7753eb636077c911408ed0d9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: I32x4 (LCOM4 11): I32x4\u0027s methods fall into 11 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 11 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":"sdk/lib/_internal/wasm/common/simd.dart"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dcf1e09b420b5875e0fa27f673d5ddea069dc33675533019c15e7240df5dbe1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ChildrenElementList (LCOM4 11): _ChildrenElementList\u0027s methods fall into 11 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 11 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":"sdk/lib/html/dart2js/html_dart2js.dart"},"region":{"startLine":12086}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc8fd3aeb2942493b43ce5f83d66ffd029156ed35ea38e9da9ef7d03c089a0e1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FilteredElementList (LCOM4 11): FilteredElementList\u0027s methods fall into 11 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 11 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":"sdk/lib/html/html_common/filtered_element_list.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"654ded99dd995f21611f2a0c6dcf818202c0662ab52f7ae75c850b3a956e678d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FfiTransformer (LCOM4 11): FfiTransformer\u0027s methods fall into 11 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 11 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":"pkg/vm/lib/modular/transformations/ffi/common.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cf930d33cd2df780093a3e68557bcb75d265f1dac4090a7f47d5d6e60aca99f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LinkEntry (LCOM4 11): LinkEntry\u0027s methods fall into 11 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 11 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":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"91e57b6f5db020bb60f4b2114b1a93a5f0a96eeaa904f9082554810c5a171e09"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolationStringImpl (LCOM4 11): InterpolationStringImpl\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":32106}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f573a291c830da00942ca8f2c01fda20356c94004bfa0d84dc283d3fac90bfb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParsedDotShorthandNameImpl (LCOM4 11): ParsedDotShorthandNameImpl\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":42126}}}],"partialFingerprints":{"codehealthFindingId/v1":"17f762e53b4fb3078aaa776e51a0ebaeb992959471828b11d8e78b1e3a1e257d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PartDirectiveImpl (LCOM4 11): PartDirectiveImpl\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":43285}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a0bf441c0bc47ccc68596093dd089b7d248ee84f5f38fbb50bdfdae6220e6db"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SuperReferenceImpl (LCOM4 11): SuperReferenceImpl\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":53188}}}],"partialFingerprints":{"codehealthFindingId/v1":"6794fe323d0e5028894ffcae70647460ae9622be97dbc089c6f398aa07203045"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantVisitor (LCOM4 11): ConstantVisitor\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"5474fc57bfdb8b1a20f72d14db9cd18604359ef5c7cf48f22cf0840376c485c2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullState (LCOM4 11): NullState\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2777}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4c01e301f5a4877c5c4e2cc407398ee83b1e5a7d1853cb939df3f9da9f93cb9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GetterElementImpl (LCOM4 11): GetterElementImpl\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":4906}}}],"partialFingerprints":{"codehealthFindingId/v1":"993ee5d78f04da6eb973ef36e97620ccc898cccb51f8ce90834bec9118c2d0f3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MethodElementImpl (LCOM4 11): MethodElementImpl\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":8844}}}],"partialFingerprints":{"codehealthFindingId/v1":"c342a412bc02d51b582cfcb397662695ef3120b6f18f8162d3ac68937d42da58"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MixinElementImpl (LCOM4 11): MixinElementImpl\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":9132}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f131c0549c8be0c488a649450249974794f7f8fe7105d6a2c813ff14d1a52c5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TopLevelFunctionElementImpl (LCOM4 11): TopLevelFunctionElementImpl\u0027s methods fall into 11 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 11 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":10742}}}],"partialFingerprints":{"codehealthFindingId/v1":"2832cd92df0dfd91f8d412881736b86f69bccd7173dee2b8b6b8eafb32970e26"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordTypeMask (LCOM4 11): RecordTypeMask\u0027s methods fall into 11 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 11 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":"pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b4f5706f1f67c87590157ece31e301e83d50c76d87146a6fd90e68a19a7236a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TypeConstantRepresentationVisitor (LCOM4 11): _TypeConstantRepresentationVisitor\u0027s methods fall into 11 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 11 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":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1163}}}],"partialFingerprints":{"codehealthFindingId/v1":"d340db60ea8dc9e07cffe2eb7be77bd0dac05be65804ddc8464c1c3d9eb21b59"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ModularNamer (LCOM4 11): ModularNamer\u0027s methods fall into 11 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 11 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":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1807}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad3a60150d8f81219ad28197dca079b84d98ede0313344598344a908273f286b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ConstantConverter (LCOM4 11): _ConstantConverter\u0027s methods fall into 11 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 11 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":"pkg/compiler/lib/src/js_model/js_to_frontend_map.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dfa8ed4cc72fd0b08fd71f317782e4ca01175cd4a0075eaa432e8add1666444"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartDebugAdapter (LCOM4 11): DartDebugAdapter\u0027s methods fall into 11 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 11 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":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"c04acae141b978ac1c53db2e3f3e63201267d10b5313ba74b32f3e5bac1daceb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BasicInlineTester (LCOM4 11): BasicInlineTester\u0027s methods fall into 11 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 11 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":"pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c522462f63d36a67c5d55a7460ada09c1b9b7194bb26e8ee762875e8f1402b9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _FieldClassMember (LCOM4 11): _FieldClassMember\u0027s methods fall into 11 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 11 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":"pkg/front_end/lib/src/fragment/field/class_member.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d04a7e1930db5b9ebf17854922f7dfe5bb291698dc45e5d56d657377f90b18c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SynthesizedMember (LCOM4 11): SynthesizedMember\u0027s methods fall into 11 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 11 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":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a9527e702a53bf1d040cdbce8e1b044b077680eb59374ef98f9d3e46c771768"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionTypeDeclaration (LCOM4 11): ExtensionTypeDeclaration\u0027s methods fall into 11 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 11 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":"pkg/kernel/lib/src/ast/declarations.dart"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5d62ddc4b9d9c4ee3602a10a71332d22cd6e1d48700b2040b68556a3dff33cd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidType (LCOM4 11): InvalidType\u0027s methods fall into 11 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 11 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":962}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9c0ce649b39795f0b860ff8e11d4e34d2b7ca4d27b05701eeef69a6a71a636"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DynamicType (LCOM4 11): DynamicType\u0027s methods fall into 11 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 11 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1019}}}],"partialFingerprints":{"codehealthFindingId/v1":"90a9a1487d771b69c1e2ee7cb1d4ed76fbe010e8713415bffd478955eddc50dc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VoidType (LCOM4 11): VoidType\u0027s methods fall into 11 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 11 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1064}}}],"partialFingerprints":{"codehealthFindingId/v1":"7573235765c3ceea603343967414f319c387476ff16ef93f7acf09302f90a99a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullType (LCOM4 11): NullType\u0027s methods fall into 11 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 11 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1185}}}],"partialFingerprints":{"codehealthFindingId/v1":"c478e806a27e84bc5fa9123605883489743ca988c75de17e3da80efab8c34bb5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Strategy (LCOM4 11): Strategy\u0027s methods fall into 11 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 11 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":"pkg/kernel/lib/src/tool/check_equivalence.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"58dc0d2cf21eb6c41297fcb65ebcebd4193de97b31670b7dab4d1112fa8e1215"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DebugPrinter (LCOM4 11): DebugPrinter\u0027s methods fall into 11 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 11 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":"pkg/kernel/lib/text/debug_printer.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"856cc9bcd6a61f31932113063a39e3eb27d122dfcd9a627e76b5380e81139662"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ConstantVisitor (LCOM4 11): _ConstantVisitor\u0027s methods fall into 11 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 11 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":"pkg/vm/lib/transformations/type_flow/rta.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"b27c293e322c8c71d086dd5c60f4b639f2b9b587b425e5eed14b55966ab67178"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RuntimeTypeTranslatorImpl (LCOM4 11): RuntimeTypeTranslatorImpl\u0027s methods fall into 11 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 11 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":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":2904}}}],"partialFingerprints":{"codehealthFindingId/v1":"05ca9124539424904e6f87c879a79d892807f499ef2bf042de3625343a071e3c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Reference (LCOM4 10): Reference\u0027s methods fall into 10 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 10 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":"pkg/kernel/lib/canonical_name.dart"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"95eecadf174692694e509893c8e0501e4aa88e546cdd532cc690e625be578fb8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _DOMWindowCrossFrame (LCOM4 10): _DOMWindowCrossFrame\u0027s methods fall into 10 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 10 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":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"089d74b1e6a6abc48471a4c79471f15c7c2645e4e39a7e56d95c825388c26592"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _DOMWindowCrossFrame (LCOM4 10): _DOMWindowCrossFrame\u0027s methods fall into 10 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 10 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":"sdk/lib/html/dart2js/html_dart2js.dart"},"region":{"startLine":41078}}}],"partialFingerprints":{"codehealthFindingId/v1":"96454119f2b5b08e155c0ca157e7ce9b9287fed0de8dcbf192225dfbd17acbc4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CascadeExpressionImpl (LCOM4 10): CascadeExpressionImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":5586}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbaa5c19db7fdc6eaa4b715a1c26b9c7878be27bd226725ee9a68232d0ec91b6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CombinatorNameImpl (LCOM4 10): CombinatorNameImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":8644}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cbeabeffdc2c9d9198f3a31e435cdea87a4491603b4fab04a55f6943134ba6f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorDeclarationImpl (LCOM4 10): ConstructorDeclarationImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":10801}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c33499ed497a9bfe59b2aed805d7f9b0eb9d56bbe25274b7cfda2355b01c5ad"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParsedUnqualifiedNameAssignmentTargetImpl (LCOM4 10): ParsedUnqualifiedNameAssignmentTargetImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":42840}}}],"partialFingerprints":{"codehealthFindingId/v1":"71acb2f86c7d253187a4468801837ebcfcf6443c77763e86fcaff5b48e56bb5d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RethrowExpressionImpl (LCOM4 10): RethrowExpressionImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":50088}}}],"partialFingerprints":{"codehealthFindingId/v1":"d63ffda1f5867a39fd2b958c9a599d9eaeca632e57c888a2c87bdfa71eefdb25"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ThisExpressionImpl (LCOM4 10): ThisExpressionImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":54897}}}],"partialFingerprints":{"codehealthFindingId/v1":"e26ce13b27b1c84d32aa3d288cef84361e04b9ee6ccc52964d615b70f1ded1c5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnqualifiedNameAssignmentTargetImpl (LCOM4 10): UnqualifiedNameAssignmentTargetImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":57299}}}],"partialFingerprints":{"codehealthFindingId/v1":"753cff3ecfeec77d2b245af95a2ce1fdc9441778d2c84f17af992d9112d136d2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceFragmentImpl (LCOM4 10): InstanceFragmentImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":5533}}}],"partialFingerprints":{"codehealthFindingId/v1":"2946f340a607ed2c97959a8d2b3cb11f9d93d972b096dcaa5e9e3a93b4a09116"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LabelFragmentImpl (LCOM4 10): LabelFragmentImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6644}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bb73fb9037b34bb82ddea87d6c358d1328b6f22210873e9b3183054abdea579"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MethodFragmentImpl (LCOM4 10): MethodFragmentImpl\u0027s methods fall into 10 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 10 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":9037}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b64adc628fa6d99b38b7fbf154f1148fe4824cf16aa8e2274e1fe0b57146f7b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JsNodeSerializer (LCOM4 10): JsNodeSerializer\u0027s methods fall into 10 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 10 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":"pkg/compiler/lib/src/common/codegen.dart"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4ece96f98556f7f6e4a182ccad54f2752fd30b4e6726c9631464d3858a1cc19"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JCommonElements (LCOM4 10): JCommonElements\u0027s methods fall into 10 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 10 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":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":1275}}}],"partialFingerprints":{"codehealthFindingId/v1":"a24883b6840615376417f3a1ee8da5cca7229ec4c81d3e649c60de9ca6a267ac"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantCanonicalHasher (LCOM4 10): ConstantCanonicalHasher\u0027s methods fall into 10 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 10 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":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1541}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6fb6e91241987230a22ca827a6c92ba006a82dc8b99b6204ca8c99ecbae3402"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: KernelSsaGraphBuilder (LCOM4 10): KernelSsaGraphBuilder\u0027s methods fall into 10 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 10 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":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c19a7a51692421d21811fc868906c4a39a10b0b521f3af978ef14d820d568a7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaCodeGenerator (LCOM4 10): SsaCodeGenerator\u0027s methods fall into 10 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 10 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":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"b37a6cb76166713095cb3e163f312cd58188da5b9b2662c32e212ac7b1bf4b5c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaInstructionSelection (LCOM4 10): SsaInstructionSelection\u0027s methods fall into 10 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 10 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":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"f05e756963752a14c874e30d5461c09d6ec47b050ab4e5b99fe972f364ead83e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CodegenWorldImpl (LCOM4 10): CodegenWorldImpl\u0027s methods fall into 10 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 10 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":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":902}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75001648c0f687262c79bc6af8d0ba5e05169183baf6c989c3ab3b2d9ec136e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DdsHostedAdapter (LCOM4 10): DdsHostedAdapter\u0027s methods fall into 10 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 10 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":"pkg/dap_adapters/lib/src/adapters/dds_hosted_adapter.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"38d9c93c793fb388dd84eeb5e709e6feb150a8e2053fb6b6c7a5d4015f5648f5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassBuilderImpl (LCOM4 10): ClassBuilderImpl\u0027s methods fall into 10 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 10 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":"pkg/front_end/lib/src/builder/class_builder.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"0756f0d1890306658b09ea0c9a6f5dd8825bd05eea4526e8ade2a39a450894e6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CatchParameterBuilder (LCOM4 10): CatchParameterBuilder\u0027s methods fall into 10 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 10 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":"pkg/front_end/lib/src/builder/formal_parameter_builder.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff27fe3c074428f9f8243b8e3f65f5bbcc43f5066da6addf057966792715769a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _SynthesizedFieldClassMember (LCOM4 10): _SynthesizedFieldClassMember\u0027s methods fall into 10 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 10 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":"pkg/front_end/lib/src/fragment/field/class_member.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c05edcc74c14686a24e114f1e4f9d1a3930970fc536277e41672979bcf7135b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RepresentationFieldEncoding (LCOM4 10): RepresentationFieldEncoding\u0027s methods fall into 10 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 10 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":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1517}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef82c4c0e63a899b01168aa7f4dfed443878105a1157fa7bc481d106e100733"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Component (LCOM4 10): Component\u0027s methods fall into 10 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 10 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":"pkg/kernel/lib/src/ast/components.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f37f37a778ff09c0a88ccb968add544e5ee03839230b8daaa65bc95afaa9f46"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Class (LCOM4 10): Class\u0027s methods fall into 10 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 10 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":"pkg/kernel/lib/src/ast/declarations.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"309f7a6e8009b9de8ea5089ce63f9cb3801a8e9f31d5cae06e0ba2f1fe7b2f76"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListPattern (LCOM4 10): ListPattern\u0027s methods fall into 10 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 10 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccabcc489ea6ee31aa644f3f22270d3f79be6e665163e1ae95e103f1b378b6d6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionTypeParameterType (LCOM4 10): FunctionTypeParameterType\u0027s methods fall into 10 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 10 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2756}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ed34f2ca20d3254e761b7b59fffee3bb5ffcaadf0b4f283d4024fe4c6168fb9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VarianceCalculator (LCOM4 10): VarianceCalculator\u0027s methods fall into 10 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 10 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":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe044643c6036e454952a741fff48472b5571963e240dcb724cd0d454dbb1073"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TestConfiguration (LCOM4 10): TestConfiguration\u0027s methods fall into 10 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 10 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":"pkg/test_runner/lib/src/configuration.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b96f3d9e5837ead7bb26621cedaca9a88d911407830e160f162df301dff21451"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantsBackend (LCOM4 10): ConstantsBackend\u0027s methods fall into 10 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 10 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":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"1361615c2a955398033924de1bccf57cb35061df0cfea0f0967adff7eaef25bd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NoneTarget (LCOM4 10): NoneTarget\u0027s methods fall into 10 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 10 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":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a837648ecda745108bbaae5643d8773fb45023c9d186ea388ae457042e9727"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ConstantCollector (LCOM4 10): _ConstantCollector\u0027s methods fall into 10 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 10 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":"pkg/vm/lib/transformations/record_use/constant_collector.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7dabadfa9dccc59fde97c71c35508a4192cb245b59617dadca38c7249fde8c0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _EntryPointsListenerImpl (LCOM4 10): _EntryPointsListenerImpl\u0027s methods fall into 10 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 10 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":"pkg/vm/lib/transformations/type_flow/rta.dart"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbb364b08d49fcd374364dbbe266dd1cd7542414b3cb7e0b64059707c06fca78"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SoundSplayTreeMap (LCOM4 9): SoundSplayTreeMap\u0027s methods fall into 9 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 9 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":"benchmarks/SoundSplayTreeSieve/dart/sound_splay_tree.dart"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"af48ab8545ca3aad62cf657963ddf9f997d43bfb4c1567596a544b8e29512aff"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SoundSplayTreeSet (LCOM4 9): SoundSplayTreeSet\u0027s methods fall into 9 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 9 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":"benchmarks/SoundSplayTreeSieve/dart/sound_splay_tree.dart"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"16dcd40121e1cac10b2785b3922f5d602da14f3b0284f591de74f0edc0ff1abe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Zone (LCOM4 9): Zone\u0027s methods fall into 9 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 9 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":"sdk/lib/async/zone.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"675b487a74d25a6f9c216dfecce4c2c34fbfda654cfcbb12d02b43763efb5733"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DocumentFragment (LCOM4 9): DocumentFragment\u0027s methods fall into 9 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 9 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":"sdk/lib/html/dart2js/html_dart2js.dart"},"region":{"startLine":10761}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b0dc0ed939216fbffa66bd4b0411b8ee9ee92479cdd1bcdd151005c761e9404"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _Lowering (LCOM4 9): _Lowering\u0027s methods fall into 9 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 9 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":"pkg/vm/lib/modular/transformations/lowering.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a0f980f37ea64e11fe43a3b8b9f2777b450825a4f28d84c02c7e97a8fe73d7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BooleanLiteralImpl (LCOM4 9): BooleanLiteralImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":5066}}}],"partialFingerprints":{"codehealthFindingId/v1":"d787169b8f1bfb3f1f2c59eaee60d421ee3168758f87c1034919958ef557fc9f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorSelectorImpl (LCOM4 9): ConstructorSelectorImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":12440}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b5cfee5d674e625d3d947fe1de48c13d27ddb460b650562941f0ec95b63d2e2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DelimitedFormalParametersImpl (LCOM4 9): DelimitedFormalParametersImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":13809}}}],"partialFingerprints":{"codehealthFindingId/v1":"45e298d243b3b3ca5a1207ff84324800c699dea12a17f8731ed521e7bc0643b1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DoubleLiteralImpl (LCOM4 9): DoubleLiteralImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":15938}}}],"partialFingerprints":{"codehealthFindingId/v1":"3806c836d06f4543facb59af07e406199b96eaddda9ef54de533558d2e461363"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EmptyFunctionBodyImpl (LCOM4 9): EmptyFunctionBodyImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":16300}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7da2ed1c7392361a326a2a41c2b8b95a790898dc08542bfe1befeb0a606c03a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FormalParameterListImpl (LCOM4 9): FormalParameterListImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":22180}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d753d827a4d7a7d441c2737a12e7e6416a605e6885e9e398162602b796dcdd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionExpressionImpl (LCOM4 9): FunctionExpressionImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":24212}}}],"partialFingerprints":{"codehealthFindingId/v1":"840b4fa8ccc4656b2217411ac6dbfea2954f1b97c5d72d0150d2d6fd1f1e9686"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NamedTypeImpl (LCOM4 9): NamedTypeImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":38830}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c8e907ac0aaa5a6baf3ea830d52a709a47cc2560448473240cbb15f0889f5d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullLiteralImpl (LCOM4 9): NullLiteralImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":40773}}}],"partialFingerprints":{"codehealthFindingId/v1":"54db62dc1b48db09a7bab4d324683edc5244747d41d71e09066c337e6cd42153"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StringInterpolationImpl (LCOM4 9): StringInterpolationImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52212}}}],"partialFingerprints":{"codehealthFindingId/v1":"e29f3361fd2b94d18698a8d59fe912d2578c11891504a70fb8b95e7ec58c6f4b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SymbolLiteralImpl (LCOM4 9): SymbolLiteralImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":54778}}}],"partialFingerprints":{"codehealthFindingId/v1":"0174b36e3e2713501f0e1446fabcf528f45b54472ad2aa48cf4be60d6d6c26cc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _FormalParameterListV1NodeList (LCOM4 9): _FormalParameterListV1NodeList\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":60038}}}],"partialFingerprints":{"codehealthFindingId/v1":"cba1425a4b74a568c699826328c29a785e85cc8d72334f673e451ebc5980d112"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionElementImpl (LCOM4 9): ExtensionElementImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":2985}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e71d28fa6dcd655a7f68932e7c615ca5c4fc9e0e7c8886a9b4e43df9e4cf2bc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionTypeElementImpl (LCOM4 9): ExtensionTypeElementImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3209}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffd9014c1144b089d7888fd581ccf51f763dae7169a3c685a7adc42c7f7f404b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GenericFunctionTypeFragmentImpl (LCOM4 9): GenericFunctionTypeFragmentImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":4836}}}],"partialFingerprints":{"codehealthFindingId/v1":"c390e0aca95c2bcc6bf1e614c93f4654e7c47f565c70e21daf505c1105956851"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MultiplyDefinedFragmentImpl (LCOM4 9): MultiplyDefinedFragmentImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":9449}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff4e50ef50b2fe007a2bb22fdf7043fa8470cad8b826a6b1e2c1e7a0ef1c43d1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PropertyAccessorElementImpl (LCOM4 9): PropertyAccessorElementImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":9876}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b4ab8daf924a7cf719b7216dbc516ba88dcd6c99200d472289296a025416ed2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PropertyInducingFragmentImpl (LCOM4 9): PropertyInducingFragmentImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":10272}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f0934d7db0363293f1ae32d3acfccdacd8aef0acdd53f1e034ef8c73d14f2b1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeParameterElementImpl (LCOM4 9): TypeParameterElementImpl\u0027s methods fall into 9 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 9 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11415}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddefac3301a2a12ae4b2e27fbef9a2bd95662139e9e4700ca3fe69110c2292e1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DeadFieldGlobalTypeInferenceResult (LCOM4 9): DeadFieldGlobalTypeInferenceResult\u0027s methods fall into 9 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 9 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":"pkg/compiler/lib/src/inferrer/types.dart"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa8db1e427ef5649a648b10da0e64581eaa9946637c69239be5083a01304b65e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DeadMethodGlobalTypeInferenceResult (LCOM4 9): DeadMethodGlobalTypeInferenceResult\u0027s methods fall into 9 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 9 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":"pkg/compiler/lib/src/inferrer/types.dart"},"region":{"startLine":760}}}],"partialFingerprints":{"codehealthFindingId/v1":"d52e863558d10036eb3f4c2bfc80d6167e9f1ab39d14318233f8f4bac40b2633"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JMember (LCOM4 9): JMember\u0027s methods fall into 9 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 9 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":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dac33cd80affd1ba7dd670e45198e55ccf80410f9b7d843b9e8ba5ed0abe00d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JsToFrontendMap (LCOM4 9): JsToFrontendMap\u0027s methods fall into 9 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 9 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":"pkg/compiler/lib/src/js_model/js_to_frontend_map.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae31be9732ff35bd80e527521d11db402d1f3bc6a0f6bb635288a274846226b1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ValueRangeInfo (LCOM4 9): ValueRangeInfo\u0027s methods fall into 9 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 9 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":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"4664b30f800e9afbd4f86ddeec8e8650b28a865e2c350fa3673a41e98332ac61"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AnonymousMethodParameterBuilder (LCOM4 9): AnonymousMethodParameterBuilder\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/builder/formal_parameter_builder.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"b23f111bc5abe69c119b2e8af9ec794091ad319254cdeebecba66c982c440d16"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryBuilderImpl (LCOM4 9): LibraryBuilderImpl\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/builder/library_builder.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"d63b474cc9d3eece4f939ec26d4be05b7e1fd0e338742d2fc3de0a770cf77a96"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _DynamicModuleValidator (LCOM4 9): _DynamicModuleValidator\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"876125669f19a1e3688629efe6b986733ebdd373e494e8ba2a14467a2074d776"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InternalThisVariable (LCOM4 9): InternalThisVariable\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7986}}}],"partialFingerprints":{"codehealthFindingId/v1":"5da7a2db815d096fd3381174abbee639fe09a2b4473dd3645f13fd61742f1756"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: OutlineBuilder (LCOM4 9): OutlineBuilder\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6064e2c536791e45055c1c52a4edefef494b6ea4c4ef52e41e53ba0b059470"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _EnumToStringMethodDeclaration (LCOM4 9): _EnumToStringMethodDeclaration\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e3fc6b3fad42e8ba17c7acd86e15ab15ffb662a3fb92229ede80ab4212539c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourcePropertyBuilder (LCOM4 9): SourcePropertyBuilder\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/source/source_property_builder.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a18d3c55b87eed3af01d616a06c63c123367dda7a39230d36d92be3efc55bd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DataExtractor (LCOM4 9): DataExtractor\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/testing/id_extractor.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"b66e2b52cb5533b6c0ede5ce2c0ba98175af52d7254fd45cca7062a17e4a6d92"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AmbiguousExtensionAccessTarget (LCOM4 9): AmbiguousExtensionAccessTarget\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1395}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c5ca6e095924018974cd5c90411f3e8d6a4a2e8c1e10d73a80db95a558da29"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExpressionEvaluationParameterTarget (LCOM4 9): ExpressionEvaluationParameterTarget\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1717}}}],"partialFingerprints":{"codehealthFindingId/v1":"5003685384d577bf2958b0fe59df70a01617fb5d1008cbfb6b38f05f42f1f540"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeInferenceEngine (LCOM4 9): TypeInferenceEngine\u0027s methods fall into 9 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 9 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":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"29e8f64bc8bd7c952b8da3dc0ced5fe692f75a146916c3afe7fdd26669a7947a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StaticTearOffConstant (LCOM4 9): StaticTearOffConstant\u0027s methods fall into 9 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 9 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b0d0f598086690f6eec9b800ab4eaa3c1a90db1ebffc6c307fa4c29bd0dd640"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorTearOffConstant (LCOM4 9): ConstructorTearOffConstant\u0027s methods fall into 9 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 9 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":888}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4948d09ae593da6818ccbf50a2b19af9b703400675f280e861c1a3a72164581"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RedirectingFactoryTearOffConstant (LCOM4 9): RedirectingFactoryTearOffConstant\u0027s methods fall into 9 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 9 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":950}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc93ff4e16b7d459a4e05484ab58f527ef536c02216905f28665864361e57469"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NominalParameter (LCOM4 9): NominalParameter\u0027s methods fall into 9 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 9 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"872dea97d5e6e548fcea07609e9e1f37f4edd309c939065f15702127e12159bc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AstPrinter (LCOM4 9): AstPrinter\u0027s methods fall into 9 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 9 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":"pkg/kernel/lib/src/printer.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1ea089163dcb4bfc180e6672f7ac21111090d32d3f6c7dff247ca1faa089d6b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SummaryCollector (LCOM4 9): SummaryCollector\u0027s methods fall into 9 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 9 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":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c7ba446ba7c2245ac07e3ed1039f60b1119c37871ad2e8a0a3607192dbaaa6a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TreeShakerConstantVisitor (LCOM4 9): _TreeShakerConstantVisitor\u0027s methods fall into 9 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 9 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":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":2531}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8793ad43b8004933d00a0dcdc0c7f3c403978d0208f8ece18350f3843c6ea1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorInitializerCodeGenerator (LCOM4 8): ConstructorInitializerCodeGenerator\u0027s methods fall into 8 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 8 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":"pkg/dart2wasm/lib/code_generator.dart"},"region":{"startLine":4306}}}],"partialFingerprints":{"codehealthFindingId/v1":"907ae9fef7b31716afaa69d57bd3e24e44776abbf9af6c241a7e9b6679ccb938"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EquivalenceVisitorStrategy (LCOM4 8): EquivalenceVisitorStrategy\u0027s methods fall into 8 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 8 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":"pkg/front_end/tool/generate_ast_equivalence.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b2664d4599398417ba1173ae7f1389ec47ab809763b121fee594c00d479103"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _WasmInstructionLowerer (LCOM4 8): _WasmInstructionLowerer\u0027s methods fall into 8 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 8 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":"pkg/dart2wasm/lib/cfg/to_wasm.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea983d85800c1f15c65818070d65337275acd1bc11c0d77b309f4b74f7ce4807"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SplayTreeMap (LCOM4 8): SplayTreeMap\u0027s methods fall into 8 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 8 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":"sdk/lib/collection/splay_tree.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"e38e886c4a31f6a066dd483db94342634e2d3cd4d16982289edf60a9c482da75"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _PhysicalResource (LCOM4 8): _PhysicalResource\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/file_system/physical_file_system.dart"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dfb99ac3ae258943c79467c271c94a0aa197896ac3f15bbef9e5d39be9f88c7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ChildNodeListLazy (LCOM4 8): _ChildNodeListLazy\u0027s methods fall into 8 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 8 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":"sdk/lib/html/dart2js/html_dart2js.dart"},"region":{"startLine":23619}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffa788a24119a4bc7c540c31bc198c3f76d7514496c71b36cbeb0524c1dd181c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordType (LCOM4 8): RecordType\u0027s methods fall into 8 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 8 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":"pkg/cfg/lib/ir/types.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff416974281494f259b17f3b72cea0a00678c4180d8ad2a26d8e854f26533b9a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LspGlobalClientConfiguration (LCOM4 8): LspGlobalClientConfiguration\u0027s methods fall into 8 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 8 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":"pkg/analysis_server/lib/src/lsp/client_configuration.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b6336f6c5f6569a48f2db1430ed5fbac4ad4f1527b7501b03b12653f66bf250"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CatchClauseParameterImpl (LCOM4 8): CatchClauseParameterImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":7441}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ebd1713fd08a706e3accf4bd25aaf94b6593e9ec48288301e3fee6e2e37d3c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DottedNameImpl (LCOM4 8): DottedNameImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":15845}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7d88987641eadcd7fdcdb26a321374b8f23241692049cee17f55f45a42254f2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EmptyClassBodyImpl (LCOM4 8): EmptyClassBodyImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":16116}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a47a3d6dfdc55256cd325c8068e65d61f9d9855f853093e38da11ab5ada1889"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EmptyEnumBodyImpl (LCOM4 8): EmptyEnumBodyImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":16203}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf4a16bda1506fec93dc9080c5211cd378a1d6730c995c5f5777d4b16842b6ba"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EmptyStatementImpl (LCOM4 8): EmptyStatementImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":16391}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eced302568dcc8719e482922fc6d8094deda8047b6230f3951585d9d363d89d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImportPrefixReferenceImpl (LCOM4 8): ImportPrefixReferenceImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":30309}}}],"partialFingerprints":{"codehealthFindingId/v1":"890fce2e8137a1e36ef875907f72ac7943d33b79a4d5ae51ac9a4e57c7ccca5c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LabelImpl (LCOM4 8): LabelImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":33771}}}],"partialFingerprints":{"codehealthFindingId/v1":"54dd3dd308a795fbf3c51eeeff885ad7827ab192d6b8a2c968c2425d8804e220"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LabelReferenceImpl (LCOM4 8): LabelReferenceImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":33872}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f80408c0ad64ebd3eaac03df71a0d3af87218f1a62c1e5477a2d9942babec11"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ObjectPatternImpl (LCOM4 8): ObjectPatternImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":40874}}}],"partialFingerprints":{"codehealthFindingId/v1":"72d02db6fdf52aa9da9c1a1b21888af2ce9b69fb435d31f292175d5d2e2b4959"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternFieldNameImpl (LCOM4 8): PatternFieldNameImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":44151}}}],"partialFingerprints":{"codehealthFindingId/v1":"c92bf53cc878781c2d826e0fb28bca3ca5001ce3972c4091fd24d0ffdddbe3b1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrimaryConstructorBodyImpl (LCOM4 8): PrimaryConstructorBodyImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":45422}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bbe547907a54ad0d968d534f0e44b4280b16329a5f03238e7e860b39dc1f438"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrimaryConstructorNameImpl (LCOM4 8): PrimaryConstructorNameImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":45999}}}],"partialFingerprints":{"codehealthFindingId/v1":"a88703de67f3caf026af62dfe73883227ef8d196cbd42287b9d29afb9d5b585d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ScriptTagImpl (LCOM4 8): ScriptTagImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":50380}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5571e1f0cb7805801be93aaa0b0ac091275c25578ab81591ebac39242618c5a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SwitchExpressionImpl (LCOM4 8): SwitchExpressionImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":53953}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce63655e87e65564d9965d70e75d506faa75012e590e540df1a4e1dc65f3a821"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _V1ProjectedNodeListImpl (LCOM4 8): _V1ProjectedNodeListImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":60349}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c9e56fddd930517aa86e0fa216577ac8adf69ec017ae5c6f46e12b23bb01240"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ToSourceVisitor (LCOM4 8): ToSourceVisitor\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"db1f41b1833f34433d8439b05d92d67965a4a58ba049174c1016ebff06e4c151"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EnumElementImpl (LCOM4 8): EnumElementImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":2378}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f2305c512f19d59963fa758d3274e59c76ce24ec499aab35e1a3ad6738598d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldFormalParameterElementImpl (LCOM4 8): FieldFormalParameterElementImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3639}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6c6d3bc5159d449f1885da35bd3b4606dd5a8eb2a0c7902abe080afcb3bdc5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LabelElementImpl (LCOM4 8): LabelElementImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6597}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2801c46d097f451e50e24ca87924c2e1ab4d7dae0b7743756058375c5fc24a2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrefixElementImpl (LCOM4 8): PrefixElementImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":9747}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a34851334e1e2c6b8ef524eb0ff6729df5141f8db183b750c34e0f28187cc6e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeParameterFragmentImpl (LCOM4 8): TypeParameterFragmentImpl\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11567}}}],"partialFingerprints":{"codehealthFindingId/v1":"b618e3eec24583fdd9c506d50e0818b42a65bd95ce3fc9b58e66b6bb5a71ee26"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TypeSubstitutor (LCOM4 8): _TypeSubstitutor\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/dart/element/type_algebra.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"e42d57a0f3ea7e9fa7b61228b63d7d6a69c4bfa33253e3531dc044804c69f2b0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SummaryBasedDartSdk (LCOM4 8): SummaryBasedDartSdk\u0027s methods fall into 8 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 8 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":"pkg/analyzer/lib/src/summary/summary_sdk.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e2bb171b61b4f258193113fc3ba1893282bc4b880dc14ef363abe9d3373dedb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeEntityDataVisitor (LCOM4 8): TypeEntityDataVisitor\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"4761ee0ae7400c2f82bf4ffd4dbaa82dd8c7b9876e3ece8324d8d03246f06174"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantCollector (LCOM4 8): ConstantCollector\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"672f7a17ec244e6d9d1ae465600733972b2b2fd997ebca7d7179a74eacb5715f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: KernelTypeSystemStrategy (LCOM4 8): KernelTypeSystemStrategy\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":1669}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8c3f1a2457b388c3b4dc730ca7e23e389c6c9af0e5f2b87140f23b9fd331257"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MemberTypeInformation (LCOM4 8): MemberTypeInformation\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a0429a1a1764c22c46975e501d5e1705bfc7d6104ab1e697a54c1de38c27101"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeSystem (LCOM4 8): TypeSystem\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/inferrer/type_system.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"71fdfdab073ec39d3e15606b3ba3a81e0b39616061031238c68e8fb6f1d6c5a2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TrivialGlobalTypeInferenceMemberResult (LCOM4 8): TrivialGlobalTypeInferenceMemberResult\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/inferrer/types.dart"},"region":{"startLine":673}}}],"partialFingerprints":{"codehealthFindingId/v1":"88a67600bb0f4766f3e7435214fdf66f00d448e99eb7cf55e767c0f2abdb7559"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: KernelSourceInformationBuilder (LCOM4 8): KernelSourceInformationBuilder\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/io/kernel_source_information.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf64df75a588daa04476be2ca054bb3faa6180feba8c64270f06cbb1709a0b91"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartTypeConverter (LCOM4 8): DartTypeConverter\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/ir/visitors.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"bffdd17392d9300f3cb8ebc8197d2761f876ab23b91a2f6defd1c362ce372774"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ArgumentCollector (LCOM4 8): ArgumentCollector\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f867e6d203dca12761e6e301ee81b138722000774f399c83e104d6700ed27af"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TypeContainedInOutputUnitVisitor (LCOM4 8): _TypeContainedInOutputUnitVisitor\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"8773773994ee2be14e728ca7949600014a3af7148898510cb5bf941698dd0437"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullJumpHandler (LCOM4 8): NullJumpHandler\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/ssa/jump_handler.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3a289d9da2014f4458e2fb2969c38c00393428cf13d8a89375b06c4f89809bc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HFieldGet (LCOM4 8): HFieldGet\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2381}}}],"partialFingerprints":{"codehealthFindingId/v1":"c74eb824256e80a7977fc1eb29ea438638fcf0a55bd965da9e86c4f757ee7e8a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HGetLength (LCOM4 8): HGetLength\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2469}}}],"partialFingerprints":{"codehealthFindingId/v1":"cacb1cd1b608d34e619a5ddfc0798e1690d261fbf2f6389eca06b32192ee1d19"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HTypeKnown (LCOM4 8): HTypeKnown\u0027s methods fall into 8 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 8 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4112}}}],"partialFingerprints":{"codehealthFindingId/v1":"77433396240882ee337efd3548f0bddf98495192d227f99806298bdc4637f60e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartCliDebugAdapter (LCOM4 8): DartCliDebugAdapter\u0027s methods fall into 8 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 8 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":"pkg/dap_adapters/lib/src/adapters/dart_cli_adapter.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a8772b4c611c85efeb44cf2a8a369aba7c2db6b3ad931545cfbcecaee3f1160"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartTestDebugAdapter (LCOM4 8): DartTestDebugAdapter\u0027s methods fall into 8 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 8 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":"pkg/dap_adapters/lib/src/adapters/dart_test_adapter.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"30828f21ebd2221bbc878fc4eba6dc846c4799cbe6bd1bbada553a5ea1b7131d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedParameter (LCOM4 8): InterpolatedParameter\u0027s methods fall into 8 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 8 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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":2078}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ba0efaa45988a0d09575054e53d1802c413a7ee07edf774fa1a7ebb26fba39d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedIdentifier (LCOM4 8): InterpolatedIdentifier\u0027s methods fall into 8 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 8 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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":2183}}}],"partialFingerprints":{"codehealthFindingId/v1":"0500f0e511e55f7d9bf511190139e8324e9b70637bf67ff87769733a1a37951a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NominalParameterBuilder (LCOM4 8): NominalParameterBuilder\u0027s methods fall into 8 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 8 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":"pkg/front_end/lib/src/builder/type_parameter_builder.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"39b99264261e8ba291b6acf26900c8bdb560009be4a5c5c6faf5d0c3d0d2c89c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AbstractOrExternalFieldEncoding (LCOM4 8): AbstractOrExternalFieldEncoding\u0027s methods fall into 8 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 8 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":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a733dec53c7aef71a7c24dbe2bc8cc9eb31c23e11060bfb0eb1843f934a8d70"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionInstanceFieldEncoding (LCOM4 8): ExtensionInstanceFieldEncoding\u0027s methods fall into 8 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 8 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":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1698}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d7a4e9bc87a2a5008584415b11c6d59b73f9dbb2c5f9af346fc0a58cf5ee88a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SynthesizedNonExtensionTypeMember (LCOM4 8): SynthesizedNonExtensionTypeMember\u0027s methods fall into 8 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 8 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":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":946}}}],"partialFingerprints":{"codehealthFindingId/v1":"7df5fec6e4be6865c68ee426b12cf6cc1bedd5a4d13d3f4f331250d8dfc6871c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceLibraryBuilder (LCOM4 8): SourceLibraryBuilder\u0027s methods fall into 8 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 8 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":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a3a498405195326895acc0d3dcc3014ac56d12902a3d7dc25484d3438a6786e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NeverAccessTarget (LCOM4 8): NeverAccessTarget\u0027s methods fall into 8 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 8 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":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1045}}}],"partialFingerprints":{"codehealthFindingId/v1":"b864c84201276c7831afc195433b9bd5eb473a7f4ae2e00b1227a65c04976e9c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvocationStructuralContextType (LCOM4 8): InvocationStructuralContextType\u0027s methods fall into 8 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 8 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":"pkg/front_end/lib/src/type_inference/type_schema.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"853951d8de2fe393c94177494e84f39bf85c9eb028fa6d27568df75ab851aa4d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LookupStructuralContextType (LCOM4 8): LookupStructuralContextType\u0027s methods fall into 8 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 8 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":"pkg/front_end/lib/src/type_inference/type_schema.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"f28e486a147295855b672f0e412d6262daa5b80d726fcba2ad2df5b271d53ec6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeSchemaEnvironment (LCOM4 8): TypeSchemaEnvironment\u0027s methods fall into 8 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 8 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":"pkg/front_end/lib/src/type_inference/type_schema_environment.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"cce9e2a1d5f21743bd5ab405b7259a1b4d532eb9bdffc2a268bbde40259cd729"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedParameter (LCOM4 8): InterpolatedParameter\u0027s methods fall into 8 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 8 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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2619}}}],"partialFingerprints":{"codehealthFindingId/v1":"20195ca30d015940336a2e24b7ef7d8724c20d850962b4be0ee25df235af0031"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SymbolConstant (LCOM4 8): SymbolConstant\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"027a74aea62b851e9169370b016bbdc58a82eed9f546b3cd87447392db91bf90"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StaticGet (LCOM4 8): StaticGet\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1362}}}],"partialFingerprints":{"codehealthFindingId/v1":"e88fdb7970499b093e1944a71cfb0a26b5021ed8d34ca8eb8a5b1d2d4ea13df9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StaticTearOff (LCOM4 8): StaticTearOff\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1412}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a345541ab5df0851dc9b881fb04ce12a5795625797f38ff51bcdda5a8eb2458"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SymbolLiteral (LCOM4 8): SymbolLiteral\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4300}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b885e6bc7f815b5fe44e64af66615e52d16f5430f06145818a295762e9812a0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LoadLibrary (LCOM4 8): LoadLibrary\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5276}}}],"partialFingerprints":{"codehealthFindingId/v1":"aab4a4d5a049151625fc6b971b0f7b80e183f5c32c99695aae5166005bfb9cfd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CheckLibraryIsLoaded (LCOM4 8): CheckLibraryIsLoaded\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5334}}}],"partialFingerprints":{"codehealthFindingId/v1":"f87f913facebac6fff5d346784ade8d25fd6f4cd66a8748eb4ca72b873f131af"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorTearOff (LCOM4 8): ConstructorTearOff\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5378}}}],"partialFingerprints":{"codehealthFindingId/v1":"75fec988789195b8074446ffe024ad3a11d23222fd70c3fe23969177a19f44c9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RedirectingFactoryTearOff (LCOM4 8): RedirectingFactoryTearOff\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5438}}}],"partialFingerprints":{"codehealthFindingId/v1":"af3f562ba7b713e8aef05f9c2463536cd9899b34bad246dce11d04973c999c9d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidInitializer (LCOM4 8): InvalidInitializer\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18a2fcdaab9d40da740d28ca4408afbef867b8c95a2df175001487dde3ccc8a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AssignedVariablePattern (LCOM4 8): AssignedVariablePattern\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6218717ff020d3cedd040472579967daf6686b978dbc0a1f7edcf258f83d1b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NeverType (LCOM4 8): NeverType\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1109}}}],"partialFingerprints":{"codehealthFindingId/v1":"c06496ea208596c413d530b5c8a780aaf3cc6a31be80379e4fbed7d18562e0d9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypedefType (LCOM4 8): TypedefType\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1587}}}],"partialFingerprints":{"codehealthFindingId/v1":"70508fb6f222e4d9eef774ebffc8e3614d57742aa79fb0e700aa0e426e3396e2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeVariable (LCOM4 8): TypeVariable\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2683}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca71e54c3b30da0d259f0ee847f4b8e3943ea8457f931cd76bb527081a44b26b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassTypeParameterType (LCOM4 8): ClassTypeParameterType\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2822}}}],"partialFingerprints":{"codehealthFindingId/v1":"b966233d01a643f792fb1d1311ace474a38a5e4795e5811c467b26a8154281a4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NamedParameter (LCOM4 8): NamedParameter\u0027s methods fall into 8 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 8 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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1793}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1070a410e7e3e6b5c3eed5a964061426d5e4d3c5899fc4c07f870f30b70e42d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnresolvedDefType (LCOM4 8): UnresolvedDefType\u0027s methods fall into 8 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 8 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":"pkg/wasm_builder/lib/src/ir/type.dart"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"88994531c93f9c5d482e4f70668703f86b94849b3dba3930e07899673f35ed26"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TreeShakerPass1 (LCOM4 8): _TreeShakerPass1\u0027s methods fall into 8 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 8 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":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":1347}}}],"partialFingerprints":{"codehealthFindingId/v1":"479e7836400742a6853e27db5453187e01edabd4a9abdf6f039c3e2f285cb36c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RuntimeType (LCOM4 8): RuntimeType\u0027s methods fall into 8 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 8 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":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1501}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e7d913966713b9cfb787002f639ce37c2e0a18654db532bac0e544825c93079"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BytecodeGenerator (LCOM4 7): BytecodeGenerator\u0027s methods fall into 7 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 7 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":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f6dd7f6d166b6a00d291adbc3c247e0b0f336baeb80d20b0080fa238fda0d3f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _AwaitTransformer (LCOM4 7): _AwaitTransformer\u0027s methods fall into 7 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 7 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":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"518b33241ebddc99fd88255c2b1151e663e1abd240706143175d273048cc1435"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Translator (LCOM4 7): Translator\u0027s methods fall into 7 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 7 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":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"700f5959336716558b3b3b7f994de77108cc577270cc9d18259a89231846d852"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BenchMaker (LCOM4 7): BenchMaker\u0027s methods fall into 7 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 7 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":"pkg/front_end/tool/bench_maker.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd36288d1ee316ef5cbf9fff4da95ad1bcaa0c6fa99d6c197dadbf5a416e9ce7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _FlatStatefulStaticTypeContext (LCOM4 7): _FlatStatefulStaticTypeContext\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b76b22d4a373188d4c7f9d68d2075fd87e8f5188ab6065dd75ab3ef6566ad10"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _StackedStatefulStaticTypeContext (LCOM4 7): _StackedStatefulStaticTypeContext\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":1085}}}],"partialFingerprints":{"codehealthFindingId/v1":"61556708c887b7edc1a6f4753531645a14c0c9e157dca3fa77cfa25439df7442"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _HttpClient (LCOM4 7): _HttpClient\u0027s methods fall into 7 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 7 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":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":2782}}}],"partialFingerprints":{"codehealthFindingId/v1":"e11a6e7f54a813cccbf468d39c8e14f6d1deabbb45683e8496593d9673dcfd4a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _BroadcastStreamController (LCOM4 7): _BroadcastStreamController\u0027s methods fall into 7 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 7 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":"sdk/lib/async/broadcast_stream_controller.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"268121720d2a4af92e140d66942e3e8ce2815a3f54310229f39d659b2e18345b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DiagnosticCode (LCOM4 7): DiagnosticCode\u0027s methods fall into 7 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 7 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":"pkg/_fe_analyzer_shared/lib/src/base/errors.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"9778e9eecf796158a6ea98051ab0aa2c61829cef443cb1f67bd578ebbc5398d2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _FlowAnalysisImpl (LCOM4 7): _FlowAnalysisImpl\u0027s methods fall into 7 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 7 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":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":6243}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c8c0b3412a2e806568af8d63197461cc5afe22bc7a36ed884cc9d8e2b2eaa29"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionProto (LCOM4 7): ExtensionProto\u0027s methods fall into 7 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 7 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ec2b1bc3b24534fd493702876d74184354b02d349f34c8168ad01d4b9bf7c04"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrefixProto (LCOM4 7): PrefixProto\u0027s methods fall into 7 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 7 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1205}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cd8718fe752b4c69f4d37c924cd71afd0116f45e25093c40dcf58314a9ccaa3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidAccessProto (LCOM4 7): InvalidAccessProto\u0027s methods fall into 7 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 7 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1454}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9bcb981ba5a64214f2e59d5834205bb1a099918680bb1141ef0b0ecbbdf68e2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidInstantiationProto (LCOM4 7): InvalidInstantiationProto\u0027s methods fall into 7 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 7 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1494}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee2cfd85e9279b810bbc9c5b2199a4b519beab0f57bfaa23418f959827b7c36"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidInvocationProto (LCOM4 7): InvalidInvocationProto\u0027s methods fall into 7 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 7 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1534}}}],"partialFingerprints":{"codehealthFindingId/v1":"271c2095b92d595cde63aa657524a4c0f5a32eeadc9a0ff4c4aabca7fad11dc7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SimpleTypeWith1Argument (LCOM4 7): SimpleTypeWith1Argument\u0027s methods fall into 7 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 7 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":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a0f0cb5c064017b5d39572ad03ba91096d9d6638e2bd7a581e404e32c155059"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CommonServerContextManagerCallbacks (LCOM4 7): CommonServerContextManagerCallbacks\u0027s methods fall into 7 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 7 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":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"84e30b8083c2383b71922153d4c190affdaacd0e0596aedfe21621db2abce641"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LspNotificationManager (LCOM4 7): LspNotificationManager\u0027s methods fall into 7 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 7 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":"pkg/analysis_server/lib/src/lsp/notification_manager.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"92973f12700102a0752f7dfc50c8f466217b90076e6985f6f834c1d5656ce84b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InScopeCompletionPass (LCOM4 7): InScopeCompletionPass\u0027s methods fall into 7 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 7 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":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"6689dc593ab85f6c185e79ea5eba687c7fc6f7cf35dca948938d19f809717a09"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListPatternImpl (LCOM4 7): ListPatternImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":34416}}}],"partialFingerprints":{"codehealthFindingId/v1":"99ca63e1257840e873082c7f7b759e1ec296d968958b465f40266a494de75437"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapPatternImpl (LCOM4 7): MapPatternImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":36238}}}],"partialFingerprints":{"codehealthFindingId/v1":"41ff537b4e835ae65f28bc2c16cdd111315d24661c98f5fcb13ad23635745225"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NodeListImpl (LCOM4 7): NodeListImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":39838}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dbb5912acda5b9503023e0f82c8760581e01b5422e1aab413f9f4e55d6f4c37"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ElementAnnotationImpl (LCOM4 7): ElementAnnotationImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":1586}}}],"partialFingerprints":{"codehealthFindingId/v1":"239ca840b9896dfa0f62a7a04d9403111d56b2e66924055413855421282d747b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionFragmentImpl (LCOM4 7): ExtensionFragmentImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3156}}}],"partialFingerprints":{"codehealthFindingId/v1":"560cc2d8558da5b3d2598cc7ffa1f24a2448f25ee41473d6b5fd175db868499e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TopLevelFunctionFragmentImpl (LCOM4 7): TopLevelFunctionFragmentImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":10896}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0be91f2f8e4a592167132618543a6ab282ab0f42baa6bc089594bf7f07c2005"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TopLevelVariableElementImpl (LCOM4 7): TopLevelVariableElementImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":10968}}}],"partialFingerprints":{"codehealthFindingId/v1":"88f5373c07e63682b70e173af716cfcde0b869189dbb7a2404613db3bfb889e1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TopLevelVariableFragmentImpl (LCOM4 7): TopLevelVariableFragmentImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11074}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eeed6c4f1f18077cd1186d3595f311bcf47ab67e1e1e19e73274c1cb25cfb35"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeAliasFragmentImpl (LCOM4 7): TypeAliasFragmentImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11350}}}],"partialFingerprints":{"codehealthFindingId/v1":"86a7380e1405bb407337af760b66224cbfc72969c2bc8c45bc95cbbf9cf90764"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NonCovariantTypeParameterPositionVisitor (LCOM4 7): NonCovariantTypeParameterPositionVisitor\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/element/non_covariant_type_parameter_position.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f26e0618e32b15e6a57f3d50daf45b062934430123a78dc181b40daadc00351"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NeverTypeImpl (LCOM4 7): NeverTypeImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":1189}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e523473895999fc492b2e9e849b270ba149df8574f9d3ac98ee8aaad50a31e0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordTypeImpl (LCOM4 7): RecordTypeImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":1296}}}],"partialFingerprints":{"codehealthFindingId/v1":"992aa85386e16e21a5adefff031bf4dc70589aa0927ef6ca704c8c6256812886"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FindElement (LCOM4 7): FindElement\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/test_utilities/find_element.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ed4b10cd6e7ef89ec175a76f18b704fca9072fecd838a872d77b7c13ecdaedf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BaseIRContainer (LCOM4 7): BaseIRContainer\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"62ef8d4ec056eabf4e99cff25c9c74fa5ca3a2d81bc2719604eae0fd75ce2847"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Scopes (LCOM4 7): Scopes\u0027s methods fall into 7 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 7 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":"pkg/analyzer/lib/src/wolf/ir/scope_analyzer.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d34e671a8e555bf2706c901208ec0e3b4385cef0d4674eeb557f2d4a1be1a58"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartEditBuilderImpl (LCOM4 7): DartEditBuilderImpl\u0027s methods fall into 7 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 7 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":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b19062b74fc7447cae1ebf83ca90faf4b758bee8814a39b7c0b82addd60273"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartTypeSubstitutionVisitor (LCOM4 7): DartTypeSubstitutionVisitor\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1055}}}],"partialFingerprints":{"codehealthFindingId/v1":"85a61f3631ca9664f6b4f9d1ef5129029d7e29a8a6de7ea7b883e6779fc8ade6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TracerVisitor (LCOM4 7): TracerVisitor\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"e55e7429ab92aa05dbd43290a73c7b0e37af0bb7ac94a9888f72480f93a5097a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParameterTypeInformation (LCOM4 7): ParameterTypeInformation\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":803}}}],"partialFingerprints":{"codehealthFindingId/v1":"1abe7f612377619b9fe54e593d3087a451120de9a70fd39fbcfccee2f6ccd773"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DynamicCallSiteTypeInformation (LCOM4 7): DynamicCallSiteTypeInformation\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b61f3b5bfc784b48aeaf7a3b82713d18e134d92cba4d3e83e3d4af69e2d414e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnionTypeMask (LCOM4 7): UnionTypeMask\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"454b33b39de79ed312993e81756619bf2296b7733461d696b0dacd1d60f72721"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TrivialRuntimeTypesNeed (LCOM4 7): TrivialRuntimeTypesNeed\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":816}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa8b76840cd7c092bf4aa064b7a7fb708b16a7d614470f1a52b4ba87379fa06"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ContextClassData (LCOM4 7): ContextClassData\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":1210}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb1a20200d95a7d95e014b8ca09c2d0ffe14284b2fd195a57d3d2fd62d8a8c08"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ContextEnv (LCOM4 7): ContextEnv\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1cace23def598f65d7cb1a8ab4d6d21114d7b7e5772fa20f69adac00a3ce096"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordClassEnv (LCOM4 7): RecordClassEnv\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dea796b3aae56beb68b9e0c9a0b6080f7d8fec26277f6b27cb58e1b121a4f49"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordClassData (LCOM4 7): RecordClassData\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/js_model/records.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"05cf428f8918775a357da76813fb8a2f580441896582ca8b521a21e3500249bb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: KernelToElementMap (LCOM4 7): KernelToElementMap\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7b59a64befd25d85e8c9046ce00bc0e38d9510473c289319cdf49cb7e372766"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HInvokeDynamic (LCOM4 7): HInvokeDynamic\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1965}}}],"partialFingerprints":{"codehealthFindingId/v1":"7304cfef8d784165811b5d69bbba38a013e5f786847c3f1a12d39062855f2a70"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HForeignCode (LCOM4 7): HForeignCode\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2728}}}],"partialFingerprints":{"codehealthFindingId/v1":"a91d335acd96c106468c02de1d41e12529f29fbb09c3db0a840e33dae46a2cfe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HNullCheck (LCOM4 7): HNullCheck\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3929}}}],"partialFingerprints":{"codehealthFindingId/v1":"a85a89afbe6cf7695234d01dff18293fbd8eb02042dc64bee85f0ab4ad99696a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HAsCheck (LCOM4 7): HAsCheck\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4725}}}],"partialFingerprints":{"codehealthFindingId/v1":"420899bafade81b8fd1a94fba8c3bc9cb85415b27339f03a05432bc0c3e25229"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaInstructionSimplifier (LCOM4 7): SsaInstructionSimplifier\u0027s methods fall into 7 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 7 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":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"32016ff0340a5c2c39a17c97e186510761b015cd89c8c36b95a5dda211578977"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartdevCommand (LCOM4 7): DartdevCommand\u0027s methods fall into 7 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 7 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":"pkg/dartdev/lib/src/core.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d6ff9f4ed03fc636e0d2a1b49631641a3ae4ecb88fd830b4ee03ee4b8b7fd6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TypeRecipeVisitor (LCOM4 7): _TypeRecipeVisitor\u0027s methods fall into 7 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 7 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":"pkg/dev_compiler/lib/src/kernel/type_recipe_generator.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"c533b65fd00b1d4b7a4e4a51a7a27943e3ebb15df7641d0838e14d55795541d9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: OperatorIdentifier (LCOM4 7): OperatorIdentifier\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/base/identifiers.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d65ce513e790be244167d75df490b7643feaa133dc5b9ef499302ff56b0cf9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FormalParameterBuilder (LCOM4 7): FormalParameterBuilder\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/builder/formal_parameter_builder.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"7efeab7dbfac51d9a81e438bc2a1c19868f9c9e90d8420bf0969c754c54414c7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeAliasBuilderImpl (LCOM4 7): TypeAliasBuilderImpl\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/builder/type_alias_builder.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"45f576f1fd31db629ed886613ce9d6b1c72384d522b2a87157a6931c6bbec393"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillMemberBuilder (LCOM4 7): DillMemberBuilder\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/dill/dill_member_builder.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"121e29b11eb99aa2db32970cecda99c59e4c2f69e831bc2bf4cd53900ceca2dd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorBodyBuilderContext (LCOM4 7): ConstructorBodyBuilderContext\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/fragment/constructor/body_builder_context.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"14cf7c71f982a6ffcbd74e98db8fb421c5ca930a6d32937b37f5c87bf40ad8c3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrimaryConstructorDeclaration (LCOM4 7): PrimaryConstructorDeclaration\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":1252}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0aa549fe388d0606e2f245a1b837a25c002100db221582ce825c9cd4654348c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BodyBuilderDeclarationContext (LCOM4 7): BodyBuilderDeclarationContext\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/kernel/body_builder_context.dart"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"76b1487f3fd69be91fe94a8b008d5789347f057256528b26fedde48ac9045d6e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StatementConstantEvaluator (LCOM4 7): StatementConstantEvaluator\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":6157}}}],"partialFingerprints":{"codehealthFindingId/v1":"560411f4f133b33b37a7615d8439cf64ac2963af85b937aac4485642ddbd403c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceCompilationUnitImpl (LCOM4 7): SourceCompilationUnitImpl\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"d628baec4d9c85f28cdc0581522144b3f7ec01851ca2cfb69e165c8ec495a909"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceExtensionBuilder (LCOM4 7): SourceExtensionBuilder\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/source/source_extension_builder.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a444a75dfb159fb6b20388d519cd0a28107237ecd9777c516371afc92ab45a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceExtensionTypeDeclarationBuilder (LCOM4 7): SourceExtensionTypeDeclarationBuilder\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae97941e5ff3820d90f652505cebab6415b695255dedaa98f395796af7b4a63"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionTypeRepresentationAccessTarget (LCOM4 7): ExtensionTypeRepresentationAccessTarget\u0027s methods fall into 7 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 7 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":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1645}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f68e7d2edfcc0ec0f131f2534625a1716d07f5273f8ab6c88eea6330f3209c6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedDeclaration (LCOM4 7): InterpolatedDeclaration\u0027s methods fall into 7 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 7 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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2707}}}],"partialFingerprints":{"codehealthFindingId/v1":"a32caa11617c9ff38cdfd4cb340aa65de412db337e5cabb572612d39fe234d06"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeLiteralConstant (LCOM4 7): TypeLiteralConstant\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b58a270e99adb2510b094101c997b84a4927a7a0dfe9b925094a9093b366de"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Extension (LCOM4 7): Extension\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/declarations.dart"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff6e86b293fc2b74b39190c235cbe089e4a1f9437f2a70c2a33e64cdd78cf31a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionNode (LCOM4 7): FunctionNode\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/functions.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"166d2bb77dae76f4606f6bede1a4f2a39474071fc814304ff66f824b4c308f5d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Combinator (LCOM4 7): Combinator\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/libraries.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"99655d69c48599d9bc4dd96828c071ba817b9eedbc515265292a403fca6bddb1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapPattern (LCOM4 7): MapPattern\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"753ab75a20f554a656dbcf1d5031e7a8da89796a8a8541bf3c7655dfbd083ac5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BreakStatement (LCOM4 7): BreakStatement\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"c76abd03e2ee694b121ca6ab78a22f8c6d0c4e7936137a34d8bd038f28f95071"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForInStatement (LCOM4 7): ForInStatement\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"afc8ccde8ce07c07a347b449ced07f3c50d8e4dd8cee96a5261f927d6af6fd3d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ContinueSwitchStatement (LCOM4 7): ContinueSwitchStatement\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a2f7a952f6ea6eee1d0ce595c41e1f769f45c26a8e9a2908b918d8f836e4953"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Typedef (LCOM4 7): Typedef\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/typedefs.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"8470b70d80212eb9466e885e9456bb195af58d464f8cba596b90bd0575e894c8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StructuralParameter (LCOM4 7): StructuralParameter\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d0a304f3ff7a582068f567200e6cb75c40b1f6c3181d75039252bc966bda20"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StructuralParameterType (LCOM4 7): StructuralParameterType\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2442}}}],"partialFingerprints":{"codehealthFindingId/v1":"26419e35a7a290ab5237531e22ce8a9e8215d5d3c91b795cdb018b9164962502"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartTypeEquivalence (LCOM4 7): DartTypeEquivalence\u0027s methods fall into 7 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 7 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":"pkg/kernel/lib/src/dart_type_equivalence.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"ced8d1b814cafb1268b2e5012dd10f66c5a2a10df6d181e81d65f0bec760ebe7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NativeCodeOracle (LCOM4 7): NativeCodeOracle\u0027s methods fall into 7 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 7 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":"pkg/vm/lib/transformations/type_flow/native_code.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6bd3eba089e8d55d96af3fa0eb6367fb2783ab75e3c49df0f5045d207c0e963"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ToHtmlVisitor (LCOM4 6): ToHtmlVisitor\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/tool/spec/to_html.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f7f15251afc587d0f210b797f4043205d7c1aebbdda341e12e053427d9580e0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CodegenMatchersVisitor (LCOM4 6): CodegenMatchersVisitor\u0027s methods fall into 6 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 6 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":"pkg/analyzer_plugin/tool/spec/codegen_matchers.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cc0c5a1f41b1bb85aba95d6d2844cf744f3622c210c524dc1d485919aad80b0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ToHtmlVisitor (LCOM4 6): ToHtmlVisitor\u0027s methods fall into 6 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 6 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":"pkg/analyzer_plugin/tool/spec/to_html.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ad5652608d696bdb6de1b2fe681afe0cfa4722f3a373518edbf90f4357afade"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Dart2jsCodegenStep (LCOM4 6): Dart2jsCodegenStep\u0027s methods fall into 6 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 6 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":"pkg/compiler/tool/modular_test_suite_helper.dart"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf834d254fb277de5ea15ae2075f2899a195694e48a016582d12b917b6a481f9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantCreator (LCOM4 6): ConstantCreator\u0027s methods fall into 6 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 6 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":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"16d0bf363a83c67c116688be8f57b51bafc230cab316bd7bdb073fdd9b4130b2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _UsageCollector (LCOM4 6): _UsageCollector\u0027s methods fall into 6 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 6 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":"pkg/dart2wasm/lib/constructor_info.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ff1a94b9238147a1673445df86eaaac42e7c100abf41699d0ece8e1cf7dbf52"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _WasmTransformer (LCOM4 6): _WasmTransformer\u0027s methods fall into 6 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 6 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":"pkg/dart2wasm/lib/transformers.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"679175b18f9c3dbdfe8ec870e4d8a051d31a7a2a55d30158cce448cf4492a93a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DepthMarker (LCOM4 6): DepthMarker\u0027s methods fall into 6 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 6 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":"pkg/front_end/tool/fuzz/gReader.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f75b696fc56f4ef86da1a8268e05e8152eaf4e1d01b254cadf223892f4aa15b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CoverageVisitorStrategy (LCOM4 6): CoverageVisitorStrategy\u0027s methods fall into 6 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 6 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":"pkg/front_end/tool/generate_ast_coverage.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"96a49d6ff4b55e464d5f9d05eda6cdfacb8ebb1471ec3594322d9aeed0c601ce"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: OverlayFileSystemEntity (LCOM4 6): OverlayFileSystemEntity\u0027s methods fall into 6 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 6 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":"pkg/front_end/tool/incremental_perf.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"0be5eef0f66cb56b0c43c457ad4db758ea7c2ce91fd03af2b2487b9dd5e0beeb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _AttributeMap (LCOM4 6): _AttributeMap\u0027s methods fall into 6 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 6 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":"tools/dom/src/AttributeMap.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d37711d8dfc2fce7f7ce21901dc67aa8b0d283acbbfd51be60b0b0107f44481"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _InstanceMirror (LCOM4 6): _InstanceMirror\u0027s methods fall into 6 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 6 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":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"8024b6c0bea51cec5ac0670c5263e48841419b6eb0215dbd5cc9c28cf5559b63"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TypeVariableMirror (LCOM4 6): _TypeVariableMirror\u0027s methods fall into 6 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 6 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":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":938}}}],"partialFingerprints":{"codehealthFindingId/v1":"0874256c954c84b360722e37f84c30022bbcd30c463cd99ac841a9d7cf7bb800"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _MethodMirror (LCOM4 6): _MethodMirror\u0027s methods fall into 6 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 6 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":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":1156}}}],"partialFingerprints":{"codehealthFindingId/v1":"f49d4e1b2f6a83b0b6dc2300f8eba4da7a470a0c2e3737fc4cff0dd520b0e9e9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _StringParser (LCOM4 6): _StringParser\u0027s methods fall into 6 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 6 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":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":1656}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b182ab6108d820c77298e1e06d420355c9629d340710bd4da9717b3c432f2d0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: F32x4 (LCOM4 6): F32x4\u0027s methods fall into 6 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 6 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":"sdk/lib/_internal/wasm/common/simd.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"0425dc5e2eaea75608d397d7215de17a80708b95651153fd98cb7adac7a11d89"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _FutureListener (LCOM4 6): _FutureListener\u0027s methods fall into 6 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 6 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":"sdk/lib/async/future_impl.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0fb39dbf8129b3b101b50dd5e965d566c7544e6b291cbf8cd4c264b4ff83120"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FakeChromeAppInspector (LCOM4 6): FakeChromeAppInspector\u0027s methods fall into 6 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 6 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":"pkg/dwds_test_common/lib/fixtures/fakes.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c48f7ebe9cd2e5f050c78cbb9425906e57e81f63d59460287ba02bd78427c5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FakeInspector (LCOM4 6): FakeInspector\u0027s methods fall into 6 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 6 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":"pkg/dwds_test_common/lib/fixtures/fakes.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"221ad2975a2db18c773dd9f2af6580880239cb5da4cf59e55ab9767582fcdd0f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _AttributeMap (LCOM4 6): _AttributeMap\u0027s methods fall into 6 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 6 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":"sdk/lib/html/dart2js/html_dart2js.dart"},"region":{"startLine":36521}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec2ccd902939dfe4344f16b0adf046e6d51b39b105a08fcb196034a2ee0a1e45"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TestInspector (LCOM4 6): TestInspector\u0027s methods fall into 6 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 6 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":"pkg/dwds_test_common/lib/integration/test_inspector.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"71c6ee8c153a9e598feba5a8460af13227f022288b03b6786b10437d4270f5bb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _Directory (LCOM4 6): _Directory\u0027s methods fall into 6 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 6 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":"sdk/lib/io/directory_impl.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"227439e995544bc48f410bea898f762073b5572cd82ed4146cc56de029775184"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AbiSpecificNativeTypeCfe (LCOM4 6): AbiSpecificNativeTypeCfe\u0027s methods fall into 6 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 6 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":"pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f95769b11add03cc92bd27774ffdd969ab90845383ff2637efdd0c41b129c12"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Lowering (LCOM4 6): Lowering\u0027s methods fall into 6 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 6 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":"pkg/native_compiler/lib/passes/lowering.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"01bd96737ae7a9c27a093ff71d9eb5d5cb27e73c0afd527231fcb944318109a2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnresolvedIdentifier (LCOM4 6): UnresolvedIdentifier\u0027s methods fall into 6 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 6 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"caddd43cf0a2b1a960da641c29c714a978cd0c61abf831375799575d5fca8bcb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnresolvedAccess (LCOM4 6): UnresolvedAccess\u0027s methods fall into 6 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 6 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"06bff3d90239fd53a3939164e87d66720f2e7876c234e41c88873f0fa532cde4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VoidProto (LCOM4 6): VoidProto\u0027s methods fall into 6 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 6 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":947}}}],"partialFingerprints":{"codehealthFindingId/v1":"c483f16b1d82a56233584d55a73f4bae6bdecbeedb57a6e65f86751b86125f44"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DynamicProto (LCOM4 6): DynamicProto\u0027s methods fall into 6 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 6 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8ce1b2224849b8f025090b676b4d0283f9700ea0ed464aca28ce02fbc49e1ec"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldProto (LCOM4 6): FieldProto\u0027s methods fall into 6 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 6 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1079}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1b0e6d5952d90dc3f4cdb1a0fd4083109489cd552bf30678065e26799c7b7c5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceAccessProto (LCOM4 6): InstanceAccessProto\u0027s methods fall into 6 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 6 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b4b1456b6ee8f2e9548ce43632ea7107270fedae1df0fef2862dd698b778fdb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceInvocationProto (LCOM4 6): InstanceInvocationProto\u0027s methods fall into 6 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 6 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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1410}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fb870bdee1a0bc4c41f580920e504aab4472692ea75c5c2cf61ada9d4e98559"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassMemberParser (LCOM4 6): ClassMemberParser\u0027s methods fall into 6 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 6 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":"pkg/_fe_analyzer_shared/lib/src/parser/class_member_parser.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d204efe35d235eeba5016efa979ab24ccfe30eac61ad87a60af688ede394be4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UndoableTokenStreamRewriter (LCOM4 6): UndoableTokenStreamRewriter\u0027s methods fall into 6 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 6 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":"pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f29e82660c709cbb0ef2599c193387141e2e96f069d0232e1948db66d336fd2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PluginCodeActionsProducer (LCOM4 6): PluginCodeActionsProducer\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/plugins.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b783aefea2cd17efeacf8e4ec69522a27605d8ac1b7548acaf3e078c3969cbd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LspAnalysisServer (LCOM4 6): LspAnalysisServer\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"03dfd79144aa308a78010356375b84b0ff21dde4f41a882184c6b304b101e9f6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FeatureComputer (LCOM4 6): FeatureComputer\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdab3c425f333012288dd8e107703e6c4d15ee312e5da23e1320012c16407695"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _PushConstVisitor (LCOM4 6): _PushConstVisitor\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/services/correction/dart/remove_const.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4c36c3ab4da01c03e9db48907fe48ecfc542469edceed4dedef47b10ca624dc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AddImportPrefix (LCOM4 6): AddImportPrefix\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/services/refactoring/add_import_prefix.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4a4b2eafde62aa2076c86d55bb6eb979c72d5b6e1e0420940adb9d18ecbd02d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameConstructorRefactoringImpl (LCOM4 6): RenameConstructorRefactoringImpl\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_constructor.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b68b2d7f12f6c5b5055e832797b4c75eef1ff30e209eabcef639d5b96c1c94"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameLabelRefactoringImpl (LCOM4 6): RenameLabelRefactoringImpl\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_label.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d1dca2b93945c6150a463922a27218d0561f1037397210918753c18cfe4f677"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameLibraryRefactoringImpl (LCOM4 6): RenameLibraryRefactoringImpl\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_library.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7392ccf91314d4f023beda89333628e40b485d603164f24a107cb9cee794805"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameLocalRefactoringImpl (LCOM4 6): RenameLocalRefactoringImpl\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_local.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd2c060776f507a47aa714a02b555fdc903cf6c24e66bf1f74c95da6d70d0cda"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameTypeParameterRefactoringImpl (LCOM4 6): RenameTypeParameterRefactoringImpl\u0027s methods fall into 6 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 6 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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_type_parameter.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f145978a5b9592e389837974ed47635dc78fa6828dfec9fc6b2c3bd145ebe63"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ResolvedUnitResultImpl (LCOM4 6): ResolvedUnitResultImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/analysis/results.dart"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"c20e4af57fd8a3c4186b8edc05e8a16a57975502c840c1ce60b78913eb88ad28"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CommentImpl (LCOM4 6): CommentImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":8809}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f07b709dd3e4ac8ed56134aac3e125512aef16757f71ed70af1f3d2b481e57c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForEachPartsWithPatternImpl (LCOM4 6): ForEachPartsWithPatternImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":21033}}}],"partialFingerprints":{"codehealthFindingId/v1":"532550bd06b1c859e6cf3b1b8973f224310a39de96ceaa84959983e03a244fc6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionDeclarationImpl (LCOM4 6): FunctionDeclarationImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":23704}}}],"partialFingerprints":{"codehealthFindingId/v1":"029eedad764b622d6f867989ca2a08943dccaec3dbfed10662804dfe30177d69"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HideCombinatorImpl (LCOM4 6): HideCombinatorImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":27096}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff6b3831a8fe8f774606a5e4309a077ae98bf4480f7776dc511e72d61aa82b0c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LabeledStatementImpl (LCOM4 6): LabeledStatementImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":33597}}}],"partialFingerprints":{"codehealthFindingId/v1":"0533bd855ca71237c60f77f8b56ad0e7503256f7ae749b51a36e77f564292266"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetOrMapLiteralImpl (LCOM4 6): SetOrMapLiteralImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":50521}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ac15ca2308d271851a47511c5e4a42c78af25c2dc10901391a86438559bb81"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ShowCombinatorImpl (LCOM4 6): ShowCombinatorImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":51107}}}],"partialFingerprints":{"codehealthFindingId/v1":"33d3cc3e200beb0bb8d3f4a46528043df22211b259b6994712f9910f0c0a9a44"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SwitchStatementImpl (LCOM4 6): SwitchStatementImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":54522}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc8aa1b939a9afe375d958f79db8afc38c9fe511841638f22825539ccdf5624"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TryStatementImpl (LCOM4 6): TryStatementImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":55800}}}],"partialFingerprints":{"codehealthFindingId/v1":"67700fbba7e3e5ed435cb31d2452c6b7872b38479a0c5d8dd84d5ed754fbfb32"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BoolState (LCOM4 6): BoolState\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c0f1b29914a105faea166c83dec2de2606aba3d74cd6c11bf4ac9b6f64845af"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapState (LCOM4 6): MapState\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2664}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ed1363e410b12a7e4ab8b6d5d2a20719ce8c06ea3b9cc54d64276f367a5f7b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetState (LCOM4 6): SetState\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2969}}}],"partialFingerprints":{"codehealthFindingId/v1":"684c061edb60671a8f0433a7990186f912694b22a050e68e42ecdab2095afdd0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocalFunctionElementImpl (LCOM4 6): LocalFunctionElementImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":8280}}}],"partialFingerprints":{"codehealthFindingId/v1":"44471b22a28404713e19451b44c9da38d3f4cb10a5fab699209573136ce56929"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocalVariableElementImpl (LCOM4 6): LocalVariableElementImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":8353}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b745d93ab10587c71b43f493a092a3ab30f847e5443609da77c764aa3d3ab22"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MixinFragmentImpl (LCOM4 6): MixinFragmentImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":9274}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22c1796140c193b74b46ef3d35b85a0ab376f782cc5d571f02f9e61e7333ceb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionTypeImpl (LCOM4 6): FunctionTypeImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"decbacf17964f766b35c23908627b0d0e173029135f973c68b519c4d38490b67"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeParameterTypeImpl (LCOM4 6): TypeParameterTypeImpl\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":1630}}}],"partialFingerprints":{"codehealthFindingId/v1":"566c97b1681abceeafbda10f7ab7ca9b2ac0ac46fa314c77d03b8b54f97dcade"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EmbedderSdk (LCOM4 6): EmbedderSdk\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"12166a31a541c7c51dfff8125ece7ba24e3253792b6f9eab7614c9dd9884296e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MockLibraryImportElement (LCOM4 6): MockLibraryImportElement\u0027s methods fall into 6 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 6 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":"pkg/analyzer/lib/src/utilities/extensions/element.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a4548cb620ab6071742f14c2a4e28d9d58be048ccff42ee5ed4b5fc40470911"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JsNameConstantValue (LCOM4 6): JsNameConstantValue\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"6915b66162e6792ff2a7045b9980df83fc90f4940f0533e325462226eb8b5761"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantReference (LCOM4 6): ConstantReference\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/ir/constants.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"42771a297b880bd2d1cebb5662f2c68b6a78295aa4ae6cc05f7e4f0109caee69"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantImpactVisitor (LCOM4 6): ConstantImpactVisitor\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/ir/impact.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe35abf487dc3cbe9fcbbd1e90928f9a00c43effd41e101c0d9c9c3c72eb4999"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AsyncRewriter (LCOM4 6): AsyncRewriter\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1956}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2528a41f7b8b762fba39ab0373129a53fca7a78a85e1a273775ae1727829dd7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SizeEstimator (LCOM4 6): SizeEstimator\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"1efe8b1c0c5e16d166d6de7e090f66f0e12c37faa486e6078d5fec70cdaf9b21"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DeferredHolderParameter (LCOM4 6): DeferredHolderParameter\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d30a4fe61a8588358a64d8cf08f429446e889d52bbdd852118899c68d50adc1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TypeVisitor (LCOM4 6): _TypeVisitor\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"08932c27da2f7b331c0ddf497e8099f77e76e9bc5a76a6804e8f23614d14dcb5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _DartTypeOrdering (LCOM4 6): _DartTypeOrdering\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/js_emitter/constant_ordering.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"1385b3ad5239076a2d45e8bbdbe44c4cf37a2d3ed432da6ade9e295364ceaab9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JConstructor (LCOM4 6): JConstructor\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea44a11542662a2cb061b41a46f44d13905a3b33514283d5c17250b7238cba74"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JClosedWorld (LCOM4 6): JClosedWorld\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/js_model/js_world.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"02bc1370523cf30c7f96ce88e939d91f817bff6b888a3f942b236c5e8201c4f5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompilerOptions (LCOM4 6): CompilerOptions\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"82fd7d1798d0f5b3a1835e877148ae82c9c52dfb3ce1372630a5a138f2f2f5bc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaInstructionMerger (LCOM4 6): SsaInstructionMerger\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b1004e181fdd197d337da25c120048679b73728db77e7ce29c2b77d4dc7d737"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HInvokeExternal (LCOM4 6): HInvokeExternal\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2620}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ca085be0707ce96770e8eaa7b3050bb7ca890b775313b8b94da36789629ee47"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HPrimitiveCheck (LCOM4 6): HPrimitiveCheck\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3855}}}],"partialFingerprints":{"codehealthFindingId/v1":"466da651c242449e2e10870116696a11d69ee79e0fdfa2f8bae8cc8922da9c04"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HIsTest (LCOM4 6): HIsTest\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4526}}}],"partialFingerprints":{"codehealthFindingId/v1":"75889d37576ac353660364743bf0a9c8215ae99bb2b19139c50f625e6bbeb8ee"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HAsCheckSimple (LCOM4 6): HAsCheckSimple\u0027s methods fall into 6 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 6 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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4781}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b5ad3f6e4ed74992cc41dac040e5f883f5e772ca85d74bb00b281e525d2ff4d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartRuntimeServiceDdsBackend (LCOM4 6): DartRuntimeServiceDdsBackend\u0027s methods fall into 6 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 6 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":"pkg/dart_runtime_service_dds/lib/src/dds_backend.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"99f7694e7b5ba3816a7aff0a32ddfb9a5d8c160f2c35c3a8dc496cac954624a7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ResourceProviderFileFileSystem (LCOM4 6): _ResourceProviderFileFileSystem\u0027s methods fall into 6 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 6 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":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"435fc426388afb1593b6d35b2ed40a427660a1f54dc395b7086b3d224547e630"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ChromeProxyService (LCOM4 6): ChromeProxyService\u0027s methods fall into 6 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 6 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":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"599e848e84af966c6cb374a396ea139a14c8abf049aed24c211aff3a0738aa8d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WebSocketProxyService (LCOM4 6): WebSocketProxyService\u0027s methods fall into 6 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 6 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":"pkg/dwds/lib/src/services/web_socket/web_socket_proxy_service.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b92d4171c5f9e7305c1e6005e3a57c28ccfa0595ac229141e79030f4dbe4cf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HybridFileSystemEntity (LCOM4 6): HybridFileSystemEntity\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/base/hybrid_file_system.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b9ec024a619e064e4ef18e04bc82a3eb11e36bb2abbd429f67dce58d1942c3a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidBuilder (LCOM4 6): InvalidBuilder\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/builder/invalid_builder.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d3921d62c7aadee247ab700d6f9b00044733adcf77bb7d2e918d2ef75941c4e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PredefinedTypeName (LCOM4 6): PredefinedTypeName\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/builder/type_builder.dart"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"01c3c05489d63ba7fbaaea7ca5decd4732ec7b1913089908c4620ec95c1536d0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeLabeler (LCOM4 6): TypeLabeler\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b43333468dbfcdf18697909b490b5e15233d8642adae3d9a1ea8e71ec95fb65"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillFactoryBuilder (LCOM4 6): DillFactoryBuilder\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/dill/dill_member_builder.dart"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd17a0ea20eae6a610c85545474a99b6d88548b7f18a95db5495cdacb1789bec"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorFragment (LCOM4 6): ConstructorFragment\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/fragment/constructor.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b9c362a2f9a6303926a4b6d585d82d8afc9c690e8d6aa13cd9380f146d1b62e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RegularConstructorEncoding (LCOM4 6): RegularConstructorEncoding\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9f9f1c0264dee53765dab0796fb62060b3c4caa9f79803848406f0ac65af103"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionTypeConstructorEncoding (LCOM4 6): ExtensionTypeConstructorEncoding\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"eee62c9f8539b62840a71bdfc6158613c406b1714896393281d2fac363d74ec1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionConstructorEncoding (LCOM4 6): ExtensionConstructorEncoding\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":1049}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb4aab99e183013d67b16a20caecdb1348eb67e707013664e94d591aed263e2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldFragment (LCOM4 6): FieldFragment\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/fragment/field.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a3cd19046b4143a6795efb576d747cdd054b3dc00adb9d835ad1ba8b71e1306"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BodyBuilderImpl (LCOM4 6): BodyBuilderImpl\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeb9dbd8fb851e5f205c8ebc8f586fe8cc2a20e32f0b82c8aa250b13bad5f742"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantsTransformer (LCOM4 6): ConstantsTransformer\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d20fe7adbcedbedad9b5246d2cb301ddb3e5c9224e103ddbc80b9fdb20610a2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LoadLibraryGenerator (LCOM4 6): LoadLibraryGenerator\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":4115}}}],"partialFingerprints":{"codehealthFindingId/v1":"52c4ade22df2bd34b536e4f70800fc60f554c752017fd5d7deece0aa707352d5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SynthesizedInterfaceMember (LCOM4 6): SynthesizedInterfaceMember\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a766afcf787aedc8c20bb787cf5e8534febfd6e05db578161559b662dcc1735"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassMembersNodeBuilder (LCOM4 6): ClassMembersNodeBuilder\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e9f5d1da5fc6832f10b366f5356bd70be653dd5094a289b35ca50deae199f6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InternalPatternVariable (LCOM4 6): InternalPatternVariable\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":1133}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f6c553e2ff635765cc1abd4aa6e666a021e772988a0e69ccb25f6dd4c12f6a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InternalLocalFunctionVariable (LCOM4 6): InternalLocalFunctionVariable\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":1228}}}],"partialFingerprints":{"codehealthFindingId/v1":"93f212ebffc2f1fb613334af8324476ff829f4bf8dbfdbb825fee25986d43de0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableBuilderImpl (LCOM4 6): VariableBuilderImpl\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/kernel/kernel_variable_builder.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"61ec55b86ca335a51d7113ded6749a5d68250ba0a56b807b1d32194d9e45a053"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceClassBuilder (LCOM4 6): SourceClassBuilder\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e8024c9f7272fdc94b0c0909efd07dc0d6cce81791a49157b9b089c6e58ef9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _CompilationUnitData (LCOM4 6): _CompilationUnitData\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":1576}}}],"partialFingerprints":{"codehealthFindingId/v1":"db9ec6596cd6e980e15ff3b2fd15d1ac8fda50c94482f79bf4c265f3d9fa0ac8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImplicitLanguageVersion (LCOM4 6): ImplicitLanguageVersion\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1743}}}],"partialFingerprints":{"codehealthFindingId/v1":"834db8ee3f8b9ad85ecec7f0f875d5c928a9474815a78de13bdf22ceae644ee0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceTypeAliasBuilder (LCOM4 6): SourceTypeAliasBuilder\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"640c84753977c19be678c22a8b7eee797b5d493d64a864b77bfa4ad1ebc150bf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InferredListElementInferenceContext (LCOM4 6): InferredListElementInferenceContext\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/type_inference/element_inference.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"94e3b559229bb0e9570a819c82d54be9e448fbd0fe2940549ef6d74f832a3f99"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WrapInProblemInferenceResult (LCOM4 6): WrapInProblemInferenceResult\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/type_inference/inference_results.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae5736ac6b40001ee49d6133fe29e372a0d5332f4dc79dec5bbe1775b2bb9e98"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionAccessTarget (LCOM4 6): FunctionAccessTarget\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"591a43d0dfb2664c773599219c09dad54feb568b3a854c0cda4cbb0b8a65ee11"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordAccessTarget (LCOM4 6): RecordAccessTarget\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1514}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c27bb848fddc22f95c2d3154ba1109fdcee3eede8ecfca7f4206f6edbad538a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SharedTypeAnalyzerErrors (LCOM4 6): SharedTypeAnalyzerErrors\u0027s methods fall into 6 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 6 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":"pkg/front_end/lib/src/type_inference/shared_type_analyzer.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2bf4ee734b256c0d465b9ba11c40310142dbb661009af210e1fbd2285116062"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LiteralExpression (LCOM4 6): LiteralExpression\u0027s methods fall into 6 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 6 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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1509}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dfe85be55ac14932d7009eb0f0311b114a49867f62e545d68a3fe4b8787a3a5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedExpression (LCOM4 6): InterpolatedExpression\u0027s methods fall into 6 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 6 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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2569}}}],"partialFingerprints":{"codehealthFindingId/v1":"f914963d5a12719c81bc95f843be0f2fa20f0a5bc69bd154d5516d5801336ce2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedSelector (LCOM4 6): InterpolatedSelector\u0027s methods fall into 6 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 6 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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2656}}}],"partialFingerprints":{"codehealthFindingId/v1":"95aad9d461c3e6289440bc478cbdcaaa803c7f3650f1bb5fee81307187ec5e3b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RegExpLiteral (LCOM4 6): RegExpLiteral\u0027s methods fall into 6 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 6 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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2741}}}],"partialFingerprints":{"codehealthFindingId/v1":"12946f646ebf1e639814e612869485c0bef59f9c60765201dafcb08161c0151e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapConstant (LCOM4 6): MapConstant\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"bae50cf0bb02ad3da23c17f6c27b175ea7ad50b8f9739eff2e723e4878dfbde4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListConstant (LCOM4 6): ListConstant\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c1bcbfb8cbbc88d09a3faa5ac3a9b03418317d791cbb8610e5f576f5b80df9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetConstant (LCOM4 6): SetConstant\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"05fdff90c05d2e9267c84fd21f1f80e7a6d307fd176269bd74278fa38390e9c6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordConstant (LCOM4 6): RecordConstant\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dafa3bdb510ac99eb9b136ce7d8724006aa73af1877b2aafa47480396e6953e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceConstant (LCOM4 6): InstanceConstant\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"034ca35af010262c712beb4cc9327038a29621966fe9d94c8e7e95897ece3a67"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstantiationConstant (LCOM4 6): InstantiationConstant\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"a50e6ef09c27f3b7a8ffee8c98be125e21a9577cbe8364450901e72e75e75f44"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypedefTearOffConstant (LCOM4 6): TypedefTearOffConstant\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"27561f91e5f668a9ccd5b4f29e3bbb3ce1089f9d9c96e53a45d1ce4f16407948"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnevaluatedConstant (LCOM4 6): UnevaluatedConstant\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/constants.dart"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"c17804ee04f00c76c2cd1fbfa1ed6aef290fb5855b49aee7c58a6d990dada291"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorInvocation (LCOM4 6): ConstructorInvocation\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2906}}}],"partialFingerprints":{"codehealthFindingId/v1":"96a4c25c22c69b6d98c0a830315fb654ed086fd4bc8a993622bf14d1b7361a5f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Throw (LCOM4 6): Throw\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4459}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc30ca10c1fc90762ed37645446aa7c083f34bed1285cba3eb9d7928289e2c7f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SuperInitializer (LCOM4 6): SuperInitializer\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"315360690c60553d705305215d4f6260ab8101749cedbaecfb17697d36f95bc1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RedirectingInitializer (LCOM4 6): RedirectingInitializer\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"790942dc332520663450454f1c1041f574b0dd5177b66c022c2cbaa8ad76de3c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Name (LCOM4 6): Name\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/names.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7296d8550f164ed8c076aa34fc7844890065a6c051ec0198d1515984374ef6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantPattern (LCOM4 6): ConstantPattern\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"86046ee355a43df5724bed8e0a4d2a55e79a9fbde0f8beff7cfcce00f5d7faa9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RelationalPattern (LCOM4 6): RelationalPattern\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee110d628bbb1378bba7a2060796072dbc70eb878d701d8c16feedd8449b0a5e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternSwitchCase (LCOM4 6): PatternSwitchCase\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1811}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b4cbc409aa22066a6461acee986293682c79bc835dd0f5010d2b49d9627295b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternSwitchStatement (LCOM4 6): PatternSwitchStatement\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1926}}}],"partialFingerprints":{"codehealthFindingId/v1":"9af0a01f8c69f96783496e17a8285c3bb4366120b10140304ec1798e3af1bd41"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FutureOrType (LCOM4 6): FutureOrType\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1707}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfdbf5cbc0156420a0ee28ba7f934ec4ad52382ed1381787e10dba69d8763d67"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IntersectionType (LCOM4 6): IntersectionType\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2046}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d7df55b18313698a00127f2ccec1576b2c704c25346addb6976f448381e370e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeParameterType (LCOM4 6): TypeParameterType\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2351}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa6c45e88ce1602fa87b7aa591b6eac8571994ae349b898690b6ce7ef3f60b8f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordType (LCOM4 6): RecordType\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2546}}}],"partialFingerprints":{"codehealthFindingId/v1":"41852962414ea5c3dbce40b810fd2908e5a4b6fdcc09a9375f421de397fcad8d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PositionalParameter (LCOM4 6): PositionalParameter\u0027s methods fall into 6 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 6 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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1695}}}],"partialFingerprints":{"codehealthFindingId/v1":"45c071d0200f95635cec2fd8c1728af25bd01e4dbd1dc28066ee842c467b953d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _AbstractUnnecessaryOverrideVisitor (LCOM4 6): _AbstractUnnecessaryOverrideVisitor\u0027s methods fall into 6 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 6 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":"pkg/linter/lib/src/rules/unnecessary_overrides.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"670f576e1244c363387c673665bc23f83f5ca53eacafdd15cbbf54cc486123c1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassesShallowDiffTreeMap (LCOM4 6): ClassesShallowDiffTreeMap\u0027s methods fall into 6 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 6 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"67cf1e77b5dc19b678aeba09dfd0a84262c0ca31023976807aa930efb78a6ba1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassesOwnershipDiffTreeMap (LCOM4 6): ClassesOwnershipDiffTreeMap\u0027s methods fall into 6 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 6 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"f31b22018fd1c8e91025c0a8db8d594a2d69bc63ad7b1f670783f800807184e8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SnapshotClassDiff (LCOM4 6): SnapshotClassDiff\u0027s methods fall into 6 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 6 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":"pkg/observatory/lib/src/elements/heap_snapshot.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b586bd253341ccfa3d57a807f6ca436e7b92a65ece2b549dea5356b52ce9679"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Matchers (LCOM4 6): Matchers\u0027s methods fall into 6 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 6 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":"pkg/vm/lib/testing/il_matchers.dart"},"region":{"startLine":771}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff596f39cbc1988e0e856e68c052297431161e64898470a5285e69107f0a3efd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeFlowAnalysis (LCOM4 6): TypeFlowAnalysis\u0027s methods fall into 6 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 6 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":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":2086}}}],"partialFingerprints":{"codehealthFindingId/v1":"f945c6184c71e3625fb6128e049b3420af0a9b200d010b3645456286b9066c3c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompletionMetrics (LCOM4 5): CompletionMetrics\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":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bc826d4cfa9f9de77197e503d91bf0d8a00db808b66cfbeb4345dfbe75c9165"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompletionQualityMetricsComputer (LCOM4 5): CompletionQualityMetricsComputer\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":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"10f44f247a3b11aceba80fea5b3bb3e48a0a0b16678c0d0b0fa2c8ac9d2f8803"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RelevanceData (LCOM4 5): RelevanceData\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":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d55bfb2117c638560dc6f11cf81d04b6644f56f7aed9234013c5f407672ee9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CodegenMatchersVisitor (LCOM4 5): CodegenMatchersVisitor\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":"pkg/analysis_server/tool/spec/codegen_matchers.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"f77ec8f5d1a6c35eb80e6145d2184c82912fed72f1ad3784adedb24b32f5ec09"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeVisitor (LCOM4 5): TypeVisitor\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":"pkg/analysis_server/tool/spec/to_html.dart"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"295a79c2b9f7e84632b8ebe0ea89022fd5ed2331b59823abbc73c1b95d2b67a4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeVisitor (LCOM4 5): TypeVisitor\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":"pkg/analyzer_plugin/tool/spec/to_html.dart"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e074becc5370ae970e63cc38fb33db96e381c9a9f1047b4a4d5280fc32d3a7e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClosureRepresentation (LCOM4 5): ClosureRepresentation\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":"pkg/dart2wasm/lib/closures.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa4b1f8c1499e24a75c3619df8bc9d04b98e68cbfc098433a7faad110762fea4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _YieldFinder (LCOM4 5): _YieldFinder\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":"pkg/dart2wasm/lib/state_machine.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea9bf8a15e075d48868cfa1eeff7c96f34e2256820715d8be79cc6c2afc89458"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Symbols (LCOM4 5): Symbols\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":"pkg/dart2wasm/lib/symbols.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dfe983a57778df6e13fdbb4017386e615eb16214007943c6b734df373a5189f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ProgramCreator (LCOM4 5): ProgramCreator\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":"pkg/front_end/tool/fuzz/gReader.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"74455f1290d5e9ceea992156531cb1b4db5e022d5b70f839d1e866c7a26221f3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _OccurrenceVisitor (LCOM4 5): _OccurrenceVisitor\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":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1793}}}],"partialFingerprints":{"codehealthFindingId/v1":"d50ff95a3a16e997dcaaf61e229cd9d595c39367bdacc7c331a3d2821e5875aa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _VerifyingVisitor (LCOM4 5): _VerifyingVisitor\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":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d790ab8436e2105d99c01b6d57820553003bcd72ecf8a1250cc0ec2b178b23"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _JsonStringParser (LCOM4 5): _JsonStringParser\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":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":1470}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d709030b022ae0ba59402628febf8e8d7110e3ef1943e9c502db660a135595d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JSArrayBufferImpl (LCOM4 5): JSArrayBufferImpl\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":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"55dbd19023b55071f0ee80b519be7828fb28f5bf1e9d026ee5e53e037dfc87d2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _BroadcastSubscriptionWrapper (LCOM4 5): _BroadcastSubscriptionWrapper\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":"sdk/lib/async/stream_impl.dart"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7f6892a5b58e6e566a38d8423e7953fe87cfa94c3d468ee9d6c5810a19c2acd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Arm64CodeGenerator (LCOM4 5): Arm64CodeGenerator\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":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"bec46361b5bc7d96fede271a21ae147d7daad299c8781b180c556f82660e41e2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Arm64StackFrame (LCOM4 5): Arm64StackFrame\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":"pkg/native_compiler/lib/back_end/arm64/stack_frame.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"a263d7005fb2dcc14df92ff275a9be81458fccf058106f4f3e175c645421f715"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SplayTreeSet (LCOM4 5): SplayTreeSet\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":"sdk/lib/collection/splay_tree.dart"},"region":{"startLine":916}}}],"partialFingerprints":{"codehealthFindingId/v1":"c172c25ae8d3ca0852e6dd1cc9b642c8a37852991f956d06f736c879e2b3d8fc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _SimpleUri (LCOM4 5): _SimpleUri\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":"sdk/lib/core/uri.dart"},"region":{"startLine":4589}}}],"partialFingerprints":{"codehealthFindingId/v1":"b282651c7794d1ade98c803966357a990319e0b4b2ab0c1a1ecd81ae26b4c774"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MultiRootFileSystemEntity (LCOM4 5): MultiRootFileSystemEntity\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":"pkg/build_integration/lib/file_system/multi_root.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"467edc0a0db5233d7fb93f7e67ac102abfe634a24e7d0d57aa68e9c1fb8cc1af"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrimitiveNativeTypeCfe (LCOM4 5): PrimitiveNativeTypeCfe\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":"pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0563fd6709cd6b125affdc706a75a4b3fe090c2b149dc02b41491992e66dcd7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StructOrUnionNativeTypeCfe (LCOM4 5): StructOrUnionNativeTypeCfe\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":"pkg/vm/lib/modular/transformations/ffi/native_type_cfe.dart"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"54183d6d2381ea0e52e92e36be1af4e65db99315d31679eef66d501ea9d17696"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ServerPlugin (LCOM4 5): ServerPlugin\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":"pkg/analyzer_plugin/lib/plugin/plugin.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"6efd686809202ad41b1ef0fe6c209dc1fd2aafe6c621704abbd2879b6051b715"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullableStaticType (LCOM4 5): NullableStaticType\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":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/static_type.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"00de1a94f96b3ab7dcea1d14b5090c9e41a98b3fd6ccdd2d8537e1e6da3d2f9d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnresolvedInstantiate (LCOM4 5): UnresolvedInstantiate\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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d36cecb0404b29220ee72e24a4c9b97c08fc18528dd708622b1c27057ce82f6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UnresolvedInvoke (LCOM4 5): UnresolvedInvoke\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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"51afa7789fddda43e1571ae7e1c4afd472e54ca4e547a7fe05aa519a9cab2d9c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstructorProto (LCOM4 5): ConstructorProto\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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1027}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd6ebf8c294d9c1dbe653f061f3f8ce5f14ff6376a026ad7144ff781d663950"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionInstantiationProto (LCOM4 5): FunctionInstantiationProto\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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1161}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f8d2130449a78d2f5c004b04262e942ffab79c1b719ff0cd76fc39c39489fd9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IdentifierProto (LCOM4 5): IdentifierProto\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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1252}}}],"partialFingerprints":{"codehealthFindingId/v1":"29a005b9350b948788aed294e60c6bf04bce9a261bbbf1efd039cc2a0fcbfd7f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExpressionProto (LCOM4 5): ExpressionProto\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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1576}}}],"partialFingerprints":{"codehealthFindingId/v1":"31609c15348a66a230efa774f6488282e8284098b8e58659620da46f4e253ef3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Parser (LCOM4 5): Parser\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":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"d81c73917472fcd43aefe65f7f80f2d7da319903a6a8e169c66385a238c9d99c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryId (LCOM4 5): LibraryId\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":"pkg/_fe_analyzer_shared/lib/src/testing/id.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"e077dfc59e0c9975b472e95efe1932bc3e8346425691bb2196f3664fbbff897f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _InlineValueVisitor (LCOM4 5): _InlineValueVisitor\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":"pkg/analysis_server/lib/src/lsp/handlers/handler_inline_value.dart"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a1e312534273f59ea0806cef64bad992dd97cfb10e988c127b78bb59c20d9af"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompletionState (LCOM4 5): CompletionState\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":"pkg/analysis_server/lib/src/services/completion/dart/completion_state.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff2d1709ec6872e9d5a33b64bb721c369d26b13e4624d461755fdffd264bda1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ContextTypeVisitor (LCOM4 5): _ContextTypeVisitor\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":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"c016d25532aa58447f352ef30f2b1c02a3973a6b1e6add70b834cae13c3d6988"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConvertIntoGetter (LCOM4 5): ConvertIntoGetter\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":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba2eff0ec72c58d63a31c3bc7e430563e5bfceacb7bf6cc3d5949416dade0159"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RemoveComma (LCOM4 5): RemoveComma\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":"pkg/analysis_server/lib/src/services/correction/dart/remove_comma.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee435512b012cc51a544f42c2fdf800bfc97affde336c142755926aea374b6a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RemoveTypeAnnotation (LCOM4 5): RemoveTypeAnnotation\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":"pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2382c5ffe768930c9223dcab34eeff90dcd3a0b86eba0d311b4e1df849171cc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameExtensionMemberRefactoringImpl (LCOM4 5): RenameExtensionMemberRefactoringImpl\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_extension_member.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"a39cffc4dfdd89713c348d3d79e172ee154c89e956ceea4c35cf712c0ebf74f9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameImportRefactoringImpl (LCOM4 5): RenameImportRefactoringImpl\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_import.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd5180c32eec036276b9b8098a2bd46d2fed997dabebb1fd5f3ca439ec7a0e82"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameParameterRefactoringImpl (LCOM4 5): RenameParameterRefactoringImpl\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_parameter.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1238e0936ec124008cdc59879578102cb1c67bb0051dbbeac9562bc7f10f7c1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TestPluginIsolate (LCOM4 5): TestPluginIsolate\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":"pkg/analysis_server/lib/src/utilities/mocks.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"23d9acb58ae462d4f57677d7dfed4b42824a07992397442ebc3e485a3b8ee531"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryFileKind (LCOM4 5): LibraryFileKind\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":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":1817}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdf3d9532895a8b1fb53c7e412d6e7cf01322a72a64a4cd7832ecd2966f873aa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListLiteralImpl (LCOM4 5): ListLiteralImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":34166}}}],"partialFingerprints":{"codehealthFindingId/v1":"fec1468fb6ca52ed8ac6e962dcbca000ec43af41f700faf36fd7448c1b730995"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordPatternImpl (LCOM4 5): RecordPatternImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":48166}}}],"partialFingerprints":{"codehealthFindingId/v1":"4be00787e8e41435d42ca5bf2c65ff895354713d1d074c103a1294125cb6f180"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordTypeAnnotationImpl (LCOM4 5): RecordTypeAnnotationImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":48450}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5fe35c8fe2311298af04e7a9c13ad912e040239eb0af059a265872752ab52fb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableDeclarationListImpl (LCOM4 5): VariableDeclarationListImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":58412}}}],"partialFingerprints":{"codehealthFindingId/v1":"815735aae397aaa38e0303e8d949cc7e7203eaa4ff9383aefe761110c1f96b8c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GenericState (LCOM4 5): GenericState\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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"849082558bfc087a86190ace99dc8301442bb890ff5acfcebae0250719c68f49"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListState (LCOM4 5): ListState\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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2576}}}],"partialFingerprints":{"codehealthFindingId/v1":"db9a0db3ec600d357038e24c1c24ca547e24d4ba59a2a216e44c37b7d6050cdc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StringState (LCOM4 5): StringState\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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":3066}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab50cc0ce7adc9e97396b7f197cbf584f8fab7d3173ddb04e20bd830541c6d50"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GenericFunctionTypeElementImpl (LCOM4 5): GenericFunctionTypeElementImpl\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":4738}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdcacba97a0d3eab97b7964c5836063e069e9799f5aed068c19f666e28edf967"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterfaceFragmentImpl (LCOM4 5): InterfaceFragmentImpl\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6179}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0778334a41fb4db8c1ccd5e1fa0580afb7a87d72a7c1767f99ca3dc8ff75092"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocalVariableFragmentImpl (LCOM4 5): LocalVariableFragmentImpl\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":8405}}}],"partialFingerprints":{"codehealthFindingId/v1":"2812dd6d4f092bfe2afa611368f59eb9c95f755ba0381e2b6f48c5737f5d9f7f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RuntimeTypeEqualityVisitor (LCOM4 5): RuntimeTypeEqualityVisitor\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":"pkg/analyzer/lib/src/dart/element/runtime_type_equality.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d177ffb0921aa3f6d989ff4cda4b638735fb124697318a6472509f31c865215"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ElementBindingVisitor (LCOM4 5): ElementBindingVisitor\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":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5382fc1e46174525575fa0ea8c137b6d560519bcd86b802c890b14597bbda14"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ContainerMemberFragments (LCOM4 5): _ContainerMemberFragments\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":"pkg/analyzer/lib/src/dart/resolver/element_binding_visitor.dart"},"region":{"startLine":1107}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59b30a7e80a49a31cfc7b944b9d0d4d331c708f4425a24503fc551aadc67cfd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AnnotationInferrer (LCOM4 5): AnnotationInferrer\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":"pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde395ff07d7007412ac18dc12c7a9d2972f113ab97eee4d2e490a2ef73325eb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UsedLocalElements (LCOM4 5): UsedLocalElements\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":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":1458}}}],"partialFingerprints":{"codehealthFindingId/v1":"8886a764cdf8e6581c20a17f209003a56fd4cbaf61f1fb488c272fca41cf67df"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _OffsetsApplier (LCOM4 5): _OffsetsApplier\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":"pkg/analyzer/lib/src/summary2/informative_data.dart"},"region":{"startLine":1751}}}],"partialFingerprints":{"codehealthFindingId/v1":"61ae8a846db5284e0a5f3668f3028a1ffee31106f7abf5570eb23f83e1d3e1fb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MockSdkLibrary (LCOM4 5): MockSdkLibrary\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":"pkg/analyzer/lib/src/test_utilities/mock_sdk.dart"},"region":{"startLine":1968}}}],"partialFingerprints":{"codehealthFindingId/v1":"925e2dcb81615a24006df6ef1a85155b00037f4f0cdbf537f6fa201ec26e4af3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BlazeWorkspace (LCOM4 5): BlazeWorkspace\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":"pkg/analyzer/lib/src/workspace/blaze.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc0bcc65c34632ec1dbc58c6d9c3467dda61ce247b514506575ead8c51bd5173"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PackageConfigWorkspace (LCOM4 5): PackageConfigWorkspace\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":"pkg/analyzer/lib/src/workspace/pub.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b18c46760a73e3a36aaa0263d14b5f6d5b5aefd805ffe75bca6285191d8f37"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AbstractContextTest (LCOM4 5): AbstractContextTest\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":"pkg/analyzer_testing/lib/src/abstract_context.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"004811381519cda77b0f7dea65e649e825834584a17c96396aef8fa093429716"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionConstantValue (LCOM4 5): FunctionConstantValue\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":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d34b8c7ea71fc45e0fe0fd3f9e5895728cb48fddfd63b06b70b70dfe270586"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterceptorConstantValue (LCOM4 5): InterceptorConstantValue\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":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"f387bed417f7765366c9063aa149716d7a828bca02062864ff2c509b4fbb510d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JavaScriptObjectConstantValue (LCOM4 5): JavaScriptObjectConstantValue\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":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":1114}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae8c3a652572478168f722925e085eb3f06073f6c9e4701326d5c30768d7c84f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EntityDataRegistry (LCOM4 5): EntityDataRegistry\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":"pkg/compiler/lib/src/deferred_load/entity_data.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba136f8cb86b70d4b305234d3ceb82b8839b9733ff7a2b61f4be27135f689998"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PublicName (LCOM4 5): PublicName\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":"pkg/compiler/lib/src/elements/names.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda9a690b6b8792c065fd20934bab8145176ddbde072c5f95c6f525af8ddd5ee"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeVariableType (LCOM4 5): TypeVariableType\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":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"9127f1fed9fea46fec42dcc1f9a018c9b3d052b4a520904d48341aa2119bba59"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionTypeVariable (LCOM4 5): FunctionTypeVariable\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":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d8ab5e321c82726b0904eee51227a59d0eecae6f717f84ef5813c88265311b1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: KernelTypeGraphBuilder (LCOM4 5): KernelTypeGraphBuilder\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":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec76a4d6ba98baa7a5f104687f8c0c78ee441a8cb08e14e99946fef75480182"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeInformationConstantVisitor (LCOM4 5): TypeInformationConstantVisitor\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":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2735}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f1595df0701efce26331664de301e2f01ef0fd937e6c18a642934676efe3965"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeInformation (LCOM4 5): TypeInformation\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":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e81aafa38dbb8f88627a09dc9187559fff049b2b3162ea83b823b41bea42d5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FlatTypeMask (LCOM4 5): FlatTypeMask\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":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ce5a295fc8c76bc24b192f3a3435e74b8ae1e98150db8455870ce4df9d72351"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TrivialGlobalTypeInferenceResults (LCOM4 5): TrivialGlobalTypeInferenceResults\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":"pkg/compiler/lib/src/inferrer/types.dart"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b030b3b4f13e1f68f1ef69f97022b52ea9f7260e8b560f0ad05a32664344ae4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceFile (LCOM4 5): SourceFile\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":"pkg/compiler/lib/src/io/source_file.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1e291b9b663df3c8de9306367c59b81a0dec9dffdbf08227480216eb908abc6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeVariableTypeWithContext (LCOM4 5): TypeVariableTypeWithContext\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":"pkg/compiler/lib/src/ir/closure.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"93c89a0a7a7d54a332e0060e64f0c74f92e9f2e71e9c5933e592066e90d359a4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DeferredBlock (LCOM4 5): DeferredBlock\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":"pkg/compiler/lib/src/js/js.dart"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"acfab482b94e477c9e1e2634cac2748cc3dc86c1719402437fcada0684065bb4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TrivialInferredData (LCOM4 5): TrivialInferredData\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":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"196b0b01d657a2b0c2525b4e31636c12c9d71a90be74502c9497d2a5c30004ec"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JsKernelToElementMap (LCOM4 5): JsKernelToElementMap\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":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f0a1bb68aa21d46384cfa0b6957e96e428bd36e753187b91132a683257f7b6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JFieldDataImpl (LCOM4 5): JFieldDataImpl\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":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":1125}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcf904afcfb0639c5ba436ceac7d433b4a3b83881b85467fb45c2dd2a6d0d3b9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TypeConverter (LCOM4 5): _TypeConverter\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":"pkg/compiler/lib/src/js_model/js_to_frontend_map.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"be91142592f7ed9ae2fe1356d3a9f742a6ae03aa77f08dae656353896f42d31c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SideEffectsVisitor (LCOM4 5): SideEffectsVisitor\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":"pkg/compiler/lib/src/native/js.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0dfaf5e7d02e3a1b0d7176ad86b0656da18864e7e3b6abe2adba73fb4689272"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaAssignmentChaining (LCOM4 5): SsaAssignmentChaining\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":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"80b26dfff46f9a5da086cb7a3c354e95a5a348a781ca2b3976878366021a264b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaFinalizeInterceptors (LCOM4 5): SsaFinalizeInterceptors\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":"pkg/compiler/lib/src/ssa/interceptor_finalizer.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"defef4faf722374139a40a098b693ebc3bd97dc176e8419048c1aea6465e44a0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaSimplifyInterceptors (LCOM4 5): SsaSimplifyInterceptors\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":"pkg/compiler/lib/src/ssa/interceptor_simplifier.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"8571e1b3268528260cad67693e13d036c5af7f6407dcf2eedb129fb3d2eb7f18"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocalsHandler (LCOM4 5): LocalsHandler\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":"pkg/compiler/lib/src/ssa/locals_handler.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"80d0e8f70d2b0257283911ac6d2c955c71f9f9a0da793612c8a4bdde46a6e334"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HInvokeStatic (LCOM4 5): HInvokeStatic\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2240}}}],"partialFingerprints":{"codehealthFindingId/v1":"b32d61ef9dfd10c5deeabc5265089d0ac11fc877def4c56e85192cca0aa86223"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HReadModifyWrite (LCOM4 5): HReadModifyWrite\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2507}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b3dbacc320d5f07bee2c97fcd5c0113ab6184d5dc4bde7835b8808c3a798a08"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HBitNot (LCOM4 5): HBitNot\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3099}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9d479bd1677128d989f81a67fa988adfab040787852c7e1298eaaaeb9245e6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HIdentity (LCOM4 5): HIdentity\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3392}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed7c966c0edc236fd941e745a1d0aaf049b95931f4c5710d82f364e2dfcb6d8b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HInterceptor (LCOM4 5): HInterceptor\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3590}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51fea1cc4eac5ef69dcb609a40d8b9fb490c1e234ecc0080ac5f028571b42d8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HStringify (LCOM4 5): HStringify\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4195}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e6e8e177899d724b51772a9db4dbe9257aa1e3dec24c5d8ebcb8196d9ac737a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HIsTestSimple (LCOM4 5): HIsTestSimple\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4578}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cb359a03ebca18accd0043030220971dc0b529a3a83f39a73089e02cb3c5473"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HInstanceEnvironment (LCOM4 5): HInstanceEnvironment\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4891}}}],"partialFingerprints":{"codehealthFindingId/v1":"760e055ea535a7d0b9295951f81dace2329a1f88830626bdbd53bcc7cf609c7d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AbstractDataSink (LCOM4 5): AbstractDataSink\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":"pkg/dart2js_info/lib/src/binary/sink.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"c182e186c4015861a051dacf0966bc54acf9e5ff1635806f326c16a94504dbc8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AbstractDataSource (LCOM4 5): AbstractDataSource\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":"pkg/dart2js_info/lib/src/binary/source.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"c53aafdab67d01d73cf94b43e53a29f61351e8f61e3cd8aa37e8a927e3744824"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _InfoCommonElementFinder (LCOM4 5): _InfoCommonElementFinder\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":"pkg/dart2js_info/lib/src/common_element.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6ba4cce8d5333166928e0368b71c289e64a07d70670190edb51ffa264e9509d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _InfoDiffer (LCOM4 5): _InfoDiffer\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":"pkg/dart2js_info/lib/src/diff.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"c189d3e16593f643a1d5b4da966dda52ece58b04e4007ff324583246845786db"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartRuntimeServiceBackend (LCOM4 5): DartRuntimeServiceBackend\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":"pkg/dart_runtime_service/lib/src/dart_runtime_service_backend.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd093300640ad22f39a45f22b965b34b7a9c2f7953d13bef8c8bdf6e4a874877"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NativeBindings (LCOM4 5): NativeBindings\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":"pkg/dart_runtime_service_vm/lib/src/native_bindings.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b5086aeca60375ee07fef8e1cccb4dbacd2d2773edbc03e7380b0a1d64008f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DevToolsCommand (LCOM4 5): DevToolsCommand\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":"pkg/dartdev/lib/src/commands/devtools.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"3885762a206828d8d5690675548271907bc4d1666c5d4fea5d7ec9e180aaa2b8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ResourceProviderEntity (LCOM4 5): _ResourceProviderEntity\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":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"c929a2aeffe6a24eefdc54b7acb156ed4b5381913e42aa5b7b458c69b6c53939"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _FileIOSink (LCOM4 5): _FileIOSink\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":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"52f1cb7c170a32506f6061271309949e67ce0bcaf38a74cb5a7de00d16adda65"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _MemoryRandomAccessFile (LCOM4 5): _MemoryRandomAccessFile\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":"pkg/dartpad_worker/lib/src/resource_provider/resource_provider_file.dart"},"region":{"startLine":810}}}],"partialFingerprints":{"codehealthFindingId/v1":"46835e2ff364a19ead28a6c9849d13874cc9656ed4b70fd22c0df35581a94ccc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DebugService (LCOM4 5): DebugService\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":"pkg/dwds/lib/src/services/debug_service.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"47ec5f07880478d54f7e507f1c7534e265f4b480200f476daf832cc32dcefbea"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionTypeBuilderImpl (LCOM4 5): FunctionTypeBuilderImpl\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":"pkg/front_end/lib/src/builder/function_type_builder.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe242eb347258c480968f4aa9c520239442e7f3a8364012de5d354606826ed3e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InferableTypeBuilder (LCOM4 5): InferableTypeBuilder\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":"pkg/front_end/lib/src/builder/omitted_type_builder.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"8909c4553692b2cf87c1935c280f31e32bc4418cd956b8c57401ce2496f73f18"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordTypeBuilderImpl (LCOM4 5): RecordTypeBuilderImpl\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":"pkg/front_end/lib/src/builder/record_type_builder.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8f89266b2765f01a9209ceeac9ad5c2b32c4c3205d8d1283285124e560a9a3d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SyntheticTypeName (LCOM4 5): SyntheticTypeName\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":"pkg/front_end/lib/src/builder/type_builder.dart"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ede8ce7c70a1f0646a861fb97efacb8b2e85d34d79b3638bf86454215069898"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillClassBuilder (LCOM4 5): DillClassBuilder\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":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"00ac47bb0387060dde560a054f94ba9ab3bfc27565605b2e6cac9951b4923343"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillExtensionBuilder (LCOM4 5): DillExtensionBuilder\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":"pkg/front_end/lib/src/dill/dill_extension_builder.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0ed8744b7f3518ab2cb103f914648e082a8f01d557d0332813f13193dbe285a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillExtensionFieldBuilder (LCOM4 5): DillExtensionFieldBuilder\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":"pkg/front_end/lib/src/dill/dill_extension_member_builder.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4febf7141ebba93ed3e61c4ab26406f0dcfbf64f43e503e0b18005d789cac86"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillExtensionTypeDeclarationBuilder (LCOM4 5): DillExtensionTypeDeclarationBuilder\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":"pkg/front_end/lib/src/dill/dill_extension_type_declaration_builder.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"225bf45ca61533e27fda15248bb40a2af7d9d7438202cb272b23740cd745349b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillExtensionTypeFieldBuilder (LCOM4 5): DillExtensionTypeFieldBuilder\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":"pkg/front_end/lib/src/dill/dill_extension_type_member_builder.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e8934c9cc612209dd88aec3d291a8eb234645ce89dae7511035165b11449255"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AnonymousMixinApplication (LCOM4 5): AnonymousMixinApplication\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":"pkg/front_end/lib/src/fragment/class/declaration.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9570b8f732107a611e927bff10b29d8cbc15f84d784d8bfaf07e27ea6022c67"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EnumFragment (LCOM4 5): EnumFragment\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":"pkg/front_end/lib/src/fragment/enum.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"41385de605fe93f85b2b78216e4590715e54578341ef5a8338f0e1a5e59ff8bf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionFragment (LCOM4 5): ExtensionFragment\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":"pkg/front_end/lib/src/fragment/extension.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"16ad136bfe397f0a1711c08599ab75a032ed8aa7d70a11a89406692cf7d95251"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionTypeFragment (LCOM4 5): ExtensionTypeFragment\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":"pkg/front_end/lib/src/fragment/extension_type.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"55e071a60204713fb9735c013770014c4ed1b8544ca432d4a36669b2761b46a3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FactoryFragment (LCOM4 5): FactoryFragment\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":"pkg/front_end/lib/src/fragment/factory.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c21244645087b0bdbeb98371f3a0d376a624c2b21afb34169ee621b16b6cdfd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _FactoryBodyBuildingContext (LCOM4 5): _FactoryBodyBuildingContext\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":"pkg/front_end/lib/src/fragment/factory.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ab4b4336745adf9e8b89ee92d3cc7598416c015fb7edddc3771a63a23fd761"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FactoryBodyBuilderContext (LCOM4 5): FactoryBodyBuilderContext\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":"pkg/front_end/lib/src/fragment/factory/body_builder_context.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea0703260d813ab9f418b53450eaa558d37fabfc47b8ed4caf5edf87257d034"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ExtensionStaticMethodEncoding (LCOM4 5): _ExtensionStaticMethodEncoding\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":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1087}}}],"partialFingerprints":{"codehealthFindingId/v1":"c799537852fb5222a75582b84d4207c8b36ae3537e4e3b1f8e6d1764aeae684d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ExtensionTypeStaticMethodEncoding (LCOM4 5): _ExtensionTypeStaticMethodEncoding\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":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1213}}}],"partialFingerprints":{"codehealthFindingId/v1":"8194cd1912edffc4ea8e5692962a7c23d8081a3f26f27a194a6f18aa5ead9b79"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _RegularMethodEncoding (LCOM4 5): _RegularMethodEncoding\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":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1249}}}],"partialFingerprints":{"codehealthFindingId/v1":"59b706601491ea1fe2b9c2a51cda86d6b171cb0ff27af809a525ddee48e618f0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _RegularOperatorEncoding (LCOM4 5): _RegularOperatorEncoding\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":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1287}}}],"partialFingerprints":{"codehealthFindingId/v1":"bafa682f5f65a5f2a7ed96fe87b64545ae0d5505c51cd2389e62bc50a00fa861"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LabelTarget (LCOM4 5): LabelTarget\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":"pkg/front_end/lib/src/kernel/body_builder_helpers.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd5946dbe1bc3538d992a0aee1a866e43585c6215c42425e6f1ced2a1275c7bb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExplicitExtensionAccessGenerator (LCOM4 5): ExplicitExtensionAccessGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":3795}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d8bfb0612089c4ce8dcb1954803566d97595096f607d176d0e0fa2c5e270b2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ContextAwareGenerator (LCOM4 5): ContextAwareGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":5927}}}],"partialFingerprints":{"codehealthFindingId/v1":"77aaade0eba0fa106429fa9ebddfc3c82cbe67038acd2493e50bf3ac00df0fb7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InternalCatchVariable (LCOM4 5): InternalCatchVariable\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":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":1928}}}],"partialFingerprints":{"codehealthFindingId/v1":"d44be01ef03fa1379b8a3fbcb04fa4444503015627cc60bc7490fd162880f4a8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JointVariable (LCOM4 5): JointVariable\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":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":9277}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7327fc03df52f05d0fe6de45c59ee88825c2725ed81d1b22714d76f41dc18ac"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _SyncContext (LCOM4 5): _SyncContext\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":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c822938cc89e4337309fb874f7b7606f6697610833f170dfa77b39d12e0615d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _SyncStarContext (LCOM4 5): _SyncStarContext\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":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":816}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaee751006d974edd73abfe6455c241975b09d8fdeee835a7b41aaa19157b0e9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _AsyncStarContext (LCOM4 5): _AsyncStarContext\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":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f8addb04c1a6d8238ad9cc57686e807ed3ed072cc4f249fc88d400570aefaa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FixedExpression (LCOM4 5): FixedExpression\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":"pkg/front_end/lib/src/type_inference/delayed_expressions.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b9b9bd19010080c4be9f37f777693b999db6733382c75bc51bb2163b7ca3682"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DelayedAssignment (LCOM4 5): DelayedAssignment\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":"pkg/front_end/lib/src/type_inference/delayed_expressions.dart"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"9871fcadeec73049106d8ec8d5bf606c8a030c94e95f08e8caddbcc1d3ff4a2e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TopLevel (LCOM4 5): TopLevel\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":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"af7dfa4541dd0ef61f18d0e8515609dd790423451825608f0915d560df4db8eb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TextualOutlineListener (LCOM4 5): TextualOutlineListener\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":"pkg/front_end/lib/src/util/textual_outline.dart"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf5c4909914c4c92199f0cbee88e7e3bd9225048d4d111849beadde48dd7cae"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Continue (LCOM4 5): Continue\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1047}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd339bb2a704eb0316f4c83b20ddcfedfa16d0c3ed316b5cead8dc44de7646e4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Break (LCOM4 5): Break\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1070}}}],"partialFingerprints":{"codehealthFindingId/v1":"60727ac2593d209c109ad40eff0ec1c043f167d2222873fa87c3cf85c4c0b056"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LiteralStatement (LCOM4 5): LiteralStatement\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1356}}}],"partialFingerprints":{"codehealthFindingId/v1":"413fe55944e389cf4fd601b0671f90ec71569f003c08932c39b7fd4c22b4836f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedLiteral (LCOM4 5): InterpolatedLiteral\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2596}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ed4216864f9b1dcd75ab26677f4182892b7e37a1b5dbcc6dedcd40cb6a62ff"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedStatement (LCOM4 5): InterpolatedStatement\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2683}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd14f52980b93745ada18c4885b0f7530431d0e7b0dcc6609a517db25a03be6d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Comment (LCOM4 5): Comment\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2803}}}],"partialFingerprints":{"codehealthFindingId/v1":"aadf0c7530464f414f16b0fba39bc19d361491ac7ddf6a149ea0f3bc333baee6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidExpression (LCOM4 5): InvalidExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4781f67a3044e7ce79671a32665367ed5732ce39857b711fce59a8b011f6ec3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AbstractSuperPropertyGet (LCOM4 5): AbstractSuperPropertyGet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec09dbc85f140c7d414295013614c01e387bb5c0924ce41b669ffee55532b159"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SuperPropertyGet (LCOM4 5): SuperPropertyGet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1092}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bb892c1a21720c572642f14628532140080c61ed38fbaf36aab6cb9a1bd10e6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Arguments (LCOM4 5): Arguments\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1528}}}],"partialFingerprints":{"codehealthFindingId/v1":"f91932748c84ceb387ba986fd757d54fad16341edc11107034f670f640ffccf1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DynamicInvocation (LCOM4 5): DynamicInvocation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1696}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c7fa68eaaeeb9a78551d53ba3fcf049b6ff134f2181621842d10ff0497a730b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceInvocation (LCOM4 5): InstanceInvocation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1845}}}],"partialFingerprints":{"codehealthFindingId/v1":"e49cda683fd99aa366b8c8682580e6ec1e6f7586850a277b991c32f128b83083"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceGetterInvocation (LCOM4 5): InstanceGetterInvocation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2041}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd9ddb27a9a8e7983f9bc8b562fb0c857a9fbac272e766f9d9acc8dc0777cbf6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionInvocation (LCOM4 5): FunctionInvocation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2262}}}],"partialFingerprints":{"codehealthFindingId/v1":"873aee638a31104e16636510021fa00ac5afc5f8c4313f251aabe691e741f756"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocalFunctionInvocation (LCOM4 5): LocalFunctionInvocation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2357}}}],"partialFingerprints":{"codehealthFindingId/v1":"15884133adf083716d27e47df6f969841df18de5b6275b1268554e183468e63f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EqualsNull (LCOM4 5): EqualsNull\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2434}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9cce415f70059ce12fd9307b6b17bbee171c50c2b4509adb32ab092eaf5fb6e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EqualsCall (LCOM4 5): EqualsCall\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2485}}}],"partialFingerprints":{"codehealthFindingId/v1":"c61fe7fb38292ed3168c43ce968aeccdc0aceb5b2c138465fe2250c90d7756d2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StaticInvocation (LCOM4 5): StaticInvocation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2822}}}],"partialFingerprints":{"codehealthFindingId/v1":"bea509b726ad559be5ced5d941196bd10eaaab1eb9a32996ebf52434d8c0d351"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Not (LCOM4 5): Not\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3162}}}],"partialFingerprints":{"codehealthFindingId/v1":"90df85c67e5a902c3d792821f45b61f05fa66cef0449f08c62ccacba0139cc64"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LogicalExpression (LCOM4 5): LogicalExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3230}}}],"partialFingerprints":{"codehealthFindingId/v1":"290515bcb77a575d654be2a271c11bf28c12068868ee76fc8ce64bcdb798dd43"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StringConcatenation (LCOM4 5): StringConcatenation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3373}}}],"partialFingerprints":{"codehealthFindingId/v1":"4111921488bc8572317137c1bc5af33df811f5dbacadf6229f0fac43fc73eb5a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IsExpression (LCOM4 5): IsExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3865}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d9ae15fa0a9d3de13cc14737e7cd0eb1c2d833ed6bd287814cb16d05d2d4fab"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AsExpression (LCOM4 5): AsExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3925}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa26265ad5efec60b406a3075090ec8b5016f9464651b3acc3db47fdac2a7f4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StringLiteral (LCOM4 5): StringLiteral\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4137}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7271a3e755104a3e54c4c4303312305a441d240334561147b5413fa10cb7d1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IntLiteral (LCOM4 5): IntLiteral\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4171}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc88eeab37c2155f14ff96f044c0eb72dd49a14503fe58009093765029d74fe8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DoubleLiteral (LCOM4 5): DoubleLiteral\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4207}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ffea4a3417d305106bd0dfe1752486bbd0435f43b2a9f2dfb5555e6b0c45e58"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BoolLiteral (LCOM4 5): BoolLiteral\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4239}}}],"partialFingerprints":{"codehealthFindingId/v1":"36f9d37bc6504e82250c21a43ad3dc8b60d144ecc4acf13b541309f61be287f7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeLiteral (LCOM4 5): TypeLiteral\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4341}}}],"partialFingerprints":{"codehealthFindingId/v1":"483c91b576cd5bb190af4678c5d17e3d496040fc9ab58599e10fd9469e9bf13a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldInitializer (LCOM4 5): FieldInitializer\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":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b58fc0f9633f71742c3c5e04912dd4c9d49f981e1efc8a25d892cfabc7304be"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LocalInitializer (LCOM4 5): LocalInitializer\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":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfc5f96f254e28907fb8e38f90a707b1f6aece03e22454300b5058dcec5e512a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryDependency (LCOM4 5): LibraryDependency\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":"pkg/kernel/lib/src/ast/libraries.dart"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"055827e9e0b96afacec978af8b73464e0c2cfcd43d354eaac2ca69949e757c58"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryPart (LCOM4 5): LibraryPart\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":"pkg/kernel/lib/src/ast/libraries.dart"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"970faeefd3c05a8bb296f134f2caa93ebdbb8fadb7d6e7d8877442af5881bb2e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: OrPattern (LCOM4 5): OrPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebca03f5a534e5d720a7fa5eebcc7cb5e21d0a61823d39b5b1605c1eff6a4a8e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WildcardPattern (LCOM4 5): WildcardPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99aad6caa463e3d4b9e78cda334eac1f4f0887c9d77e8dac378b0ffc7f13951"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NamedPattern (LCOM4 5): NamedPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"294e8fb45747cb54204e3f86edd5eeb379b49fdb4787a43ea3161c7922b994e4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Block (LCOM4 5): Block\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"123743de2f5c54470a7e3bd207a385d41ca91ce8714852c1a3bc9aa81a0d20b0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AssertStatement (LCOM4 5): AssertStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"83d2eb328c2d35ffaf6644d4661801c671fd5214a848a776be2c19e93a13b215"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SwitchStatement (LCOM4 5): SwitchStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":801}}}],"partialFingerprints":{"codehealthFindingId/v1":"242e4f68fea0248586dd0406251e0b2ba54bd1de8a784b3aa56085a5538b5168"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SwitchCase (LCOM4 5): SwitchCase\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3f353b164e6e54c61e055ef904f885c28b176718fa1f1899718cb897822e7c9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: YieldStatement (LCOM4 5): YieldStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"d97b36f26dec9254084eef00d57b4a6a06b790e160e4715587827be13867bdb3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterfaceType (LCOM4 5): InterfaceType\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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1231}}}],"partialFingerprints":{"codehealthFindingId/v1":"d76708ce99dab7dca6a4ea6a5189d540d53c2be1eda652d3662ac5cfe43cbded"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionType (LCOM4 5): FunctionType\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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1345}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b55d51f705c1b47470c05e7bd10f5dc81c3286d9122ac186c7fd07278af4a27"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExtensionType (LCOM4 5): ExtensionType\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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1784}}}],"partialFingerprints":{"codehealthFindingId/v1":"d39dd473746d69b674216b9fba5b18e2fc8c0ac1385d1c8dff09308a757cad9d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NamedType (LCOM4 5): NamedType\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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1971}}}],"partialFingerprints":{"codehealthFindingId/v1":"23bdf4a209e93b167e17669c9da9117c67350939336defa561e81efca0b0a825"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _IdentifierIsPrefixVisitor (LCOM4 5): _IdentifierIsPrefixVisitor\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":"pkg/linter/lib/src/rules/use_string_buffers.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"d351801bb16861d37f2453cf33c1d5e7a41ab3fa2eabf858c16ff462d9b6b752"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MachO (LCOM4 5): MachO\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":"pkg/native_stack_traces/lib/src/macho.dart"},"region":{"startLine":740}}}],"partialFingerprints":{"codehealthFindingId/v1":"cba437f06c684f8ebbcfbd87d212471bfea7243b292b238fdf79dd0bdbd69f3a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DebuggerStackElement (LCOM4 5): DebuggerStackElement\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":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":2244}}}],"partialFingerprints":{"codehealthFindingId/v1":"e00e6b88f74e8953ecd8941af0586434938de1703c97168929a655f12ac67772"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Annotation (LCOM4 5): Annotation\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":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1068}}}],"partialFingerprints":{"codehealthFindingId/v1":"66041b06c884fb795575033cdef177d03b3daab59bf2cce4f5527d975f28c03e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StackTraceTreeConfigElement (LCOM4 5): StackTraceTreeConfigElement\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":"pkg/observatory/lib/src/elements/stack_trace_tree_config.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d24a98301f982a67005de6be34d979b1b1e8a0d3416e56e8854c76f2a30b81c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VMConnectTargetElement (LCOM4 5): VMConnectTargetElement\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":"pkg/observatory/lib/src/elements/vm_connect_target.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d27d33812d9ad9560d63d81e67818f931179ab0174e832457384b2bf7b95a6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VM (LCOM4 5): VM\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":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e1dd5caeabdbd209afedb206c1491eca572da049b8b72619e936a63eae53d21"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TestingServers (LCOM4 5): TestingServers\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":"pkg/test_runner/lib/src/testing_servers.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b2c33a06abecdac2c3d16b21f250449a666f880c4185e5fecfb494264662b7b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FileBasedTestDescription (LCOM4 5): FileBasedTestDescription\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":"pkg/testing/lib/src/test_description.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"63976261ad545b5d9e315b02704fc9736993ec053500fc4a649d9eb6c4e747fa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Class (LCOM4 5): Class\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":2973}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4a45eadd85b0fe5016dc6ed0cbfd7b6cd86b2f23f39aa205811f00f602bcb86"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FuncRef (LCOM4 5): FuncRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":4663}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8251660d7cee8ca9ee73911c7f5d98a84b32fefe5612046a2d0edbfeaa1d377"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Func (LCOM4 5): Func\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":4763}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b6cef1e6677b3dbbc4f62b9ed2d03e594924f4608e421ef0e7b260daa742d6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Library (LCOM4 5): Library\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":6384}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e7d37c36ab27fc2784b764c272aa40ad81f79e1acb43214ad5d9301d314e49b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Parameter (LCOM4 5): Parameter\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":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c5b41f6f2dfd0ba5d4fbfa9e341a4fc52eda0505347ee36b1a1e7b5f0e9a8b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConeType (LCOM4 5): ConeType\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":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4f53978a419378e3be8422b87b0a71c33ee62bd2fdfc8ad89940b08f4c277bf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SimpleUnreachableCodeElimination (LCOM4 5): SimpleUnreachableCodeElimination\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":"pkg/vm/lib/transformations/unreachable_code_elimination.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"e09810b52628e31924b5f71733b3429bf01302235cbec400459062b79385ed4f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BitArray32 (LCOM4 4): BitArray32\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":"benchmarks/BitArray/dart/BitArray.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b6fa7e9fc53e35f91b98307c044be3ed4aec599a4aa24ce0e5fa99d62b7c8f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BitArray64 (LCOM4 4): BitArray64\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":"benchmarks/BitArray/dart/BitArray.dart"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4abc5b41c4a4c8e1caa9b1209e8284f59d4ae8aa4c8a86fd04dd9a45379643d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListCommand (LCOM4 4): ListCommand\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":"pkg/analysis_server/benchmark/benchmarks.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ea42c34a8a4bd7e6728188b5521bb04d3477ae8088056fe6acedfdc18a7a93a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RunCommand (LCOM4 4): RunCommand\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":"pkg/analysis_server/benchmark/benchmarks.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab1ba96963a6087ca92c638b899778dd47dd0d3f78cfb89c392018278c05ab17"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MetricsSuggestionListener (LCOM4 4): MetricsSuggestionListener\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":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":1833}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0c1cba406bd3d297325fd16987f60a7093767d605b042808b079a015f2be1e3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LogPage (LCOM4 4): LogPage\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":"pkg/analysis_server/tool/instrumentation/page/log_page.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb2a5f2704c68c4fcb382a500a9872be3af1bfb466196bfd72e591459692c4a6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ServerDriver (LCOM4 4): ServerDriver\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":"pkg/analysis_server/tool/log_player/server_driver.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d761c807d3375e2a70fa5aa616ba0e9144e054da616b9155e5fa67478e36707"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _Handler (LCOM4 4): _Handler\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":"pkg/analysis_server_client/example/example.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee093d9ae44caa99d0a516c6f75b52b662bbd9a1c1659add8dd343bdfe909c59"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _Property (LCOM4 4): _Property\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":"pkg/analyzer/tool/generators/ast_generator.dart"},"region":{"startLine":1745}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6ab1ea0668fdc403160ba81baac0c11ff3bb115cef98b72593ead454a3152b7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _BenchmarkIOManager (LCOM4 4): _BenchmarkIOManager\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":"pkg/dart2wasm/benchmark/self_compile_benchmark.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"110c8353fc4eed99bc445a5406134c393d78446f586decc7d1be25cc115d2374"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DummyValueConstant (LCOM4 4): DummyValueConstant\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":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1695}}}],"partialFingerprints":{"codehealthFindingId/v1":"59be8bf68e91d863a384413f6e1f8d397fdbe6d6451ae172524d34f585b610f3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeOfConstantVisitor (LCOM4 4): TypeOfConstantVisitor\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":"pkg/dart2wasm/lib/constants.dart"},"region":{"startLine":1722}}}],"partialFingerprints":{"codehealthFindingId/v1":"c261673d09b7100551c6bf5523167e6cb3ae50d8496d39444fb0162171cddf03"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MethodCallShape (LCOM4 4): MethodCallShape\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":"pkg/dart2wasm/lib/functions.dart"},"region":{"startLine":973}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e2cfb1403cb24e82fb9cd2fc4d5ce240607b885dea61f6f2f167dea50f37a1f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListFactorySpecializer (LCOM4 4): ListFactorySpecializer\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":"pkg/dart2wasm/lib/list_factory_specializer.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a751e28fe665838fd292f5f7e69f256e5453d534fabd86f08157bde443b06e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DefaultModuleStrategy (LCOM4 4): DefaultModuleStrategy\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":"pkg/dart2wasm/lib/modules.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe95a9d9ca382cf2ce9a56382b7d6942ec29f9e146ccd7c74b845a378da014d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Types (LCOM4 4): Types\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":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f5fdb92a886ac5664f8d27cabf41546b900a1217f9cc91a1d7f17be4b54ec95"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartRuntimeServiceVMBackend (LCOM4 4): DartRuntimeServiceVMBackend\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":"pkg/dart_runtime_service_vm/lib/dart_runtime_service_vm.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c79d211047cf243486739e9fd3d39be37b5a1d7cbc280b8bbdfc96b32e46e383"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Foo (LCOM4 4): Foo\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":"pkg/front_end/outline_extraction_testcases/initial_various/main.dart"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7e4927026facfc044f6b65c39e73334d8cf04ca05ab060bf1ea1b5f10c6fa47"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AstClass (LCOM4 4): AstClass\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":"pkg/front_end/tool/ast_model.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"492b9b3e15fe979934d8c8a2d821c340d4e63b502ca60d1aeb3b104a41da3c4a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CanonicalName (LCOM4 4): CanonicalName\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":"pkg/kernel/lib/canonical_name.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eac4ce8331ff8f48cf03e0bc924425da3500e7ced38872c06ea8a4cb291f4ea"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompilerResultLoadedFromKernel (LCOM4 4): CompilerResultLoadedFromKernel\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":"pkg/vm/lib/kernel_front_end.dart"},"region":{"startLine":1288}}}],"partialFingerprints":{"codehealthFindingId/v1":"08bb0f77847852bea7aa52d10d8f2229ddd97609c95c5919ec79b66d1f6746e2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ProgramInfoNode (LCOM4 4): ProgramInfoNode\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":"pkg/vm_snapshot_analysis/lib/program_info.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"303bb2c4088326f164b3cc04753fd61cf5311910b8ca929a6921e3731d0a3a98"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _HttpResponse (LCOM4 4): _HttpResponse\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":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1236}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a054e6daf6746a39bef0dc4bf688e225d546d937f17e10454d3b7b86f8c01a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _NativeCallableBase (LCOM4 4): _NativeCallableBase\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":"sdk/lib/_internal/js_dev_runtime/patch/ffi_patch.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c7b08e37be1cceb18f83cb08f473c555bf2c52bab7ad7d8f4a0c81bda145807"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JSSyntaxRegExp (LCOM4 4): JSSyntaxRegExp\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":"sdk/lib/_internal/js_dev_runtime/private/regexp_helper.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"15b50e30024a32ce2a81076ff4a8e11e373d56281b264ac4252baa749d6c749d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _HashMap (LCOM4 4): _HashMap\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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d8a83314717a623d418a0e22873e5aba63b02e3196565aa229846e41ca20958"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _CustomHashMap (LCOM4 4): _CustomHashMap\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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"34ab397d2bb1d67914b28afc99c72df7c72532d91ad42698bb9c8289494e5fa7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _LinkedCustomHashMap (LCOM4 4): _LinkedCustomHashMap\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":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f2ec20abebd5b2556f089e955ac8166bbf5d5c4b0ffa5d40cac7ed1a9e2abb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JSSyntaxRegExp (LCOM4 4): JSSyntaxRegExp\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":"sdk/lib/_internal/js_runtime/lib/regexp_helper.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bb3ba7f3c0c357597f0330e6536b41d18c090313d915591b52400accdd1660d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ParameterMirror (LCOM4 4): _ParameterMirror\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":"sdk/lib/_internal/vm/lib/mirrors_impl.dart"},"region":{"startLine":1346}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33ee8d64591179d59e5cde201becb2ade01ad309d061ed01aabb352b7e29b5b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _Closure (LCOM4 4): _Closure\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":"sdk/lib/_internal/wasm/common/closure.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"74f2741ac6d54fb162376fdd73e25f08db1da963aa065e45af190e578b2c933c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WasmListBase (LCOM4 4): WasmListBase\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":"sdk/lib/_internal/wasm/common/list.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"a85e77f85563f8252d8f6fad3b3cf1d0ba3f1ba837ce577eff86966c635f25c6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: F64x2 (LCOM4 4): F64x2\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":"sdk/lib/_internal/wasm/common/simd.dart"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c6e750684ff19dbe29ee73ae6b0a68735a705a64b0f34afc3db357cdf383f58"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JSSyntaxRegExp (LCOM4 4): JSSyntaxRegExp\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":"sdk/lib/_internal/wasm/js_common/regexp_helper.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6cfa8374b0005909b8907033669bf7a3fc1f4ebd35a645b55611c29cc0e212f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _JsonStringParser (LCOM4 4): _JsonStringParser\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":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":1348}}}],"partialFingerprints":{"codehealthFindingId/v1":"5205bb783ff11c6505e07d6fd45a08e7aff489c10cd325200dfe35516a0adb16"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ForwardingStreamSubscription (LCOM4 4): _ForwardingStreamSubscription\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":"sdk/lib/async/stream_pipe.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dc5c523d0a77e96603a0d0cc4964ae17af2b07924210132ccf2fe110cf4ca0d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Event (LCOM4 4): Event\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":"tests/lib/async/stream_state_helper.dart"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db3970ec619c7bf26bbc131dbf8081553af3031b05981726a2f0680615f048c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DependenciesCollector (LCOM4 4): DependenciesCollector\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":"pkg/dart2wasm/lib/deferred_load/dependencies.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ab8d458b40fcbf2ba4674d89b76be971199a0e6b1c4fd410f26d45b30481b73"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _OverlayResource (LCOM4 4): _OverlayResource\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":"pkg/analyzer/lib/file_system/overlay_file_system.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"a05b210d445ceca3403747c6455296886a735ae06c69d767d4f06ad1d7c5da06"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TestContext (LCOM4 4): TestContext\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":"pkg/dwds_test_common/lib/fixtures/context.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"97d9e7dde135227f151c1612a4ebaeab6b7ff1281991569c2732d32200104a64"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FakeSseConnection (LCOM4 4): FakeSseConnection\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":"pkg/dwds_test_common/lib/fixtures/fakes.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"e735a5c4989e4daa44171c93cae3d4b779455cd636d954543ffb91534e04989b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FakeModules (LCOM4 4): FakeModules\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":"pkg/dwds_test_common/lib/fixtures/fakes.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffec2bc839e885e02e88f50723a403e796377608c8280d965d94aa8709bb6d29"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AstToIr (LCOM4 4): AstToIr\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":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4059b7dd636418bf5d328e60c3a2f160a4d8a310eab7eff2769bd8a7c8c9607"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ComputedScopes (LCOM4 4): ComputedScopes\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":"pkg/cfg/lib/front_end/computed_scopes.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"355d1c9de10f0bc72aac6634a71087f25543cdfbb5b4505de969621aa2e12cf0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CustomEvent (LCOM4 4): CustomEvent\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":"sdk/lib/html/dart2js/html_dart2js.dart"},"region":{"startLine":9127}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a91b01444b648e43b422144b8c90e37bd3d86988f1b6f810352118740f2c3e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _RawSecureSocket (LCOM4 4): _RawSecureSocket\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":"sdk/lib/io/secure_socket.dart"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fec2a2b90bdbba9eca703a4b4f92be55c20183f520a88e463361532dc9bcfbe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetterFunction (LCOM4 4): SetterFunction\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":"pkg/cfg/lib/ir/functions.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbc060918af8b51a18d549a7414d42eeec4e1f4e567dc20dedb274b207a84918"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TearOffFunction (LCOM4 4): TearOffFunction\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":"pkg/cfg/lib/ir/functions.dart"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b7bf383b89b358701bc497cd91248e06f3ba8d65a0d4041a003aab8d07337f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CoreTypesUtil (LCOM4 4): CoreTypesUtil\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":"pkg/dart2wasm/lib/js/util.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"88a02a9337274d18e0b373679424c7ee4c86040e4986dcda20047d0f4ad7b42d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClosureIdMetadataRepository (LCOM4 4): ClosureIdMetadataRepository\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":"pkg/vm/lib/metadata/closure_id.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"89a78a9db693e4df37f6e97bd7cb00a547420debcadcaff0d398a30570c3c6cb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeBasedStaticType (LCOM4 4): TypeBasedStaticType\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":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"6efb5cae3d71f82c2770b7b8d09a212fc1acf2f56474428e9817e1016cf8dd23"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DemoteViaExplicitWrite (LCOM4 4): DemoteViaExplicitWrite\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":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b4287b5c118ed17c56fc12797f103ea45cbd8685c9baa125215017b908c69ea"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DemoteViaSuspension (LCOM4 4): DemoteViaSuspension\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":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f432749cf108bb2d85428c79e4b95885583b63e6e1894e673cfdce164307437"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Reachability (LCOM4 4): Reachability\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":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":5497}}}],"partialFingerprints":{"codehealthFindingId/v1":"0337401e346299964355ff453563f6137f233ab15ec2b1b5954f638b177d7238"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MessageCode (LCOM4 4): MessageCode\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":"pkg/_fe_analyzer_shared/lib/src/messages/codes.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"e25152288873715a2432449bcb1ed10906eb06b0d34f080fbeb13418a9af0aa3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionProto (LCOM4 4): FunctionProto\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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"d29b92b7e1a8f2c4b396870496c4b1ea68b414563be3cb108303a0c4bb659c2d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExpressionInstantiationProto (LCOM4 4): ExpressionInstantiationProto\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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1362}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc2b3d1b2c461393737daaf3a7050821dfcdfa65adcb00801d66f82f35981e50"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionTypeParameterProto (LCOM4 4): FunctionTypeParameterProto\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":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ce391921f31e5b83f3b31e71c2ad4ed4244f974394e4ac10f40e1cc654e1e64"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StringScanner (LCOM4 4): StringScanner\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":"pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fd6c001b59f38fa16f7a169f11727c71341776bcc0b50d6e00d4a84ff714c0f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StringTokenImpl (LCOM4 4): StringTokenImpl\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":"pkg/_fe_analyzer_shared/lib/src/scanner/token_impl.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b6a2d271d26b9e6e59e6c7870b1f63d5d2d15617d69b2ec1f4def6b82a0d87"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MemberId (LCOM4 4): MemberId\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":"pkg/_fe_analyzer_shared/lib/src/testing/id.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"24348c7fc4bb8f952c93044318f13b112fadacf86673edc982c91f5a55ff7bf4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassId (LCOM4 4): ClassId\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":"pkg/_fe_analyzer_shared/lib/src/testing/id.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"b97fab15a0f401f0971b5e254217849e7dd19da3139e4550f60ff000f47aa225"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StaticInteropClassEraser (LCOM4 4): StaticInteropClassEraser\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":"pkg/_js_interop_checks/lib/src/transformations/static_interop_class_eraser.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"df9624edcb5b675e01afe9ae3bea9ceb546d4864ae8cf3be56cd04a5945ecd90"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CancelRequestHandler (LCOM4 4): CancelRequestHandler\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":"pkg/analysis_server/lib/src/lsp/handlers/handler_cancel_request.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc026117a8f7a0466ba577c26e0b1f5092d398e7ef7522dd2b22a6899e474a38"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CodeLensHandler (LCOM4 4): CodeLensHandler\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":"pkg/analysis_server/lib/src/lsp/handlers/handler_code_lens.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"b691b172af87771c27a14a4fcddb3633febbb05bf1ae634263e18ec80b4dfd44"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompletionHandler (LCOM4 4): CompletionHandler\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":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdfb4289dcd0fd735742eadd74907d17a03e7963ece2259d4778d417a004c566"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompletionResolveHandler (LCOM4 4): CompletionResolveHandler\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":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion_resolve.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2bb7f4f82a7935f55ce49c1202e78e5ca71a228570a1d0fb0d2fa0523de8eae"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DocumentColorPresentationHandler (LCOM4 4): DocumentColorPresentationHandler\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":"pkg/analysis_server/lib/src/lsp/handlers/handler_document_color_presentation.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbc783968131b5d0a2cefd2e0b05ff2d7405bca90471a4ba04e8aca668e413b2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExecuteCommandHandler (LCOM4 4): ExecuteCommandHandler\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":"pkg/analysis_server/lib/src/lsp/handlers/handler_execute_command.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"912bbf648c96def473596a9cc93832eb00804753c41be7cc7b176f3a1f5f3b32"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SchedulerTrackingListener (LCOM4 4): SchedulerTrackingListener\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":"pkg/analysis_server/lib/src/scheduler/scheduler_tracking_listener.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"a70a984154a5c4fdbab7333641a68c2f84b45ae4eccffc08f6fb8d9b7b34cbc6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BulkFixProcessor (LCOM4 4): BulkFixProcessor\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":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"6742990b6d20ab69b2fc4b7d34ae99b58e697747448820aa328d7ed5c0819c16"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AddAwait (LCOM4 4): AddAwait\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":"pkg/analysis_server/lib/src/services/correction/dart/add_await.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb8e56e0790c0f07d4b6b4593ce1b104868adfe10292472c953b8edf84df81e5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AddLate (LCOM4 4): AddLate\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":"pkg/analysis_server/lib/src/services/correction/dart/add_late.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc56f5263c8019a3ae68db9a04e236e0d69c7ade3973005781df093cceb57b87"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AddTypeAnnotation (LCOM4 4): AddTypeAnnotation\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":"pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef9b15536739d2a51f0faaee7034cdd51bb6643e24da91b09a09e7a784208460"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConvertIntoBlockBody (LCOM4 4): ConvertIntoBlockBody\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":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_block_body.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"b111950f895f0c379b62f66f6f56e953cd23000264b7a8a2bc0a97d746bee4dc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConvertQuotes (LCOM4 4): ConvertQuotes\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":"pkg/analysis_server/lib/src/services/correction/dart/convert_quotes.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dc2a98c943af3e909eba43aa9ed8c9dafeb743421d5cdb0347e813810b56a34"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConvertToIfNull (LCOM4 4): ConvertToIfNull\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":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_if_null.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9f06e3aac5f2c335c14920fcfa03d26fba26477b2d681e255fe42cc7884435d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ImportLibraryPrefix (LCOM4 4): _ImportLibraryPrefix\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":"pkg/analysis_server/lib/src/services/correction/dart/import_library.dart"},"region":{"startLine":1078}}}],"partialFingerprints":{"codehealthFindingId/v1":"15dfdd3c84cfb7cd20a37359b7dd6c5e0ff7cbb4ebd856c781f86a05f3e3c794"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InlineTypedef (LCOM4 4): InlineTypedef\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":"pkg/analysis_server/lib/src/services/correction/dart/inline_typedef.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"babc2b603122439a291721a91694b6a6471f69e5cd58b3dabf26484c90bc2995"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RemoveAsync (LCOM4 4): RemoveAsync\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":"pkg/analysis_server/lib/src/services/correction/dart/remove_async.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d456cefbdbfebc19005c9049a44d8154421a951ae416fde7a77876896fcc51"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RemoveEmptyContainerBody (LCOM4 4): RemoveEmptyContainerBody\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":"pkg/analysis_server/lib/src/services/correction/dart/remove_empty_container_body.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a5175f8e8dca92ec220249f74f1758dbd8da418bd9f15acabc109ef47febae7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RemoveIgnoredDiagnostic (LCOM4 4): RemoveIgnoredDiagnostic\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":"pkg/analysis_server/lib/src/services/correction/dart/remove_ignored_diagnostic.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"722de151c69518248667b0f5a988ef234db704bd291f4e0026fbe34e7ad7efa0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RemoveInvocation (LCOM4 4): RemoveInvocation\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":"pkg/analysis_server/lib/src/services/correction/dart/remove_invocation.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a55077f4b422c3cfacc200d24421d1968f2f3edf488b0e7ef9b6d45948358c5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RemoveKeyword (LCOM4 4): RemoveKeyword\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":"pkg/analysis_server/lib/src/services/correction/dart/remove_keyword.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"592d563853edd24f9dbe8b6435af9bf6b29a9b7049b7b456170df39700132b4a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RemoveLexeme (LCOM4 4): RemoveLexeme\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":"pkg/analysis_server/lib/src/services/correction/dart/remove_lexeme.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"8581225df8db7112f7a3c8b84c2abc5d6c5e243321988fd703c672f56f729578"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameToCamelCase (LCOM4 4): RenameToCamelCase\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":"pkg/analysis_server/lib/src/services/correction/dart/rename_to_camel_case.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"f33451e169d515cb7a23c4e070d6c358bf7ad8c5fc55bf7a7bf388cb633cd807"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReplaceReturnTypeFuture (LCOM4 4): ReplaceReturnTypeFuture\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":"pkg/analysis_server/lib/src/services/correction/dart/replace_return_type_future.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"628217717cf25eacdad6139c4766e76139bb3a5152b5bb23a213868c40736faf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReplaceWithEightDigitHex (LCOM4 4): ReplaceWithEightDigitHex\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":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_eight_digit_hex.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bba5bad2d10b3da9ba8226a6a4f7af5d2dd27ed828defac85dc8c1e56aebef7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReplaceWithNotNullAware (LCOM4 4): ReplaceWithNotNullAware\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":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_not_null_aware.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"eae921a49999662661cf7b9cdfc76e24694914b647a50f631f52a5892643e640"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReplaceWithNotNullAwareElementOrEntry (LCOM4 4): ReplaceWithNotNullAwareElementOrEntry\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":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_not_null_aware_element_or_entry.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"b49765042b08eb3116b5cc0d9c7903211b324fcef44e042dd9b641e855ac49a4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: UseCurlyBraces (LCOM4 4): UseCurlyBraces\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":"pkg/analysis_server/lib/src/services/correction/dart/use_curly_braces.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d098d39c276d307d4c27176e2a7d51ae351f7a1b6049b2e075d23bdfaad9b246"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MoveFileRefactoringImpl (LCOM4 4): MoveFileRefactoringImpl\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/move_file.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a869145895a66fb81e360b22ba6509fad56fc9a9746c3900a61e289a5b000c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceReference (LCOM4 4): SourceReference\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring_internal.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"49f8b65f5dd635c125a25693afd260d71f949cc1533e79d3a1cb806e02f8e5f2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameClassMemberRefactoringImpl (LCOM4 4): RenameClassMemberRefactoringImpl\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_class_member.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"68f99f88ea85214ad7581e32763af0af1567341e21cd6e65ce1804a43cc6f8dc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RenameUnitMemberRefactoringImpl (LCOM4 4): RenameUnitMemberRefactoringImpl\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":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_unit_member.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f791d40366329bfb5f2fa62c05b4603c9c8368477c7d32b6d88cb29ed914b53"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DiagnosticPageWithNav (LCOM4 4): DiagnosticPageWithNav\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":"pkg/analysis_server/lib/src/status/diagnostics.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"2565b56cd65fb18d3e5ba78ce51265b48d78870ad055e29fc06f7cdef66704cf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FileStringSink (LCOM4 4): FileStringSink\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":"pkg/analysis_server/lib/src/utilities/file_string_sink.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f2649d82cd5c6a41e0e20fa45cf14030a9e95d89acf1ee0fffb3f56e9f005c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ServerLogStringSink (LCOM4 4): _ServerLogStringSink\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":"pkg/analysis_server/lib/src/utilities/request_statistics.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"a233baee4275c1dc12e0c06289798fe40ffbbb0eae83b0d6897c4a24295c1cbe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PluginRegistryImpl (LCOM4 4): PluginRegistryImpl\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":"pkg/analysis_server_plugin/lib/src/registry.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e643b7709d8edcdc7edc891df22eaca4ae11626c53344521d2e06cf4e204c9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RuleContextWithParsedResults (LCOM4 4): RuleContextWithParsedResults\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":"pkg/analyzer/lib/src/analysis_rule/rule_context.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0445bb9bc789ba96dea4fff3ef1ff9ff5e28b83b919730486e58902f33360e7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AdjacentStringsImpl (LCOM4 4): AdjacentStringsImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ab3742c81bcc6247281a0329c8a554d369853d053cd0eff993548ee47772d51"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BlockClassBodyImpl (LCOM4 4): BlockClassBodyImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":4382}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d033f1635bad73fc7644d7a48a1f3f732572b1e34e1f8fb4cc7b23aef763e4c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BlockEnumBodyImpl (LCOM4 4): BlockEnumBodyImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":4540}}}],"partialFingerprints":{"codehealthFindingId/v1":"a62f3f19a9802c06f7c39e13621913dda68a2744d20fccadb827b9fad3e0bdb6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BlockImpl (LCOM4 4): BlockImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":4906}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bc344602a2ab6c67741365734d67a0a947d4d7ae121e74f3874aad3ee2d5584"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ImplementsClauseImpl (LCOM4 4): ImplementsClauseImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":28512}}}],"partialFingerprints":{"codehealthFindingId/v1":"073283eea10f6d6b5b27ad25b660d4d23fe06455f911f42c1e377b74ea7c6800"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MixinOnClauseImpl (LCOM4 4): MixinOnClauseImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":38385}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfc95ffb1327abd2f57fb61d8fcf33aa37938aea4912596edb7f72a11f3f0819"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordLiteralImpl (LCOM4 4): RecordLiteralImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":47778}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eeeb044458e3bf9dbe534f74d889edb701405c131244a4c10c11546548e7ddb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordTypeAnnotationNamedFieldsImpl (LCOM4 4): RecordTypeAnnotationNamedFieldsImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":48843}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61516a0b93e2fcc1f0ddb4d86850b5186939c81bf0e04ae404650946b53bfbb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeArgumentListImpl (LCOM4 4): TypeArgumentListImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":56132}}}],"partialFingerprints":{"codehealthFindingId/v1":"baad42f6edfc66b2c0da3411696a654491cedac1305f813bb10b3040677eb839"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeParameterListImpl (LCOM4 4): TypeParameterListImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":56752}}}],"partialFingerprints":{"codehealthFindingId/v1":"75821f8fb386cd0df8b2115d952ab43bba563dc45268b22b5a05489f28389d59"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WithClauseImpl (LCOM4 4): WithClauseImpl\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":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":59526}}}],"partialFingerprints":{"codehealthFindingId/v1":"2deb0f6fbcba48f1409fe09d1d99b0317f385533237d4947471f1d07ee6b36a0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IntState (LCOM4 4): IntState\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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2026}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8365ece4b2da4a177c278a2236b1edb5d9dfa27915056a33e8427c176ff7dba"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordState (LCOM4 4): RecordState\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":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2843}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a71bef22e5a19dc1e816216a182ecc053f541e782af0c7dd1112710c75ea6bb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EnumFragmentImpl (LCOM4 4): EnumFragmentImpl\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":2489}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a60e22a9b6836763e8facb2abac74c7f98883138f626b89a9ec8adec9367851"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldFormalParameterFragmentImpl (LCOM4 4): FieldFormalParameterFragmentImpl\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3694}}}],"partialFingerprints":{"codehealthFindingId/v1":"500adfab8e33f18d7e21b9e42021011db8627bcee99ce4395ab46d008059193f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JoinPatternVariableFragmentImpl (LCOM4 4): JoinPatternVariableFragmentImpl\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":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6543}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c1feac8475b01af5112b01c61125d41c5a8df02a8d8c9ba7c8d1a1b2757e082"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterfaceTypeImpl (LCOM4 4): InterfaceTypeImpl\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":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":574}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3e898f3508c52679458c778ecc21d6ac4c5e82c734fec7c8c6dc6afee06473b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeConstraintGatherer (LCOM4 4): TypeConstraintGatherer\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":"pkg/analyzer/lib/src/dart/element/type_constraint_gatherer.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"292693e0b9b92023e876fc8f650fd9ce078570301f04e9f6092315e062275e2e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LintCode (LCOM4 4): LintCode\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":"pkg/analyzer/lib/src/dart/error/lint_codes.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca4694708ecadc399b891249d6fbe3f63fcdd8c7b214103f0d652a01301dc792"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FolderBasedDartSdk (LCOM4 4): FolderBasedDartSdk\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":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae9ba15bbd922523ef0466e3d0de0cbe9a95ea9a12f40e861634b7d14f63ecbe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Registry (LCOM4 4): Registry\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":"pkg/analyzer/lib/src/lint/registry.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5f6ae78e46eeaa6ef7f909d3e1983d69e2a073cfd2118df64f4e9b4f8ab5a5e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InSummarySource (LCOM4 4): InSummarySource\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":"pkg/analyzer/lib/src/summary/package_bundle_reader.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"8748c66efdec3765c09afe9f6945847d511808b04c7171415edb8e3e94dffa45"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AstDataExtractor (LCOM4 4): AstDataExtractor\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":"pkg/analyzer/lib/src/util/ast_data_extractor.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"80f6b80809727bfd652b4b21363c5ebc37dcdbab1f66dc500861b14f89b9c790"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: OperationPerformanceImpl (LCOM4 4): OperationPerformanceImpl\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":"pkg/analyzer/lib/src/util/performance/operation_performance.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d3f044914fd7ff3ea84abf1667d8df44763971c08458114d2b18573bd204fb0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _IndexAssignmentTemplates (LCOM4 4): _IndexAssignmentTemplates\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":"pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart"},"region":{"startLine":1415}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda0c28af09e07971223593509ead0d965986f0ee3c6143a3f1102f870bf42c9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RawIRWriter (LCOM4 4): RawIRWriter\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":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"d51778ce735274feeeb81e98c2bd5244ae6e969ffbda7e255fceefef4fab03aa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ScopeAnalyzerEventListener (LCOM4 4): ScopeAnalyzerEventListener\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":"pkg/analyzer/lib/src/wolf/ir/scope_analyzer.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"760899c4b3ee9ae8b953bc16ab686ceaa056b6313e55c0269ea55a256bedf9cd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PubPackage (LCOM4 4): PubPackage\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":"pkg/analyzer/lib/src/workspace/pub.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"b27d8664e8acf0a5e79c3b7d55bbeb5dd4dc2cad4720c1a148bac316fbb86372"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartFileEditBuilderImpl (LCOM4 4): DartFileEditBuilderImpl\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":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1789}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9f9ad3a47ac09aac029a92fcfb7ab5396d16197bc6099373ab26fcbd93f3fc7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompletionCollectorImpl (LCOM4 4): CompletionCollectorImpl\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":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_core.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"c59e5442bc78198a31049ed787dedc611353f595aee8a61e46dae7a36b62977f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PubPackageResolutionTest (LCOM4 4): PubPackageResolutionTest\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":"pkg/analyzer_testing/lib/src/analysis_rule/pub_package_resolution.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"908853fe0bf68ee452163fb974496c1426b49e3837698bd57288bd8851973592"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Compiler (LCOM4 4): Compiler\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":"pkg/compiler/lib/src/compiler.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cf089153ffa98d232988c41ed1765adeddf8f36105abf09010c1e77c42dba79"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IntConstantValue (LCOM4 4): IntConstantValue\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":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2e5dae5a4768925268508e32e3af2b0b2925d98a34cf78bb04dc27b400a0eff"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DoubleConstantValue (LCOM4 4): DoubleConstantValue\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":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"249fee6c58e1aba59cf0c52a9c2fefd3d8875e22c210026f09a123eba3ee523d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StringConstantValue (LCOM4 4): StringConstantValue\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":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"706d4196d86b60502609a90929b3df08549cdeea725767c5491ad70d2678a9a7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeConstantValue (LCOM4 4): TypeConstantValue\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":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"f77d5510e1a0dd99e9e8734f4ee0aa513d07f30414d514663270924aecc93e0b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordTypeInformation (LCOM4 4): RecordTypeInformation\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":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":2293}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f7e169527e784619bd2a25afa36f91493a322188aadca7f733fc2c3727f5d69"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClosureTypeInformation (LCOM4 4): ClosureTypeInformation\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":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":2461}}}],"partialFingerprints":{"codehealthFindingId/v1":"2541a3b15ae8e24c7012183de65db1770a81215d2e2e2f7986bcf9959bf4b2b3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ConcreteSourceLocation (LCOM4 4): _ConcreteSourceLocation\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":"pkg/compiler/lib/src/io/source_information.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5397cd7ee71335860dcb85b0ea43b8bf965c204de8d0b175dd6c54efd239e9c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SyncStarRewriter (LCOM4 4): SyncStarRewriter\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":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":2223}}}],"partialFingerprints":{"codehealthFindingId/v1":"94fea91317e5a1e3bfda51354fded5558154dc4ae6091b13071a7db6e98f8261"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MinifyNamer (LCOM4 4): MinifyNamer\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":"pkg/compiler/lib/src/js_backend/minify_namer.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"96cbd5b05aa67fafcd07d5b5fcebb6b236e30ce892d0781f65bac90305693a77"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Namer (LCOM4 4): Namer\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":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"3756605408046a89ec2f53d94c4c017d45dc35a7dc8d1519cdbe2ef103f28d3c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TokenName (LCOM4 4): TokenName\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":"pkg/compiler/lib/src/js_backend/namer_names.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba4d14e1a446b390ca2375df9537a53bc1a420a6a6a7055701c7f38d8fcb3920"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecipeEncoderImpl (LCOM4 4): RecipeEncoderImpl\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":"pkg/compiler/lib/src/js_backend/runtime_types_new.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b834ac0d46a3bbe5b03e8626c18e27d43516f51adbb1555286cea8a3dfdfc6d5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EmitterImpl (LCOM4 4): EmitterImpl\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":"pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"da76f0df909b25f1aa5eb3bacea1557e42480d82c2903ba84821b1b23512a0ff"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JContextField (LCOM4 4): JContextField\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":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"70e29a241fc75af36c0726f2bd120520d1a7e8a5ce14771157b39ab9d635c4f0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClosureFieldData (LCOM4 4): ClosureFieldData\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":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":1411}}}],"partialFingerprints":{"codehealthFindingId/v1":"041ee692b1010bcc57eed351dbf21644f8a60e5ba6d56d6163b4d48fb839a765"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: JSetter (LCOM4 4): JSetter\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":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a99e22ee1f5cc22ab0eb46e7f570ada843cf74cb33b22c5d51ebe3f596e5d0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SignatureFunctionData (LCOM4 4): SignatureFunctionData\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":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3cd49caf7bde821101c8c701cf8287542c306d5635abb2530ff1a76b5cc4fa0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordGetterData (LCOM4 4): RecordGetterData\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":"pkg/compiler/lib/src/js_model/records.dart"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"175848bfeab7ff693598d07ad06b4bfc794482fa4909e2d409f4c5c094216313"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeRecipeDomainImpl (LCOM4 4): TypeRecipeDomainImpl\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":"pkg/compiler/lib/src/js_model/type_recipe.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"6938fc342003672f7a0e8350e5c2ed857b35c6e12a297d7b0fefa423c5a73790"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: KFieldData (LCOM4 4): KFieldData\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":"pkg/compiler/lib/src/kernel/env.dart"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"c591e9f79950a1a0889b971a559f64c652344081a537178df001192319847f1a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaTrustedPrimitiveCheckRemover (LCOM4 4): SsaTrustedPrimitiveCheckRemover\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":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"20ff314e64acd65965ce90a02ee144a124f4f6fa4c6f95d6c9601de9d3856015"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaTrustedLateCheckRemover (LCOM4 4): SsaTrustedLateCheckRemover\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":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddef794641eb1cd1ac5a1f2a008959835fd7247fe9f971e03ee037bf912c2000"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaLateFieldOptimizer (LCOM4 4): SsaLateFieldOptimizer\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":"pkg/compiler/lib/src/ssa/late_field_optimizer.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"1abd996117a3e6c08b7549d148400fed6f31e28a185ad9becb55fbf0c2ab69a3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HBoundsCheck (LCOM4 4): HBoundsCheck\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1803}}}],"partialFingerprints":{"codehealthFindingId/v1":"f091b1808ee359491fd947537546f0f276961a6d263a21363ec4af197f0cb19f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HCreate (LCOM4 4): HCreate\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1854}}}],"partialFingerprints":{"codehealthFindingId/v1":"168f532203e09be1613fbfb1956b96778b3d4df5eaf27737eb172576bad63fe4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HInvokeSuper (LCOM4 4): HInvokeSuper\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2285}}}],"partialFingerprints":{"codehealthFindingId/v1":"aef78ef23b3ac7970bbd3cd17293853dc4f7f582d422a9c52edc960ca68bcab7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HFunctionReference (LCOM4 4): HFunctionReference\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2448}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc804448170ffaefd0900f73d21a8fa8cf1b557594dfd5cbfee24d9e0f73bc1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HIf (LCOM4 4): HIf\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3210}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eb88d92b08bb019037791b7603011b455a1b0992146c02c89f8443765bb9e53"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HStatic (LCOM4 4): HStatic\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3560}}}],"partialFingerprints":{"codehealthFindingId/v1":"df9616ac01d9ec10cb6702e00dc841f5285cab0fcc80a9c503583759f53819cf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HLazyStatic (LCOM4 4): HLazyStatic\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3668}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9960c4f2081c188dd34de9ef98f5f758b287f3e8cdb78bb545ed5b2263c472b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HStaticStore (LCOM4 4): HStaticStore\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3694}}}],"partialFingerprints":{"codehealthFindingId/v1":"64728e4bed9c0d1b4d51b3dfa9c48e4b895b93ff3a0f2ef63a3b582400dfbcd6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HLoadType (LCOM4 4): HLoadType\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4862}}}],"partialFingerprints":{"codehealthFindingId/v1":"e69e8a851885faf4773d2cab92782f68553884c59d42e05326916e58718198bd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HTypeEval (LCOM4 4): HTypeEval\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4919}}}],"partialFingerprints":{"codehealthFindingId/v1":"247866243c4d744ab0e015d6e8ea7feac0c90d29eff6a27d98a53a9c1f0641d1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HEmbeddedGlobalGet (LCOM4 4): HEmbeddedGlobalGet\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":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":5127}}}],"partialFingerprints":{"codehealthFindingId/v1":"90ed93ea826a853176820ed1a8750b66153f1aed46394ca9f82f1a1540e3993f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SsaTypeConversionInserter (LCOM4 4): SsaTypeConversionInserter\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":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4076}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e28ebda8da937e5ee537e7eadb81c058463bb27b80eddd778d6416f6619c6f8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _NamedCallStructure (LCOM4 4): _NamedCallStructure\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":"pkg/compiler/lib/src/universe/call_structure.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"731f5961a0b203e624fb6402718f085416ff058f59bd3e0110d1a996a24928cb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassUsage (LCOM4 4): ClassUsage\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":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"77543084e393ab1b291311096b079d9686d2a69cdee87113a0e1da1941afb0a4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Selector (LCOM4 4): Selector\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":"pkg/compiler/lib/src/universe/selector.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"58edee9662ddff962ad5d7c709bd23ea711622238523688fe9a68cce3f482a2c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Setlet (LCOM4 4): Setlet\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":"pkg/compiler/lib/src/util/setlet.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"18263acdfd31a1053bdcda7b1f3f444d66d8ad3a23bf2a18f5f65a9a3c945ea6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RunCommand (LCOM4 4): RunCommand\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":"pkg/dartdev/lib/src/commands/run.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee7dae9d363f85bfc8074c93999fdfa60cd4617d051d9b192ee744eac6dbed79"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Generator (LCOM4 4): Generator\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":"pkg/dartdev/lib/src/templates.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"103601da978581d39ded0358e27d04c15d5154be061a126fe6e128dd59386960"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WorkerClient (LCOM4 4): WorkerClient\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":"pkg/dartpad/lib/src/worker_client.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7d46bb6540a48d7839bd682a57d7368b790f8dc5627ed0a98ec5a25a2af8dee"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DartDevelopmentServiceImpl (LCOM4 4): DartDevelopmentServiceImpl\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":"pkg/dds/lib/src/dds_impl.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"eda84bd264e8a544538f3db07875a433df5be7186406f420a7ae7e6ca9e71ad5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SyncStarRewriter (LCOM4 4): SyncStarRewriter\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":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":2396}}}],"partialFingerprints":{"codehealthFindingId/v1":"be26b36a4f73e8f2494f988b3cb1f1f3c234a1363fefa2ec0c689d651b1b86ac"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Node (LCOM4 4): Node\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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":309}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5ce2be3d8a9192d50400e1c34d305868ab09e1174dbb4682f9d5dbf5dcf8017"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Return (LCOM4 4): Return\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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f495d6ecdae479ca724eee5799f981ffdb26f5fbb5af10156c03d3254e97d4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LiteralExpression (LCOM4 4): LiteralExpression\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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":997}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f58f447dde0832f334889174aaef1ca9d5ce1678075064cc215d0293e3af0b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Identifier (LCOM4 4): Identifier\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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1464}}}],"partialFingerprints":{"codehealthFindingId/v1":"763f26cdadeb41240ff4abf66d9ca232b04615da4376287a95bdfcb5f77665bf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ArrowFun (LCOM4 4): ArrowFun\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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1611}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca43216df74943ef9185b0b22aae33b4c850ae58586f9bbeeb21f5be09fea66a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassExpression (LCOM4 4): ClassExpression\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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1962}}}],"partialFingerprints":{"codehealthFindingId/v1":"0853d0c45be8aa385fa6565c234f2b0ac084550b97326e41ba8da9a75f30e02f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedExpression (LCOM4 4): InterpolatedExpression\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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":2046}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef1c9fe0c9cea45cb0705ae1cf93002b3d9c85f5ef41cb20584aa9558d02f79"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InterpolatedSelector (LCOM4 4): InterpolatedSelector\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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":2114}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26a8e40ca319f824a2b7db954263d656069d105529fe29eaf81101afd3b382c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RegExpLiteral (LCOM4 4): RegExpLiteral\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":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":2213}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d87eb2ea2e18a94cf4e40bee611c7ff2ac9d9992e55d235703621667cbb9de"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: HotReloadLibraryMetadataRepository (LCOM4 4): HotReloadLibraryMetadataRepository\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":"pkg/dev_compiler/lib/src/kernel/hot_reload_delta_inspector.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"52c60f2943c87122a74ddbd8c19af64c4c33e2968c20b6b39f09a2eb3b599b63"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FileSystemService (LCOM4 4): FileSystemService\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":"pkg/dtd_impl/lib/src/service/file_system_service.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a61182ea94b97645163ed779478fe071ad0516426c92647c8465569dd2d847"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FrontendServerAssetReader (LCOM4 4): FrontendServerAssetReader\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":"pkg/dwds/lib/src/readers/frontend_server_asset_reader.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c8f27f78bb23bf08a3ef7d981c64b6904ae4e3ae64cb076b12e093ee6d27314"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IncrementalKernelTarget (LCOM4 4): IncrementalKernelTarget\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":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3153}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e2bad97da8c7e1ad15ffc720532f59580a64aabf72bcd7560734f9a76e0ce15"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrefixBuilder (LCOM4 4): PrefixBuilder\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":"pkg/front_end/lib/src/builder/prefix_builder.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"97f8d89d8a6569af332812b41fe9de96ea57bffcfa430e67f4a515c3551c570a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillExtensionSetterBuilder (LCOM4 4): DillExtensionSetterBuilder\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":"pkg/front_end/lib/src/dill/dill_extension_member_builder.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fd49c1b674181a0246fee791d83113683d9f23eab036401a77813af1c3cbc5d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillExtensionGetterBuilder (LCOM4 4): DillExtensionGetterBuilder\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":"pkg/front_end/lib/src/dill/dill_extension_member_builder.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d50c356321ad05ae54a7a25f18b941bd868e556d1b19806b21b0081a93c9584"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillExtensionTypeSetterBuilder (LCOM4 4): DillExtensionTypeSetterBuilder\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":"pkg/front_end/lib/src/dill/dill_extension_type_member_builder.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ca591b5efe65fcfafac1fc1d41e1e66bd2fda599a4adf5d78285646164a64ae"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillExtensionTypeGetterBuilder (LCOM4 4): DillExtensionTypeGetterBuilder\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":"pkg/front_end/lib/src/dill/dill_extension_type_member_builder.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"c95546ef28d7f0bb85a53979c0d9dcc79bdca7c6bccd46a15193c0c3f3ee4f06"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillCompilationUnitImpl (LCOM4 4): DillCompilationUnitImpl\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":"pkg/front_end/lib/src/dill/dill_library_builder.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"8068862fe914577ccf29cad409bd5039f7866b10b66d7b0f29c83ba0ddcc2183"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillLibraryBuilder (LCOM4 4): DillLibraryBuilder\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":"pkg/front_end/lib/src/dill/dill_library_builder.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc905ccfd375d31c3de909b3f2f1cac1a1994ba4762a6da91afb26cbdf49bd75"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillLoader (LCOM4 4): DillLoader\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":"pkg/front_end/lib/src/dill/dill_loader.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bcd830c5ab1dd52362e20b8ba975eb958f0e516a2097a63ddacc4c29069c4a1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DillClassMember (LCOM4 4): DillClassMember\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":"pkg/front_end/lib/src/dill/dill_member_builder.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f53c98f82df7b36a877a6c3ac54cac8faf0c61fb358849e10de4e4deee53214"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassFragment (LCOM4 4): ClassFragment\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":"pkg/front_end/lib/src/fragment/class.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"623a20abf0c09be0507b9716c6368d4473d804a3defe89e577f517975b9d793c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NamedMixinApplication (LCOM4 4): NamedMixinApplication\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":"pkg/front_end/lib/src/fragment/class/declaration.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"39df08f58ff67ba0f4288d243963b982ce0bb7a6bb7cfc667288f2f2eda26512"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DefaultConstructorDeclaration (LCOM4 4): DefaultConstructorDeclaration\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":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"805278f900721b6064d53738256a4aeadcf8cbba17b9ea0ddbbd052f74fa253d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: EnumElementFragment (LCOM4 4): EnumElementFragment\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":"pkg/front_end/lib/src/fragment/enum_element.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"967dd9a2d1f542abd0e1f01723e4c699992df9f200b7f4dbf1eb4c86005f6c14"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GetterFragment (LCOM4 4): GetterFragment\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":"pkg/front_end/lib/src/fragment/getter.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e80a8fdd5e142bfd8dc2b1dc27c66198106c9a78ddbcf6d7e710c679abbece7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: GetterFragmentBodyBuilderContext (LCOM4 4): GetterFragmentBodyBuilderContext\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":"pkg/front_end/lib/src/fragment/getter/body_builder_context.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd8cd8d7eed0beaa99a96a2ed51e2d25e1e3a9a900c51a7e016d9ee7900faa0f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MethodFragment (LCOM4 4): MethodFragment\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":"pkg/front_end/lib/src/fragment/method.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"0385201acc8d74b528817f2c17c205345ad30e291fad47a3d5478f8a575314bd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ExtensionInstanceMethodEncoding (LCOM4 4): _ExtensionInstanceMethodEncoding\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":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"60d75a4057caa49efa77ec4efd9167b6dd06ddad673af4d2bf1da317ea1cd494"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ExtensionInstanceOperatorEncoding (LCOM4 4): _ExtensionInstanceOperatorEncoding\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":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4a86b9fdef9bf61fa6b4e7862573c55f45466a14ad1f9d3c4397b3fbf06e8f9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ExtensionTypeInstanceMethodEncoding (LCOM4 4): _ExtensionTypeInstanceMethodEncoding\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":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d2dedafc6810cdc570b446b30dbc9214645692cbc549daf279b6892af08e023"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ExtensionTypeInstanceOperatorEncoding (LCOM4 4): _ExtensionTypeInstanceOperatorEncoding\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":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdf7d54ea417f185a584a5da2c4cc2956b7ee634cfa3b67ff771332544177505"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MixinFragment (LCOM4 4): MixinFragment\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":"pkg/front_end/lib/src/fragment/mixin.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d4147c5b1fc62fb33ce330f3ef956771b835e1a2672f87d01b57df719016a99"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrimaryConstructorFragment (LCOM4 4): PrimaryConstructorFragment\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":"pkg/front_end/lib/src/fragment/primary_constructor.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bac59e89ece0a3f45abdd97309aacf36f98d4300b4c5efcbaa161a1424172a3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrimaryConstructorBodyFragment (LCOM4 4): PrimaryConstructorBodyFragment\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":"pkg/front_end/lib/src/fragment/primary_constructor_body.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b10eeac193f887554b2cfdc78d5b54662efa30f2f3d53525fd6ccf00212e38"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetterFragment (LCOM4 4): SetterFragment\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":"pkg/front_end/lib/src/fragment/setter.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"609cd5e4b5ece2471be24f9f35d9dd159efebc0b00a75432de17ad642569239a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _SourceExtensionTypeDeclarationBodyBuilderDeclarationContext (LCOM4 4): _SourceExtensionTypeDeclarationBodyBuilderDeclarationContext\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":"pkg/front_end/lib/src/kernel/body_builder_context.dart"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"644f94b2db9998837708c227f9500a08ad716dbcbf8b2139ff354d077d784cd6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantEvaluator (LCOM4 4): ConstantEvaluator\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":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2607}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d677dede418fe798d2c484fac4ecfb8b16c7c200621ed8720ae175f7886d547"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullAwarePropertyAccessGenerator (LCOM4 4): NullAwarePropertyAccessGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":1198}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e75110260a2e9299d1d2f402860fa5435f3f50eb444e9106236fd8d85a73ce"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IndexedAccessGenerator (LCOM4 4): IndexedAccessGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":1649}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d54fe4b0c4aee66205ec41cb72e558eced2aeeebfb50f888d83b86a4d0f990"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ThisIndexedAccessGenerator (LCOM4 4): ThisIndexedAccessGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":1843}}}],"partialFingerprints":{"codehealthFindingId/v1":"09844f2755423300b434833c0f46a6451435546ef8e2351ac1eec5f6ce3c7482"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SuperIndexedAccessGenerator (LCOM4 4): SuperIndexedAccessGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":2024}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c1e7134e1c90a368b7578e6437424d340eceadfa9cb502d542661609f29c71"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExplicitExtensionIndexedAccessGenerator (LCOM4 4): ExplicitExtensionIndexedAccessGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":3519}}}],"partialFingerprints":{"codehealthFindingId/v1":"b552701e906edbf93e27ddcc3c98e27ef88393b1067f3846f68fe89661d387ea"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DeferredAccessGenerator (LCOM4 4): DeferredAccessGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":4255}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9fe6954bf639e42ddd526930eb9150639b9eadea69675ab9d28ac28bf7f50e7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PrefixUseGenerator (LCOM4 4): PrefixUseGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":6264}}}],"partialFingerprints":{"codehealthFindingId/v1":"b89d39fb560ad883b173a782c21eda9f9900f0e5df1b24792bd6b346ccce3d04"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ParserErrorGenerator (LCOM4 4): ParserErrorGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":6652}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d741fd28108aa1a52f9ea7375b4d1d58145a3835ba680cfe9608a99a5791a47"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IncompleteErrorGenerator (LCOM4 4): IncompleteErrorGenerator\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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":7333}}}],"partialFingerprints":{"codehealthFindingId/v1":"5493987d0f9109f5f0db4f960cf52f196824a046c80e658ecd2a828b07be4ece"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InheritedClassMemberImplementsInterface (LCOM4 4): InheritedClassMemberImplementsInterface\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":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e8ff4cb382b8f08bf00c0f25b510f8dedbf599949f0e2edd41b1bff02f5afde"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InternalAnonymousMethodParameter (LCOM4 4): InternalAnonymousMethodParameter\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":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":2014}}}],"partialFingerprints":{"codehealthFindingId/v1":"b87d8f438c68505f39dfdb6106c988e8a8a77d7c7f60326ef2f5bc803d17d8ef"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InternalSyntheticVariable (LCOM4 4): InternalSyntheticVariable\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":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":2082}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa9d2629c86988a973bca3b9ccf892cca66d4b295fc7eb700b7a2de987bccc4f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DietListener (LCOM4 4): DietListener\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":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fdf7c9b5a5619b7e0ce4649d6a94c30dc1bda05607b9cead0f08946653c994b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FixedExtensionName (LCOM4 4): FixedExtensionName\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":"pkg/front_end/lib/src/source/name_scheme.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad25c36c5a7922bdd962e24ee8bccc8932a6d95e72906346c6be35e76ab05daf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SourceEnumBuilder (LCOM4 4): SourceEnumBuilder\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":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ae210101e0efdfb876ecc5e0092613b9c8485da6565f0d36e8949bb2dec44da"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _AsyncContext (LCOM4 4): _AsyncContext\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":"pkg/front_end/lib/src/type_inference/body_inference_context.dart"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c0b74017927df9412a65281d3e1a0d9b1542b2322f5e984e975690e6215c3b4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ContextAllocationStrategy (LCOM4 4): ContextAllocationStrategy\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":"pkg/front_end/lib/src/type_inference/context_allocation_strategy.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c42257cdd9c61d9d3956c45a2777c0e4076a4c255b40c7444ec47a2c076b94b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BooleanExpression (LCOM4 4): BooleanExpression\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":"pkg/front_end/lib/src/type_inference/delayed_expressions.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"3116697f35e85174d63e11995728be3d0ada1d7628627c06ca2d0752fa8a760b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IntegerExpression (LCOM4 4): IntegerExpression\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":"pkg/front_end/lib/src/type_inference/delayed_expressions.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a0ddaf71f97cdcb8551a950ed3f1622de04628e86368df7339c151c09a27641"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MatchingExpressionVisitor (LCOM4 4): MatchingExpressionVisitor\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":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"6418b69369e0949f2e65e1175b9fb68ef6b45f00edb2dc75c418c9e3e6f6c804"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeConstraintGatherer (LCOM4 4): TypeConstraintGatherer\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":"pkg/front_end/lib/src/type_inference/type_constraint_gatherer.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b47d87fed54e1b5bc4c83f85ea88b691a7a658edcf8037199d08742867dc980"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _Chunk (LCOM4 4): _Chunk\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":"pkg/front_end/lib/src/util/textual_outline.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"35778549c9e80d39e86dbe5ce8100a20af30aa8f3f05721d7905eb719a78b02b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Node (LCOM4 4): Node\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":567}}}],"partialFingerprints":{"codehealthFindingId/v1":"898707067739e436596f463535a349347ecde6c97e44f3840d1fe5f114cfcd57"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableDeclarationList (LCOM4 4): VariableDeclarationList\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1535}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e317a636d0efecc2c9cdb3495ca1f80c80abd3fbaa7c081d86f1705d6fe1608"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Parentheses (LCOM4 4): Parentheses\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1575}}}],"partialFingerprints":{"codehealthFindingId/v1":"565011dc72db99e3eadbcdab3b45391621dca6493b0badffb64a41ec1b8988a3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Assignment (LCOM4 4): Assignment\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1606}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c0b4c05f90ab401e1184e2db38de43aeff19f9deff95bc9dfcb6064c67d9c09"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableInitialization (LCOM4 4): VariableInitialization\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1644}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb397bb50c7d6922bd60a4249aceeff84d4d9f01c98e6a0c0367fc8478ee1fdf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Conditional (LCOM4 4): Conditional\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1686}}}],"partialFingerprints":{"codehealthFindingId/v1":"eddf410036869e2730f39b407a0097cb44909f77946c5d04ccd66c4ebbf41851"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Call (LCOM4 4): Call\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1721}}}],"partialFingerprints":{"codehealthFindingId/v1":"adae4ce81c4a08fb4b135e3cf13e4cc3d615acca22f447d96ba0a77ad621e766"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Prefix (LCOM4 4): Prefix\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1859}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc5bbe59037e18c111c4b28e40f86206c1e5e7ce93a0a1de6f12811628f6968d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Postfix (LCOM4 4): Postfix\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1889}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1f4608cc15b7114c694fabd31e32b6993d1bf1a3432c7107974d1dd7c286c8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NamedFunction (LCOM4 4): NamedFunction\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2016}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e6d3eed993557b1f61b817dd456c2e84505b845e5db32b9704553f2a8ac400"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Fun (LCOM4 4): Fun\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2054}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e29e39a7fa754cbf6dfc192949e0b77a2f1b664e3b1579ef783731d0386d273"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ArrowFunction (LCOM4 4): ArrowFunction\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2094}}}],"partialFingerprints":{"codehealthFindingId/v1":"82fe1c0e3c25e77b6357bc24c1b7800894c9ca3825325b021a27d8b9a107764a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PropertyAccess (LCOM4 4): PropertyAccess\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2159}}}],"partialFingerprints":{"codehealthFindingId/v1":"25729fd4e10c49fcb9f4b3184b0c046940d0e7d4baa294fa4bda0b1a0ea400ee"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ArrayInitializer (LCOM4 4): ArrayInitializer\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2401}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f657ffde9c1580fdae07f68d225cd4007dcb6cb4c2241e0e518dc2bf21a29a9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ObjectInitializer (LCOM4 4): ObjectInitializer\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2457}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb425ccbb1aa16183ccaede03251066350b28e5db42e6242e473dfccdbb58425"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Await (LCOM4 4): Await\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":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":2772}}}],"partialFingerprints":{"codehealthFindingId/v1":"45456a84383779727e1b1ab48c0b0c358c127854a837104ca961901d5f928766"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableGet (LCOM4 4): VariableGet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab8e618ee1906d9d8393f4a1d96b55b180c3eb3576e4a6ede6a92dddeb64f5c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableSet (LCOM4 4): VariableSet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"b835cd71521729de422b982b3316954c999f0ef8ac54dc5fe331aab9ad13610e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordIndexGet (LCOM4 4): RecordIndexGet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4852907ec9447063d48cad16234aea4ec65cae48d6c8670b8a8a7e00e58db7c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordNameGet (LCOM4 4): RecordNameGet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"9196b3f996171ba12eaa4487531def3a56a32e5e7dba5d7f7f3d036ecc1fa382"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DynamicGet (LCOM4 4): DynamicGet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5d3a301b4c39176b7a53c8f945338eb5960c4cb98bb7ebe3e1b3ae928d9a71"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceGet (LCOM4 4): InstanceGet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"e63f62ee26d1c3e8d83063145a33cc283a9795805f72655868b966a31e85a13a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionTearOff (LCOM4 4): FunctionTearOff\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bb082099cf05b3fc49b671c2b63ec63e7b1fa6cb735cf92840b3ae9a46788cc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceTearOff (LCOM4 4): InstanceTearOff\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a130ed6465cd952816a316f47b70808e85fcb47a6ab35fd019ef357bd3780f4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DynamicSet (LCOM4 4): DynamicSet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f4aca3ba4858a7bf74cc0a54acd65d1f497456b75ab913c22b08abecdfa9f85"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceSet (LCOM4 4): InstanceSet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":892}}}],"partialFingerprints":{"codehealthFindingId/v1":"84e7bf404a511ca26199951af89c5433e658bdc5ad0154742349c332d567bfb7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AbstractSuperPropertySet (LCOM4 4): AbstractSuperPropertySet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1171}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3c78d4e16e9ca6fb322c90a53a113ec14b2ba76b749a8477a8c6d4e22dfc7b2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SuperPropertySet (LCOM4 4): SuperPropertySet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1277}}}],"partialFingerprints":{"codehealthFindingId/v1":"42e33722b6112ac02581d03b49c5ff5eb0f3d91bcab52835e306bf33d1448b4b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: StaticSet (LCOM4 4): StaticSet\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1465}}}],"partialFingerprints":{"codehealthFindingId/v1":"541abbfca5551bc86bf561511e7d294d25f93a0070d1b1fd58c09b20368c7971"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NamedExpression (LCOM4 4): NamedExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1630}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f185bb8e54ec0feb3dc983d63da212188f36dcaa81f5b9746fb2889e482881"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AbstractSuperMethodInvocation (LCOM4 4): AbstractSuperMethodInvocation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2593}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc64d5a0c8823e880c003c2a2e88354f86d9606ce89a90a9e5edae83f8364b69"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SuperMethodInvocation (LCOM4 4): SuperMethodInvocation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2719}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1de67a48c5d9d7b6cb3573b510c8df5ceb96cc9b6c8c2536b020a5ccc7800c1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RedirectingFactoryInvocation (LCOM4 4): RedirectingFactoryInvocation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3021}}}],"partialFingerprints":{"codehealthFindingId/v1":"adfbc26aabe2a99eb552e02cbcd8af23a0a2d1a883ddbe73f5da2ad3440e867e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Instantiation (LCOM4 4): Instantiation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3099}}}],"partialFingerprints":{"codehealthFindingId/v1":"ade65a7c81f6761e5b3ca27c75f3c37b1f2562483d97e4d8241b6a403303a805"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConditionalExpression (LCOM4 4): ConditionalExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3292}}}],"partialFingerprints":{"codehealthFindingId/v1":"a669a733f5e8fa6bfc21d7f033a168d168dc796353f80858e3b3c0308877f8d9"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListConcatenation (LCOM4 4): ListConcatenation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3438}}}],"partialFingerprints":{"codehealthFindingId/v1":"4967e9af9d80bb72ad5d44f3c49c24a262b5c7f00e697ddf830e54d2ab4cf600"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetConcatenation (LCOM4 4): SetConcatenation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3505}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8861713804add788d7571edb4c408da0b319477ee4d0974a5fffee1c2475117"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapConcatenation (LCOM4 4): MapConcatenation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3575}}}],"partialFingerprints":{"codehealthFindingId/v1":"54eeae2463afe1fd10cef83332830c9cfb72de64afe94f62b9f423e98af1302d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceCreation (LCOM4 4): InstanceCreation\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3657}}}],"partialFingerprints":{"codehealthFindingId/v1":"57741ea99c468588df6760c7c32f9f80d9b953c14ffe5da3c07d9fcdbe191cbd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FileUriExpression (LCOM4 4): FileUriExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":3791}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa89ddbc944d7c14e074a6d525a8fd49cb22231af495e0841c5a9792612f3f60"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullCheck (LCOM4 4): NullCheck\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4065}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7abf9b646c75f3783727dab92e7910e1a869a24d3bf564d909d64b0034b3b93"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ListLiteral (LCOM4 4): ListLiteral\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4526}}}],"partialFingerprints":{"codehealthFindingId/v1":"410248c56d703115f41688755eab705e65514973e3adaefbc467409e010dd6c3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SetLiteral (LCOM4 4): SetLiteral\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4591}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecc3afb650a7bf834992baa9d9cb316dbb3b67dc5625f867864e2098a23a58b2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapLiteral (LCOM4 4): MapLiteral\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4656}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cfd0fb2c0274a1c8f7e3a2fe152ffc9c1784a0e1ae4d31c34480c4d89772e52"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapLiteralEntry (LCOM4 4): MapLiteralEntry\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4737}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f5f09c790fcaad0b4e6d1d6405f36a644e5a99e8cad5edd5fa52c75b16f95e5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordLiteral (LCOM4 4): RecordLiteral\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4795}}}],"partialFingerprints":{"codehealthFindingId/v1":"b77ca4240e673b449f48b198966bd35ca0b20c83e8dbadd96c8251e8f39f0ddc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AwaitExpression (LCOM4 4): AwaitExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":4897}}}],"partialFingerprints":{"codehealthFindingId/v1":"60d0c5a8ab4e43cf451ed3e65b5f03b15da55756914bf08dee0a8e2d0a8a46be"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionExpression (LCOM4 4): FunctionExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5015}}}],"partialFingerprints":{"codehealthFindingId/v1":"10d61bfe9bd53b19ee974c0c8ca6fdbdd3d9cfccec5ac88489de12628f3d0e42"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantExpression (LCOM4 4): ConstantExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5072}}}],"partialFingerprints":{"codehealthFindingId/v1":"e76f8e20d8d984b483f00d5c9018971707759231e84017d6440d4349d4191b26"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Let (LCOM4 4): Let\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5143}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ac6136b597b2676506c18655355f5add5e26e92c74c5c1ba967a6fc830f4614"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: BlockExpression (LCOM4 4): BlockExpression\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5213}}}],"partialFingerprints":{"codehealthFindingId/v1":"07c456c8ee0f23c59cf45114118d9fd1ae3809b6379d6b38dadafde0c2468dd1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypedefTearOff (LCOM4 4): TypedefTearOff\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":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":5491}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fa39a864a51c15426bcab9f25424f0fff9f512cc169eae5faff95f329518fd3"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AssertInitializer (LCOM4 4): AssertInitializer\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":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"962f93edaaf7b59e460c58644e28a20a83b0e6c69f632f550338217dfc6992cf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AndPattern (LCOM4 4): AndPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"20aeef79aa61a50e492909d904d7b0d5282cc391b9c75ab38a2e4370ae075ddf"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CastPattern (LCOM4 4): CastPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b3643bd8617f2986f8a43a6c613dba88bd72362c3095cc80dd547007522a643"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullAssertPattern (LCOM4 4): NullAssertPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"9465ca567fdf1671ca93c27fb28536f6238b92a41f397d3340f9b83aea186722"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullCheckPattern (LCOM4 4): NullCheckPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"d72929acc906d1a04942c87e5dd3930158997be7c1b7baab5821c3a7f819c20d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ObjectPattern (LCOM4 4): ObjectPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"898cf3b6af57984a00a765f822a35a9938d3d5f80fe983fcc7044f52915f6ced"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RecordPattern (LCOM4 4): RecordPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1312}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ae33fae0480a6967ab518e70697d0181a43b1c3cf474aa9e7e25a6f388bd913"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariablePattern (LCOM4 4): VariablePattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"57bd29397a89754d99b7c2f33a5e2e19ab70df1e13119996774b57b355c1da1a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RestPattern (LCOM4 4): RestPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1463}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f0271dde7dbf116b1ad552358fb28794898e7e3ffe02fb93e4a48ec03c4e1cc"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InvalidPattern (LCOM4 4): InvalidPattern\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1514}}}],"partialFingerprints":{"codehealthFindingId/v1":"4089c5cb9409e30167f6a09618aa0bf1181ee51ba81d6b854476bb1fd15538d6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: MapPatternEntry (LCOM4 4): MapPatternEntry\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1572}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6f755e056405d365d216440b793527c5dd0374564f0defeaada672dfb78c7e8"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternGuard (LCOM4 4): PatternGuard\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1756}}}],"partialFingerprints":{"codehealthFindingId/v1":"4833c9507ce305352d9c0f7ad54cb5d6b5b11b18aab449aa9b8141ae994ecd23"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SwitchExpressionCase (LCOM4 4): SwitchExpressionCase\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":2027}}}],"partialFingerprints":{"codehealthFindingId/v1":"f346344f7edc15e44506d877ff54b505d3b8c80a4870a74d90fb8dafe941b03a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: SwitchExpression (LCOM4 4): SwitchExpression\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":2081}}}],"partialFingerprints":{"codehealthFindingId/v1":"b522f9e2d49795de29ff2b5d8b6058bbf1fd18ec36b3c0daffd4e46d92611c39"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternVariableDeclaration (LCOM4 4): PatternVariableDeclaration\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":2156}}}],"partialFingerprints":{"codehealthFindingId/v1":"680fbd07f9e5a8ca0ffe8527f66ec5ed9b7cfe1650adea5cb4e8a8415f281c09"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PatternAssignment (LCOM4 4): PatternAssignment\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":2221}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e2f642755bcb098a3f712b20de6cfa939951488c6cd3d095dac9acc9b6a7a56"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IfCaseStatement (LCOM4 4): IfCaseStatement\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":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":2283}}}],"partialFingerprints":{"codehealthFindingId/v1":"eddf880627085bdf70dc270fc4c05da898ca6c864d23d9823983e90613b48ecd"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ExpressionStatement (LCOM4 4): ExpressionStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2a3b15b5ee0a4822d9502cb21f41fd053e6c9e8367607fb30b8623e6daddb8b"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AssertBlock (LCOM4 4): AssertBlock\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"abdaf53c3861c57361b5e50a13d08c6d1554f8bff333c476749026073352a77e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LabeledStatement (LCOM4 4): LabeledStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"64c1360db7a2c1530338f804c7bd743da1476d81e4e958ca5a7e7b14118bda9e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: WhileStatement (LCOM4 4): WhileStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfe16b201006cf700aefd96e1668b57b759c6329fba15b7d1697489924357817"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DoStatement (LCOM4 4): DoStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb563c8db5418133bddfde9f1ef340c6ecc3fd572b5e0fa63ddbe6bf1dd2dd03"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ForStatement (LCOM4 4): ForStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"41295946b6020109c4dde2da72f87db9414a625e24f1b5d6862763f6c7cf80d1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: IfStatement (LCOM4 4): IfStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1045}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7fa9ddcc0b0a89d9d5a563e5f5bf8c69c8c6bcbccbdf5e3995c8357e33979a7"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ReturnStatement (LCOM4 4): ReturnStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1112}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c3b094dd8e01d01a468a245f728bc626e700e6875c44d30140f392fcb70fd5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TryCatch (LCOM4 4): TryCatch\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1163}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc1ea6a73a15821c3bf1d08b043fbd81a7a7b18aa21d40f39a08af3357af3c40"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Catch (LCOM4 4): Catch\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1216}}}],"partialFingerprints":{"codehealthFindingId/v1":"92e35a5da56fb57fefe92af51f16443e099595660dae2038f680978176027460"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TryFinally (LCOM4 4): TryFinally\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1338}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c240fe0e5c69239f655d7c2c4e4f8aac81da9f405ff446ce3aa6d4d55fca2b2"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableStatement (LCOM4 4): VariableStatement\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1452}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc04057a880960361dcf9120806062dce4d2df25f2936289ad32c4463d75ecc4"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionDeclaration (LCOM4 4): FunctionDeclaration\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":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":1496}}}],"partialFingerprints":{"codehealthFindingId/v1":"d88c92ff04a0467e697013391eebcab8d54270ba76197bbee3c2b6688a77118a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Supertype (LCOM4 4): Supertype\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":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d3d1ae6fcb91de254a8d5c51014f71abe6345ec740c596a5a146bff7ae0de74"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: VariableDeclaration (LCOM4 4): VariableDeclaration\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":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":2454}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb01373e355f7d6c37a10c8b1b21a592342c2cda9a578b98532e271387be447f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CheckingState (LCOM4 4): CheckingState\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":"pkg/kernel/lib/src/equivalence_helpers.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9c0dcac835564c093550de5d0f45607d5dcc8044573be984e45f6e5125ee979"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _PreferForEachVisitor (LCOM4 4): _PreferForEachVisitor\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":"pkg/linter/lib/src/rules/prefer_foreach.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"d60cfa08525ae20094680ca4620adeeb4f098ede14fd19921314adc955dd9e6e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _UseStringBufferVisitor (LCOM4 4): _UseStringBufferVisitor\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":"pkg/linter/lib/src/rules/use_string_buffers.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ed64f9bdc7c383931d7715e876d4f4489522071f513ff62ef651fabe000dba"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Elf (LCOM4 4): Elf\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":"pkg/native_stack_traces/lib/src/elf.dart"},"region":{"startLine":1067}}}],"partialFingerprints":{"codehealthFindingId/v1":"1391547ed65891716300e7134c8587d5b76ab0446299df42196a012cfff0fcdb"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: RootCommand (LCOM4 4): RootCommand\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":"pkg/observatory/lib/src/cli/command.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"510c115a593cbb11cd40bc17ce451a1d4cdc4e9f046f435a79496f9ec9526848"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NavNotifyExceptionElement (LCOM4 4): NavNotifyExceptionElement\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":"pkg/observatory/lib/src/elements/nav/notify_exception.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e199afd79e66d1ac74e9e0488690ea20db97ac3fd6c7fef06021b4313f69e21"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Class (LCOM4 4): Class\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":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":2668}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a5a2a79219e59e9e92a56a71e64e4be1a1791528e7c77097081733668e6887e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ProcessCommand (LCOM4 4): ProcessCommand\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":"pkg/test_runner/lib/src/command.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca57b000051905301d8649beec246c9d6cb5978b72f4878d10eda35629933fa6"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AdbPrecompilationCommand (LCOM4 4): AdbPrecompilationCommand\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":"pkg/test_runner/lib/src/command.dart"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ee2f95888e93e93e98b6af54bd077570708a293e6aa666ec12596c9fa8e42fe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: AdbDartkCommand (LCOM4 4): AdbDartkCommand\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":"pkg/test_runner/lib/src/command.dart"},"region":{"startLine":1115}}}],"partialFingerprints":{"codehealthFindingId/v1":"416b17d8b9d768c979e69c936fac8f1889e6dfaefe2465847a3bbeff7d532c0a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CompilerConfiguration (LCOM4 4): CompilerConfiguration\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":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d82fb487d79707ea2888337f004181238894071dd32eaf6e70a4095a297cb10"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FastaCompilerConfiguration (LCOM4 4): FastaCompilerConfiguration\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":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":1804}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d0659f994c7f032043008c66bdf8c1a72e0dd7c51275799b25fa0ef1f0fa4a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Path (LCOM4 4): Path\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":"pkg/test_runner/lib/src/path.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"de68874739d381e406810e91a6232527e136f48e058d6a43f67b6cce93332f97"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TestFile (LCOM4 4): TestFile\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":"pkg/test_runner/lib/src/test_file.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c900615f67c894b1f4e70d94775aec5bb4687ca83a3ea3c760aae1805a82b71"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Breakpoint (LCOM4 4): Breakpoint\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":2832}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8949461b7135c34aa89e33b0b4f7517fde30c0b69a806e3bfa415dae44a27ab"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ClassRef (LCOM4 4): ClassRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":2907}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd9b2f1fc5106a804549f727f5b165dc54723dd171d66f549dca38c0fadba9ce"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: CodeRef (LCOM4 4): CodeRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":3264}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2fca9a014d4e6c304081f42345c153c41eb408044010d35db01286a762c3617"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Code (LCOM4 4): Code\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":3318}}}],"partialFingerprints":{"codehealthFindingId/v1":"05ff5df9fd1406592411d12c6dd3bd4c903cad96ad62f30772012e260bcc6338"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ContextRef (LCOM4 4): ContextRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":3375}}}],"partialFingerprints":{"codehealthFindingId/v1":"532248cf022bc3933876caadc6c1558f9026df9a08010dc27e1ac014a68e6cbe"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Context (LCOM4 4): Context\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":3411}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5c7a9964ddd4acb5196c6d83fa2c91da28424437fd0a9548809a70aba27e72d"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ErrorRef (LCOM4 4): ErrorRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":3731}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae8854329e3998e22ea19b7041f9cac565739f5e4971f7945d025ebf0ca2ee96"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Error (LCOM4 4): Error\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":3774}}}],"partialFingerprints":{"codehealthFindingId/v1":"8995685470595d9619a13574070987444252f8d5abcf6c0b7d66d2e0ce4e7081"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FieldRef (LCOM4 4): FieldRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":4323}}}],"partialFingerprints":{"codehealthFindingId/v1":"0029355159fe59971e0cf22b038605d6a0e095cdf0378798776abc9c5d8f9b50"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Field (LCOM4 4): Field\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":4413}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb702c524a141523673d7aec09d6441cf25759fbf414da7b64be4e1be1076ba1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: InstanceRef (LCOM4 4): InstanceRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":4932}}}],"partialFingerprints":{"codehealthFindingId/v1":"da6b87898a5397539ae127b13db7021f35f30eb6562c265c63d06593cd46992e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Instance (LCOM4 4): Instance\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":5217}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d427aab8e04168092251af3d15704b66a58d38dbe22a7d25b77fe8571b9f207"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: LibraryRef (LCOM4 4): LibraryRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":6341}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a59550f312a3fe75cef5b936bf95b543a07b684d29fd2ce9ec07575bdaea0fa"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullValRef (LCOM4 4): NullValRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":6841}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d4458cae83d9a520832b5db1c949a4809495a44c60248802b55d47c85b26067"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: NullVal (LCOM4 4): NullVal\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":6893}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f5e6723738191f496a0b24c10492e7d76b95bef1738cb4b122763d8216e3f0f"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ScriptRef (LCOM4 4): ScriptRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":7692}}}],"partialFingerprints":{"codehealthFindingId/v1":"64da928192b7689b8219b10b422778f0624133b6dc5cf85f7f06fe235dafd3d1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Script (LCOM4 4): Script\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":7729}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6e25698af10ef22330fb44a5bfb7798f54563b6ecd91ad441ccf00ae02c9f27"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeArgumentsRef (LCOM4 4): TypeArgumentsRef\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":8385}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f5536bf7517d86e1795893d97449a224b238696c7b65685fbf895c46b342966"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeArguments (LCOM4 4): TypeArguments\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":8422}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba3804e8a6c4f78bc81f59a7494062ae7039e412bc0c77cb491f2e61d316d69"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeParameters (LCOM4 4): TypeParameters\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":"pkg/vm_service/lib/src/vm_service.dart"},"region":{"startLine":8503}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8cdc9ca50503feb7f849226d924b5a98bb99a2a57441b320bd8ac68728a758e"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: Global (LCOM4 4): Global\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":"pkg/wasm_builder/lib/src/ir/global.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"249bbf4c58f5a8734c071d7ca78545d9ce4daf66e848f49725395d99e4eb3f83"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: DefType (LCOM4 4): DefType\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":"pkg/wasm_builder/lib/src/ir/type.dart"},"region":{"startLine":707}}}],"partialFingerprints":{"codehealthFindingId/v1":"1971f47c36039be8da05099e79ce8cd79124f64e920cffbe0fdb18a7deb94cb1"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: FunctionType (LCOM4 4): FunctionType\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":"pkg/wasm_builder/lib/src/ir/type.dart"},"region":{"startLine":973}}}],"partialFingerprints":{"codehealthFindingId/v1":"4909dbacad915b122dc06d9fc1cea858a56cc99814a45ced977fad314942bf72"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: PackedType (LCOM4 4): PackedType\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":"pkg/wasm_builder/lib/src/ir/type.dart"},"region":{"startLine":1369}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d749c37e8a6e18323ac949a22134069bb3813ed592c9fad9e0178c58983b40"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TypeParserEnvironment (LCOM4 4): TypeParserEnvironment\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":"pkg/kernel/lib/testing/type_parser_environment.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"a41ff617568acad1686ac4af6dfe1e0810c7bf322e2563dfc564d552cf88c112"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ImplicitUsesAnnotator (LCOM4 4): _ImplicitUsesAnnotator\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":"pkg/vm/lib/transformations/dynamic_interface_annotator.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"32e717e92969eb38d8187dab0d932b49e6d6b8cb6423d744924c99a56b5b52b0"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _TFClassImpl (LCOM4 4): _TFClassImpl\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":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1435}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa15874f368b71aea43a47240b7bab898e84454075ba3f9db207b949637edd5"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: _ClassHierarchyCache (LCOM4 4): _ClassHierarchyCache\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":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1673}}}],"partialFingerprints":{"codehealthFindingId/v1":"b03c1b5cb92c2761bc63e03da80832ff942ef9dd61ba7a8d24f9ba0bc440df2c"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: ConstantAllocationCollector (LCOM4 4): ConstantAllocationCollector\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":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":3125}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e88d53ad47d788e0fff0d225326069f97d3d13d8a4838d639b70431d701604a"}},{"ruleId":"D6","level":"warning","message":{"text":"Low cohesion: TFClass (LCOM4 4): TFClass\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":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"6477a3124f556e6247731ac53755f2969840c955759c6cb7fc3129d88d05e96a"}},{"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":"D17","level":"warning","message":{"text":"TodoComment: # TODO(https://github.com/dart-lang/sdk/issues/46947): Remove this hack."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"PRESUBMIT.py"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"57ef9765da5f7ba6233920edee2f6bb022561d6bd2eeff4867e302af6bd39b87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srawlins): Check more: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"PRESUBMIT.py"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"18406084fefdd5e99c377a6ffe66c4701f645b4dde2539882631ccd58fd35f61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/50105): enable dlopen global via package:ffi."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"benchmarks/FfiCall/dart/dlopen_helper.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d6ef1965c0b79e8579e51b67a55bd929ea999d43628c0d67c98dd620373aae3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/50105): enable dlopen global via package:ffi."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/dylib_utils.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9bee5ff9d7526ba65bcb4cc48b6238345526c818b39cea9e07b41dd9143f339"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(37581): Generate this file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"benchmarks/FfiMemory/dart/FfiMemory.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b87185f21759492b3cc7cca83dba7b7e0d6065b8e7a9593244aa3766a3169cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Do we need to add anything here? There are a lot of benchmarks, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"benchmarks/Iterators/dart/Iterators.dart"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"35cc9e6f737605ca4319fa24dda616ee19ef9b63098490cda2a5e9b69ccea4d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: \u0060direct\u0060 is a workaround to measure SIMD search throughput without the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"benchmarks/SimdSearch/dart/SimdSearch.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"595adf7b28fd14c6940cb7ea9ed61f33bcd4e4e16192e4191a422abc65420a93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement key \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"benchmarks/SoundSplayTreeSieve/dart/sound_splay_tree.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"4abc3d89fc407841bae5b13f16ff3075aadc3dbbe9033e0e39b71d309a9b7abe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement key \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"benchmarks/SoundSplayTreeSieve/dart/sound_splay_tree.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c42ddd3be77970041d0f72afaa0e226246d7200d91df909ba41e5a31c81d93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(kallentu): Add a variance modifier to the Node type parameter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"benchmarks/SoundSplayTreeSieve/dart/sound_splay_tree.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"9612294d05a4eed37e4e4d5c1a4d0fef3bbad60a726035828a293a0b6eedc3d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: possible specializations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"benchmarks/UiMatrix/dart/uimatrix.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf08b5d18fc9a3cfb4d591d89716fd0e205e8dfde91b3eeac7f4afa12d864f9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): In order to model exhaustiveness on enum types, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/witness.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"495d5935ed02e33ed5ad4eeb31aabe1fd71247384dd957e3fed075c2a1398c0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Sort types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/test_helper.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a9a9397a037ef8d87eef4aaba6d857ecd2a36c7031c2b3a774508aa9f00c3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Perform reachability checking. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/exhaustive.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"9362a21d2cb6a1c53dac17a14e8a753d0240ee4b9e6eb6e92ea8746b9fc47d2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this assert when extension members are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/exhaustive.dart"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d3482f23506e8980186eb056b0c301eb8180c7e02d265fbb002b6d52ee05f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this assert when extension members are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/exhaustive.dart"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ee70e9d405c26c837a05dd7333785dac76e29a3207635a80855526c4bf146e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): add the necessary semantics tracking to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/dart_template_buffer.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"558710ec68bf851da092febfa963e98a82a7eb433ba87c3db4dbd6632503b08f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): consider replacing [SimpleDartBuffer] with a CFE \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/dart_template_buffer.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"a654b87f06dfc0f0d426cb3f3522c7583bc0ea7d1b5db28702fdf567b78952af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): consider replacing [SimpleDartBuffer] with a CFE \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/dart_template_buffer.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c464cd889d5f1c5d29275e9c01705239693555ff829278d1f0a9983753751ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): investigate when this method is used.  Is it possible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/dart_template_buffer.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a94e4a812f58dfaab7675fc539387b67b205ab3bab4309ee66db2a6059b2e4f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): what happens if the type is a typedef (e.g. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/dart_template_buffer.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd0d325653a49cf9e8395aad89eff68e8963685a326ee1cc2dbb9e28c7fa3913"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can the rest key have head/tail sizes that don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/exhaustiveness/types/list.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"60837cc66281292e40d0dea193ebd221ed0c4f2fc0906659d5e8319899a51c3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): if the type is non-nullable, should this method mark the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":4075}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4de324b6bfb7b3dcbac60fc414a7e76446a768cad184d5caf11d0e050703d97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): if the type is non-nullable, should this method mark the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":4114}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0b07892a3a46e5ad87dbe7b3c1f6ae53d16eb90e6e08343ce7d9be03acd3a0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): remove demotions from demotionResult.nonPromotionHistory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":4807}}}],"partialFingerprints":{"codehealthFindingId/v1":"00128c1afaf65ff6da600c2630509c7ee9e4e396dc4154cea9711ef2c770c8d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): fix nomenclature to align with caller. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":5719}}}],"partialFingerprints":{"codehealthFindingId/v1":"39268897d1a7f74da7ec75e0a2329954e388c6e1a2c76675a43852ce8ab0dc30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): consider changing back to \u0060{}\u0060 once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":6296}}}],"partialFingerprints":{"codehealthFindingId/v1":"425e4e22b858ecff06fe41e2f7f4971e3b53b336f18c1555c25c8af1c4440dcf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): if the cascade expression is null-aware, do the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/flow_analysis/flow_analysis.dart"},"region":{"startLine":6568}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e94d5d44ae3c8970905c3cf5209bbd74ab7fadf03f6b6f3c77ad287d6d72a70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove \u0060as dynamic\u0060 when unsound null safety is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/messages/codes.dart"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02556dffe978898b45fe729f00538ebe5555079bc7d6b99b1782e3c2934be26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support constructor lookup to support full parsing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/scope.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"26c9013ac16e835938cff11210bebfa8c390b81dfe49b8b975a6b728ac8b0858"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need to split these into subtypes? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/references.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b790bdc86b03fa0c3a71f7a24f49fa97cfc67506de40b5a7c3de651fd0e49d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge subclasses into one class? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/record_fields.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6cc4d380143ae54748eab09d4b5483b9ef20ab020dd012a15432527ec277bb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge subclasses into one class? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/arguments.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"149e5b47f16399afa73097da55735be18cf9ea9fc3cf036d47119b68204caee2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This is not valid for non-const expressions. Expand \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1456}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6e87b97e1e52ed516edc8963aa1db5df4a9d0e254e84233bb4760a80bd9d759"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This might not be valid for non-const expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1496}}}],"partialFingerprints":{"codehealthFindingId/v1":"1610033d5fafb9c8a329d70e3a9ee3e046a9b7933f19a47cce5eedba87d05182"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This might not be valid for non-const expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/proto.dart"},"region":{"startLine":1536}}}],"partialFingerprints":{"codehealthFindingId/v1":"179727d1aeaa486afdbd9967dd8e018363a4fcb02febfb95d87ca04c7e8a276c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the token corresponding to [part]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9e0e7595935f9481608b95f87dc860e4eac6215363e47b7a05dd502050b33aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the token corresponding to [first]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"58ce26403c4cda65461c511b733f05c14057221798832e88ff076d6398df6134"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the token corresponding to [object]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"b67053796666a79e2195708875bc13c494a465ecfe38dd7d1119cbb3db24048a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the token corresponding to [last]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/parser.dart"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"b91bf6d96c9a500152ee3c0d2207ce0c1050a8ca80f01ccf44b7594d94d992fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use this for function parameters if general expressions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/formal_parameters.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dcf05ae84bd484601cb111369386cb14bd2bd00da0f3ff43437d532d21c2d68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support all cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"44e747f9529c913a370c3aaf6158fad9acf69a3476b988f90eaa2c5a0078a03d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support more cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed46561aec51e42fe8fd9e04710f2712fea1a7cc8441dbb6cee56d96993c92b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support more cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c735c8630ff77c0cb26b0b5b9202117192d24f3cdf647f23090954035c338cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should the subexpressions be visited? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/metadata/evaluate.dart"},"region":{"startLine":679}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d6e77fde5fbe6beafde2439b36158cb4add2a2922ce1c2b09794bc69a9eb21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Are there any other instances where it\u0027s a valid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ac715362c3018f9c1e1761f691ce5441a5fe1b2e3a4eb0ef09e17a306d454e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Check the record type stuff to set recovered properly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce646ea76e76b697f0a4ae435ab2cd232c671cc1352d360ee38d4851582dc51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Check the record type stuff to set recovered properly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1024}}}],"partialFingerprints":{"codehealthFindingId/v1":"e14c7db7bfcebd80b9a6696dad1bf14d8513d8384f6d3e5d4709185394228368"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider caching TypeParamOrArgInfo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info_impl.dart"},"region":{"startLine":1096}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de4833d94f5f35a65be636262730b2fc9d6e37ef863329241c7e764375e85c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider adding a const for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e1217a201fa28365a06883edc4d29f11b5c8ff2aedc188a481f157cc6bd535"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): consider adding PrefixedNullableType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdafa97b7ce6c1bbd0c0ac57cf0aeee59c1318c13ee0318733a846e866517ecd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider adding additional const for common situations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/type_info.dart"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4dfaaf287b15ff98c1752bfa37a4b6e08c670bbd1eb206281df0004394feefa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/token_stream_rewriter.dart"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"d245d1e8d8d95f8631b2a2f15707930aabf4a6b4a3f11602dd93ed777ad974b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Ignore this error until we deprecate \u0060native\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/stack_listener.dart"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"81cbc85714b163878f6b1e6520f98377fe4549c4a8f1489b7a14db295403465f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(ahe,danrubel): Remove this section. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd803f480c31177fe2302bed67e923b932e2184063056d62362ec8f1a72d2834"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): The [loopState] and associated functionality in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"03da9462788dfa966506f23c04f6b5420e8ecdc189a9c13591890e108b064074"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when both analyzer and CFE can parse the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"e258fca772c8a88667d5b65555d9d25b87f59b777035ff47f91742dfb3f6e519"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): once this package can safely use Dart 3.0 features, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6654fdf5163527383e899a06b874634e9345b193c25dd3396a34c305d25207c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Handle incorrect ordering of modifiers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"e50df15b7b4ea1427261e4c9567dd673a9815458df9b557e4c337d1d7ed781a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): improve parseTopLevelMember \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec3e0b1a7b14824eb1a2afd7c01cd6fecf4cc2522a6973b2bf24854cafac5f7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): report error indicating conditional should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1037}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c2cc3581e90f9d49e397e1200ee87a931bd0adb1ccbcf6a8552434d5ea39f4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): report error indicating conditional should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"358e40ce4be4dc5c65ba34e5df45d3065d9d4bcaf3fa6ed8b2808b8669851be1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): report error indicating conditional should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a34f69fdb36bb51e6b8d2396bcba9e9cd916e751fed9d7c4d94a04cffd86dea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Shouldn\u0027t this be \u0060beginFormalParameters\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1727}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a84d15079172a0eb36ac936b1a2fcf5d076d6ad19b093868c5dfafcf417889b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This is copied from parseFormalParametersRest. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":1792}}}],"partialFingerprints":{"codehealthFindingId/v1":"62827ac48b300641188ad70c9387d0665776067ade2cf93e734a1030652fe7d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider removing the last parameter from the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":2384}}}],"partialFingerprints":{"codehealthFindingId/v1":"060913f9b6f3ed83b42c061ec23fcd35911c46118b23d92d49d42b007ea807ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider improved recovery for missing \u0060}\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":2683}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0a2d641afd31a815c19713165de5097ade1c20e8640f8274b84dbe174edff91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Reuse logic from [parseClassHeaderRecovery] to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4017}}}],"partialFingerprints":{"codehealthFindingId/v1":"920246f6b74ac96db416c0fe4cd8709509585339199987b439d4f807a7f6f1fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider enhancing this to indicate that we are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4790}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f8e68751521ff8b09bbc42d24cce68c1a51e481c136cb920d01bb40274fc88f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider a better error message indicating that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4861}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e0e2a5aee895377f0d2cf7b02b7a902f14a8aa9a24c37ec2c815c37fbd1f48b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Investigate better recovery. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4907}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd1a1a5f2d313b5bd339cc2399095d5c1964a5aa959b818d803bbe1d39b9b769"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): rename ExpectedButGot to ExpectedBefore \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":4992}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e0054656c9db2902c29a38803e0a1e8c111a680283e48bb5e140661b118ab45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Pass in context for better error message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5039}}}],"partialFingerprints":{"codehealthFindingId/v1":"18bfb427640fc6c1da603c6de669ca3d028a16f1d4b99c5981c3ff38c7f70845"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Improve recovery by having callers parse tokens \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5046}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcd243274ab9de0a0808035e5b246385a492f9a8621eb2e21f7aaaee850bb736"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Once all expect(\u0027;\u0027...) call sites have been converted \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5094}}}],"partialFingerprints":{"codehealthFindingId/v1":"5140484773ebaab7b94bba5d12246138a3d016910ca9a85eba0e703af0818241"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update this to match what we want and not what we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5741}}}],"partialFingerprints":{"codehealthFindingId/v1":"397953a2bf1b48769c052d3be57907ed8e5070fb4217fbdf27fc59b285a833a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider parsing the name before calling beginMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":5904}}}],"partialFingerprints":{"codehealthFindingId/v1":"cce76dfb834a25721400511a868e55e36c8a5a98a1487cbd4021e00f9a58716a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Remove beginInitializers token from method events \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6149}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e831469ab715fb283f30bcb85b90f0c853f42d8c0d0d548f2be2b0f11379028"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): skip the native clause rather than parsing it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6471}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6938c3fb3ad0f3ee15359a158ba918fc0ccf3800d2a3f1858d7fb4e13678f67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add tests in analyzer to ensure the AstBuilder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6850}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe2817b9decbdf6eae5d8eadb6eb8f773ffd115ddec913e2d26e9a44972eea25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If the next token is not the start of a valid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":6926}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dba8d100b91e956de5802c1798167ecab9a5410614368d4345ccd3e189cd577"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Call reportExperimentNotEnabled to guide user when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7312}}}],"partialFingerprints":{"codehealthFindingId/v1":"3828976ffb7ebb322f7815e3864a614c392485c4e6e5afa959d8096ce68a4153"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Call \u0060reportExperimentNotEnabled\u0060 to guide user when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7795}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f99cd79c87a7279d0a71d5c174359b38fb7dab2d5f1e85eaa551a888d209869"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Call \u0060reportExperimentNotEnabled\u0060 to guide user when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7818}}}],"partialFingerprints":{"codehealthFindingId/v1":"829e12e795492a9b649c51af5743146a1e43465f75f18239dadff1eac3c7c957"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider reporting \u0022missing identifier\u0022 instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7899}}}],"partialFingerprints":{"codehealthFindingId/v1":"44fce6d9286629d58e69f0c7954f19c991c6dedf86b437a68e24c117d665cebc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Validate this is used correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":7949}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b6bbce91bcd15ac8a6b561f3a94638a65114871b651e2deaaf65c35bdbce702"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possible more specific recovery. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8350}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d1a20f0c0b62302fc3cf8aee687be6849d542e422d5e47b8bdfb2e7e3711745"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): hasSetEntry parameter exists for replicating existing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8575}}}],"partialFingerprints":{"codehealthFindingId/v1":"9949a74444119a7f6d65cefdd705afd4cb2b3d2cfb7ebdaff2c20e8095611777"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): hasSetEntry parameter exists for replicating existing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/forwarding_listener.dart"},"region":{"startLine":1908}}}],"partialFingerprints":{"codehealthFindingId/v1":"a85c00b4078a47dc3b13f7bdfb6f5573273f343a5be2c2a746e8f2c2f190e5a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): hasSetEntry parameter exists for replicating existing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":4976}}}],"partialFingerprints":{"codehealthFindingId/v1":"93c69d78fe2cdb9e113060992c156af571557e6523fd98e803fd3b13a61c7e25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): hasSetEntry parameter exists for replicating existing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":7544}}}],"partialFingerprints":{"codehealthFindingId/v1":"17efc091185bc7ba67f0d5c4745993bbebc08192134b0bb2f66cf9ff5fc26fd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): hasSetEntry parameter exists for replicating existing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/parser/literal_entry_info_test.dart"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"705568a83d0a0f6eb8e5bbb0eebeabf3ab1b6bc2fda4ec8e57d5539929adf877"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Remove this section and use the while loop 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":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8583}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc63139a77d692fca9731fa7bf3608559093598669f4787b0fd445fb768ee46b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider better error message \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8678}}}],"partialFingerprints":{"codehealthFindingId/v1":"38b58ab84218d3ca764debaf24a8b8315e7399ed1fe69d5627b45b92704310a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Improve this error message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8790}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa7bde897033f1917ac0bbbce2e3e9d7a381db62b6b3a90d518de4cf4c47f91f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Change the assumption above by moving error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8810}}}],"partialFingerprints":{"codehealthFindingId/v1":"4415f84223d30c688ba91392213289b037715b4da80aa74eabac5f0a9018c03b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO remove unused 2nd parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":8818}}}],"partialFingerprints":{"codehealthFindingId/v1":"4568b87b98d35efc3d0b1cdd97036b5779335af6c4cd1d42944ea3afa5c8bdd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly also for STRING CLOSE_PAREN / STRING COMMA? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9542}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8db4fa2ac8f9f0d9e9ef4bc109c369c15e64f46ef847f451146fbd4b9e28158"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): investigate other situations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9666}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bdc78d7624a07d09832f3b3a036fd997cab12d287d069e4ffaedf87b5f19e59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider a better error message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":9714}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3d3ddd02db9bd2feeeb1c1afe56bc61c3b483c4d7ecb16241157e713704fd2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This should probably (sometimes) be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10427}}}],"partialFingerprints":{"codehealthFindingId/v1":"951e466f621137941e1bed8218a071e1cc4099ebb7521cbbd0c8a74d9dd20d8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Consider parsing the potential expression once doing so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10557}}}],"partialFingerprints":{"codehealthFindingId/v1":"83905546ecee0047a36c26bbb4f0adc91fb7abb08ec6aa09fdbf062f9e57445a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Also consider when \u0060token\u0060 is \u0060;\u0060. There is still not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10583}}}],"partialFingerprints":{"codehealthFindingId/v1":"65d76128be6aca56f7d6b6eaa576816f8bfd33ceabf3691720b97252e8d6fa7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Consider other possibilities for \u0060token\u0060 which would \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10609}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0154eb5b13939cfbd5ff1e74d9744399a5f2d009455314fda000156c0741a64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Find a better way to intercept the parseExpression \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10674}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f5b3ca09d95cb251750ed49c3eb122473a361319b75dbf799d6a5a4a01c3f24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider inserting \u0060on\u0060 clause if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10788}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ed17db06aadeed03dc4a5318e6e9c69a9e21aa0e4db01659aee740b111be6d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider inserting synthetic identifier if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":10797}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b2b92c4f23986c7ca32e3c022470bda028c6a647da8df9e4c4f6eccb0cd7d4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Provide a more specific error message for extra \u0027;\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11343}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3333601c8da8eb1c6b0016aa524082388ab26daeebb4d49a95597d5b55ee292"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): consider parsing (skipping) the class header \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11465}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9d854130caecc0d57d4dcaf9dfd76c7f1f8aedeae8b509845d7a90d6328cca1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider replacing this \u0060skip enum\u0060 functionality \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11489}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e90a0fbfe1d25bbc6e79e72cd01e1891b2bfad02d445fe26f210997e9e97adb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If the declaration appears to be a valid typedef \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11503}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f492c4eb6226ed730dc8d77d57ff3eeebe1f7e4148a3af0e0801c5244bdc7b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): remove this once all methods have been converted to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11522}}}],"partialFingerprints":{"codehealthFindingId/v1":"82ee52073ba0b3f3264b152d12be9ce27f05b45e58cb7deb5ee445a6209beea7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): maybe handle other operators for error recovery? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser_impl.dart"},"region":{"startLine":11797}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec347b28289abc929edf8c7f0a86bc355b26cf0108d232394f428e059ca95f79"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(danrubel): Ignore this error until we deprecate \u0060native\u0060 support. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/parser.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a83e6423753f25ac79d7b5c9e8abf9fa02a77f8dc7d757611ae874efdfedaa4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we separate constructors from instance methods? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/member_kind.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c191ea71c9b27207a449778f5e1db95308c2edf8d67133e4654ced052fe899"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a beginToken? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"4379ef1d169b95e2b25cd77c708f84b82a4e3f3fab64a70a72f5a95ee8f9ac10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Renamed \u0060start\u0060 to \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"15928659064dff942360b66c991c5dcf001f593f6427d10bc07f6ac5399c37fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Renamed \u0060doKeyword\u0060 to \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"18adcc95466ceec8d0cd4b9d9a49a79cd4c1b2c6ee606f8fdc3b8525a0d3a8db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"045b0bda284fb7f63951b3a57a88b7315f9256399866ae209165271ba6ee6012"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":661}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f11c7a331ae9369aa24c753eb3b05e94d1e1bbb8c1fa03db908c92469368fb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb64bf5bf7caaddd01d19b086982ff76ac0885ff942ef02d96263b2ec80977bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"28964628a96a1567677a4728323b7bc0f3d5311119538e706ac899c1c6fccf15"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce57716b64c98d149a2e33b20cf5a18ee61328a8e5c2b286031aa14a3a6ef51f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"0083e5f551f384008c4168ecc7638d27be5b61385f6aa45da93c6d6001f17076"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"376eb89b1ff715f251875b0f1a512a2145f1f7914af192b86e423b498f49d328"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"a004a0afc486688d82cc259aabe1d74e2e4b841211d83adb03f7698e7e9e1e97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"426aebbcf40c77f53f32ca7eb997e006f7cb24267b23f7ce19622204b4712fdf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1054}}}],"partialFingerprints":{"codehealthFindingId/v1":"38ebfc723262b69fda039b25afd3a52160104777b2b5f5abec753e245a3cb894"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f862e56b820e7731f3cc157db86f1e637cfd92d7993b441c4533887774bcb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"00c1df0632db0e974945e43d377871863fc3781415b25748b5484be27614d6ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1148}}}],"partialFingerprints":{"codehealthFindingId/v1":"9029f747c8bae52f67ea832432f51ca2b02cbb9a75b460ec97377d990f82bcaa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1164}}}],"partialFingerprints":{"codehealthFindingId/v1":"926344cfb3d3338ad6106faed1d2764b30de170d79870a552cfa30f9bcbe09ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1386}}}],"partialFingerprints":{"codehealthFindingId/v1":"3400616d04b32502613f10689a7b16bb5dc46444ab2f6bf4f1f946228d6d2e46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6348a5506dae7883636102d271a7da69591da340086fa9e27ad9b7a9890084c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1406}}}],"partialFingerprints":{"codehealthFindingId/v1":"f36463bb46046b4e4c41eef41c1c7b517af676f3c5bcf2fe44ab66551d252dda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1421}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b9e4380ae0d0afc3fbb46b845244a5140a3f4c05f6085ca3b53c399f7bf43e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1428}}}],"partialFingerprints":{"codehealthFindingId/v1":"486744a41d8dbef77aa45dfbd3213d1e60bd84299263013c38dc08f724fe56c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1447}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b009b0ef35fe14ad607bc6c80abaa46708dac038db522c2d980d2bbda5d3acb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1459}}}],"partialFingerprints":{"codehealthFindingId/v1":"68fa8c98a643da2b7960a33f4deba320d309a09c4fe28ce1ecb1ae3f33de2d99"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1750}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fa3e6374ed8ad4ddb7f623c5199ce67cfd79c64398884d3af89b94ae87b1a34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1965}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2be1b166433ee22593c6f693b6efec23f57ba3ee0c80b0641907e452cf02a28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1974}}}],"partialFingerprints":{"codehealthFindingId/v1":"8050ecdb5976f3529612fa50205293476dfd2486dc0e8fd211c8ffb39a14eea6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1989}}}],"partialFingerprints":{"codehealthFindingId/v1":"400e5cc3c4645b750566a10fa148cc4085733c62b2de3e323d63080436778404"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should this have a \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":2346}}}],"partialFingerprints":{"codehealthFindingId/v1":"fddf8589df8f165291030b0dcf70749141a966c90f1ec625f1c79144450fa902"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry,ahe): it seems inconsistent that for a named mixin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"c031eba3588ec9d3be3f0bc4cbac399c82b793e93a48e941fafba20eda2707d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jensj): Rename \u0060begin\u0060 to \u0060beginToken\u0060 for consistency. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":914}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d14488e82f066d146cc8298cce8e1325162b8e0773f83f923c8c69488249811"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): The declaration does end --- on the name of \u0060endToken\u0060 it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1337}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3a807efb5a4d5facf9b8d1f75ea586894d3fd91cff4aab81a833ad5ec882e18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): The declaration does end --- on the name of \u0060endToken\u0060 it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":1742}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab0ad49427a31dcd76752d305670e48ffbd80848be50b20a7b45e4467d0025d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): hasSetEntry parameter exists for replicating \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":2044}}}],"partialFingerprints":{"codehealthFindingId/v1":"58fde81521e1325d15fb18eccb1167e6377a13fc2545a3d5b82ab0af82e30e5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should \u0060startToken\u0060 be renamed to \u0060beginToken\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/listener.dart"},"region":{"startLine":2366}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa7d25b0f89f849092c8c38a252f7b7cb66405ce045745411499b41ae8ed7959"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel) Consider a new listener event so that analyzer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a27f998491417a009a12c02e265e886a4df5d2253b7eb50071afb00387681a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Why aren\u0027t an error reported here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aaa1d2e27745e88ca1c4d580f0e047fbd0d2a8c7be46fd1d4b6501e477bb050"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jensj): Initially this is just a copy of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"a66cce55a642af5e9371ec9fca481e3c3f3a6480baa164f2bdf15a08ee4d2a6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jensj): Initially this is just a copy of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context_impl.dart"},"region":{"startLine":1256}}}],"partialFingerprints":{"codehealthFindingId/v1":"043e4772d802ccac132b25397a9335a0d6da8ef593363e9b60ae16677e6d8a51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry,ahe): Does this ever occur in valid Dart, or does it only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bca4b40bd5e5d4a70f2304dd4ea96f327eab254d94b4799f75ee7f26092f751"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry,ahe): Does this ever occur in valid Dart, or does it only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/identifier_context.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"77756081c760823afd82d57d73b6f15c3c0d0cbc3f0c4d917aa7c8a62d4bec35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): We listen to errors occurring during expression parsing, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/parser/class_member_parser.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"ced3a1237adfa54ffbd2798cf04e8cabb3a27f7fa052ce9727abac418d965e0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lry): measurably slow, decode creates first a Utf8Decoder and a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"d29dae558d56f73c073329bdb62ff49dd1cdae397ae7b0b5d34ba6fced3e034f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): don\u0027t just assume that removed characters were the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2d623ed16831ed237992fcc9c73f8dd9f5b8b1ea85339493a1260a980d44f68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lry): this measurably slows down the scanner for files with unicode. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"02babc652169750f4d81d994a833c5f0bd53017779591524bed9e2e6bab3cd1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This should probably change. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/utf8_bytes_scanner.dart"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"80dfc18cb16f0e8f61bf05e0975a84ffa61b60b474cff9dfc3ce5bdaec4bd091"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This should probably change. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/string_scanner.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a5724bbd9c62ccac96437c1d32f3aa457cb432d3475ba9518beee1c0a79a2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): \u0022all\u0022 is misleading \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/token.dart"},"region":{"startLine":2378}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bc9e8226561e8379f98140867fd4ecff73936636ce2f8d786b7541fa9ac55c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): \u0022all\u0022 is misleading \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/token.dart"},"region":{"startLine":2628}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae23c8015e36eba2f8c7168c76ac6626f2bc4208497a5803b14359168cd78cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Should these be added to the \u0022all\u0022 list? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/token.dart"},"region":{"startLine":2455}}}],"partialFingerprints":{"codehealthFindingId/v1":"b800b16cfe83ac52ad2a501496018965376bc86b3d8bfd71e8809671e46e2d6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Should these be added to the \u0022all\u0022 list? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/token.dart"},"region":{"startLine":2705}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a0489cf281523b985ccf31aeb19bfb10a0b216c3926b91d1a360c8a53872787"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Look at number of lines, tokens, parenthesis stack, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1064}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6081aa45689b1a5b2c2e99b165c8bf362730303217b44045e7e0e7b604243c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Look at number of lines, tokens, parenthesis stack, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"78260e161cfb34eb3d138e177356f4101bbe505dab6dcf26bdba77d711838457"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): make this required and remove the languageVersion field \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/scanner/abstract_scanner.dart"},"region":{"startLine":1917}}}],"partialFingerprints":{"codehealthFindingId/v1":"eab0cff26213ef4a89fd0a6f3e5f61643aaa9543e2a859a250ab6b49af5bb81e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): make this required and remove the languageVersion field \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"95da62c43860c868e4707fbdd1f1c53ca39cc89a627ea9a8f29a24383f64c582"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support an empty marker set. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b0d31867f8f10c55e36b227b85af025a4e74eeb73874aaa5e7660d6cd91b905"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support --show to show actual data for an input. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"637d2cfa42a813e2a2854f1af710c6606cfd20a2ac757a6fa61522b4a250cbed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid collecting data without \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/id_testing.dart"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"337c7bf4ae271fbd4b1203801a78970529d95a18e49909b3bed5880ce6564a32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid \u0060null\u0060 URIs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/id_generation.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e80d70d68b79f4eead94616c28666f6f9ffcf660150640e0ef6d840d756fc1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support global library annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/testing/id.dart"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfecf34b8bd3a46295f5557d17b0af74554ce30b7882938065f8cd95520732ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): we should highlight the span. That would be more \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_constraint.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"22fb2473ca15f5a3bb1e4e0103fbbd5b53309c827a1b6119388b6b61fba464eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(cstefantsova): Remove [topType] when the discrepancy is resolved. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"85ef1a44aaaf54e00b7947741b943885cc7b691866a886a1b81e02941f138343"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Pass [dataForTesting] when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer_operations.dart"},"region":{"startLine":1504}}}],"partialFingerprints":{"codehealthFindingId/v1":"85dae005ad71a226da2669841dc43219a3b671aa19a6ba21562e1bb55fde0bda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // not by shared code. TODO(paulberry): share this logic.) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c59a65809aa8a56b59312b1d98f4059fe17e1db44386420845e3c6dec1c12c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): are we handling _isFinal correctly? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"12bced8f4d8b50680296e41e46bc338829bd82830cd1f278a8c4bbb2680ca02b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): rework handling of isFinal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"526fd9a91ea3c4a18d9c083ba8067fe58b0e6905b9d542dae1fd0e06f4815d55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): rework handling of isFinal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":1010}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee16b229720e95eccb6bb9b20abaa4c4f23f3a218cf99c18378c18437ca6748"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): move exhaustiveness analysis into the shared code and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":3062}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed2e972ef66d9e7baa999efa0484bf70ac4bd3520db8e81569452756f8a5b2ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): harmonize this with analyzer\u0027s checkForNonBoolExpression \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":3213}}}],"partialFingerprints":{"codehealthFindingId/v1":"5abcded79b0ebc609e7c1a546acc22038b2e6d377a410d0fe9a2a3319e15f213"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): spec says the type must be \u0060bool\u0060 or \u0060dynamic\u0060.  This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":3214}}}],"partialFingerprints":{"codehealthFindingId/v1":"23db4f0eb5865a0f986c7420df6e681681a795502fbef23bdc26d2af33b2a56a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): move this error reporting to the parser. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/type_inference/type_analyzer.dart"},"region":{"startLine":3489}}}],"partialFingerprints":{"codehealthFindingId/v1":"617aeed6efd62a585af711595b3651028e2bba5d8cbd50efecc2e4142139ca88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): resolve Uris lazily, so that schemes provided by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/options.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8d0d9db673b68fecfebc3107cdbb810d7c6ed3c2457341d8077aff9fb5865bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Use new Link\u003CT\u003E, but this cost 8% performance on VM. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link_implementation.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f3561dc6eeccbfd902d045722fc28e7217d64d33250969543a4e87bf56242aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Use new Link\u003CT\u003E, but this cost 8% performance on VM. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link_implementation.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcdf0698153d415ada75fcd9e6d0bcedb89f944e3c732784ac2046cee990261c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(scheglov) Rewrite to \u0060List\u003CE\u003E\u0060, or remove. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"c99a1b10b2c5f7e93fe0139be62a78a281196da829e95266734ee16b5dd243f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(scheglov) Rewrite to \u0060List\u003CE\u003E\u0060, or remove. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bdcf77db77cdf659e193adb6e140401d1238bd48f1a264c653102aa32c9c77b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this method? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"a504368f411f4e0baec0c1c24e48201c9008f90e8aa8cf11d0d7010f337a42f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this method? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e37572cfdf90473de3fbf83384f4425ddd0cd26f2fc8c9d1e6db7c541aba1f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this method? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/link.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"2676e96e2fb26f8263fb7f7b295facef3ece53d9446ffb274f9c1371effdef00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this method? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"907a27a4bf150596a97b827329d84a517f408b037cf597ed2dbd87c0a88f5f95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this method? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1576648cff6f5de80a6c756f432c7bd05af2dab8094776e279addecbc6f128"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this method? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/link.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3c0f0334a924009f4a56ed4279332da1cff1e152c2251564125041c68419a7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): It would be nice to use a Dart library instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/filenames.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"41ea2181ffe08284b5ffdf266448218cf1a18034334a8989988463cd06af8cab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): It would be nice to use a Dart library instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/filenames.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"36a7ea9de38cf8bc3019b408079f5aba33c635b1133ffd03ac95608e1e1eb3b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): consider rewriting in a non-recursive way so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/dependency_walker.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfd8a5ca0fa66226ea1ff67564070b7dbc43351d0bbc6eacc4374181638b18b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): in the event that an exception occurs during \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/dependency_walker.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"e69e30d40bfe0341e8b28b498f3823324a52c8b653fac763d1f2901cc5040661"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Originally copied from sdk/pkg/compiler/lib/src/colors.dart, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/lib/src/util/colors.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2fafb9cd2f99acc069f4be21fb2d5860665613a1c1fac321b6ad62644456927"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should we make 1000 copies of the tokens? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/parser_benchmark.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d129caf0496a61e9e7653bc2afc428a0137c0177525ff28de91b537705c8aaa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Implement isLegacyCovariant. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_types.dart"},"region":{"startLine":966}}}],"partialFingerprints":{"codehealthFindingId/v1":"370f489c6d350de893092747fe9f418bfbf2cf4fcc776d632af2957ba636fc61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Implement variance. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_types.dart"},"region":{"startLine":970}}}],"partialFingerprints":{"codehealthFindingId/v1":"54e2cab2130350a312af4a116230704e4c312d8a96e3d5a38bec5c70918cc838"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Find a way to avoid testing for the specific \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_types.dart"},"region":{"startLine":1799}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c8016c013b3d3986ad9295595c08ce2dc08024a99fa7115e8170d6dae54e648"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): support more syntax if needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_types.dart"},"region":{"startLine":2523}}}],"partialFingerprints":{"codehealthFindingId/v1":"b37d959edf4ebc16a293d8ab2bff3e43182d797af457deeae8ade45d2c2b3951"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): implement computeConstraints \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_type_constraint_gatherer.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cda8cbc83f1ae9043450106a3c483a85c1dff8c8bb98c402ec263952d36d1c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement eliminateTypeParametersInGeneratedConstraints \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_type_constraint_gatherer.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc7d5909b21b8f02e9163df173ba3e163d2e28f5f8529e5d09f369233a74a7a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): if this gets too unwieldy, replace it with a more \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_type_constraint_gatherer.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"daa6564a3175518fca7977a1c631343684b9b9933dcfc6ec940703d26aa0f331"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement instantiateFunctionTypesAndProvideEliminator \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_type_constraint_gatherer.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd585486636567012ce7a36fe4680bb14cf58809d96a98f311ec5795d1cee61a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(paulberry): support list literals with an inferred type argument. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e75947ae3374ecb344245ac3670499b3226c5aa430bc6bb1518a914f9f5b86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// literal. TODO(paulberry): support map literals with inferred type arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6b31bc25e095410a53e97b2777eaeaffbd12aed9d0ba359d75a69235b6b4f86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Implement greatest closure of types in mini ast. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":3745}}}],"partialFingerprints":{"codehealthFindingId/v1":"611baa2b113879a9a6c01363a7c125ea4a46375d6589f36d9722c3e4ba6a0b82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Implement greatest closure of types in mini ast. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":3982}}}],"partialFingerprints":{"codehealthFindingId/v1":"925cee02ad5bd3d2ae59a535d38c87b1ea7dda861a829896f2dd8d5ce3f6ea83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Implement isBoundOmitted in mini ast. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":3774}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c29885f64255064a52b28cb777ff8f3e0f6fae8fac99b0cb52d0bd865802c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Add the support for extension types in the mini ast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":3796}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5913e21cdd00dd9282e44a8c768d7e56b5de135f35d037830a781c0e121587d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Update to a fast-pass implementation when the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":3913}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f4a8e4f8bdb2cae23bee4246a8aaf6131198050345346aa232d863e3b3ac569"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Implement leastClosureOfSchema in mini ast. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":3973}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d1177b8f06b3672843973452ee8857c56d578c584db1aaa8709676103d7a93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): implement lookupMemberTypeInternal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":3996}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cbb867adb738e31416a94eed41f99ad31be46c86ddea8e68867bd9be0370f2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Implement substituteTypeFromIterables. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":4196}}}],"partialFingerprints":{"codehealthFindingId/v1":"a80345f84e27e7fb0d6ed734db223b2932f3c52c60e0ff9d40833126886ff7d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement null-aware support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":5104}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cda4ae55cefe58cc4262b214f02c026f76a967208e3518ea6ee09cdf1935404"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement null-aware support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":5115}}}],"partialFingerprints":{"codehealthFindingId/v1":"4553583b7601643671ee03bf97867a5d1d33eb95dd1a341949a3867e56dc57de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): null shorting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":6852}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef6d011805cb216fb03f6baa2e8452da91327a54159bd1bd6e687bb6969cd18c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): add language tests to verify that the behavior of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/mini_ast.dart"},"region":{"startLine":8443}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e56215a926836765f95ca5d97b2c7b134b9a015872c11eefd488e15f3cec827"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should new data reuse an existing encoding when that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/id_generation_test.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5f68413377d6239849da4bad3fc5659becad3308a9a113ce92a8e7878ab116c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This seems like an odd offset for the constant. It \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/constants/data/set.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eb2f303716aabe9f9fbd89145276b512b91a2d8034954e028a7d16c9449f788"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This seems like an odd offset for the constant. It \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/constants/data/map.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"43d8e497b09ce9772c8f3d3366c4c8899b8b50ef000045f1e1cfd5a678102bc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This seems like an odd offset for the constant. It \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/constants/data/list.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed68de43be1f4ab165c0551f361c081a8556f3364782b5d8449f100de326a36d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Look into fixing this code. Right now we get: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"744d6e9948e6540751fa031fd913a21f2708132a7ba710de9169ae74f3fa203a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Look into fixing this code. Right now we get: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/kernel_ast_file_rewriter.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"745709d2eca7f29ed8345b9fd7930f9ea850627afc1c44d0bb2c3310a330073c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support testing of enums elements. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"842bb5b7422c64f1d102abbb8d79e031208fd3c824ef0265f1f879a30b57e51d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support testing of enums element values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"b65bba3c2f9d0c52608f05ae4e545381f9cea313f11fa0f948089d48a53104ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support type variables. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf369fca40adc29a95af4a14eac4986420b98914f4daadacee7acfad2e44dfc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support generic types in testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"b831b6ea6ea1463baea1b04685806789460ba273822adaaee51c81c00c0b023a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support generic types in testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8974ddc2efd1eff4c73b32b6c28ed1fee649854ae5303436dea9111867c5247"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support future or types in testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6a558fbe749e3eee123249b7e1d7f5bd36158a526c4bbe6cdcec9ad37879a34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support list types in testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f3873b57b685ae1b3706ef359460f1727b9197c9fbde21a23448e77ca2e1a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support list types in testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"402f826fe16396ad1817c281344dde349934307eab329b560145cc845b2ac16d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support map types in testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"575f23708ee87de9537aa5d65eed2cbc56dec1daf296f901d4b1f22515e623b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support type variable bounds in testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"d874269be71e99323f045c9d5cde86066f4750d2116809495b9750e4e878450d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support extension types in testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"73c8c95f37353399b06d4de23da99c0210653b2d46fd660749b1399ed76f5e47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Support library URIs in testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"64aa96021ab63ca88bf53d200e2a78bebe148ae801e43282a5dd5ed32afa23a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support testing of enums. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"65abce604100f293574b0c7acacfe2dd1b257ec19b5c3e8632e325d5dfe099a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support testing of enums. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"d18b31b92689ac64b23d2be7dd3fdfdaa0cdcaa48c91d1879bddd7ed311771f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support testing of enums. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"98bd03b18ba31bd58e9660e3cb588fc83a7234ddf53d4fd59c1db1947ca23b56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support testing of enums. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/env.dart"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff1d06bf133963d29f270b98315f7e21baafcdce8d69519d8d0b8cbf332653a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment repeated across 19 files: The identical TodoComment appears in 19 files (19 occurrences) \u2014 almost certainly one boilerplate line from a single migration or decision, not 19 independent debts. Fix the systemic cause once rather than file-by-file. Text: \u0022// TODO(johnniwinther): Should we avoid the unreachable error here?\u0022. Source code is not a task system: track the cleanup where tasks live. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/data/variable_pattern.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a2fb321435d85f6a9360563ed0a5c54f84525b6d57615742e5894b12179f3f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Room for improvement here. We could recognized the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/data/generic_sealed_class.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"791b39b892ba245fc8eb668c7df973529c6b029f23ca98efcfd70d5a4c28f2ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Room for improvement here. We could recognized the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/data/generic_sealed_class.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"52b458fae59983be13ca695e286acd6e5e2c28918829bdddec741fc7fd12f8c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Room for improvement here. We could recognized the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/data/generic_sealed_class.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"3179f17d09e35f1541a48d5de4f47e13bb1fa9689257352ed32e360febefc13b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Room for improvement here. We could recognized the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/data/generic_sealed_class.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5bd53535ddb6436e2799f3b8aef73ba0eea4f44a5374bf265de9b598a04e517"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Room for improvement here. We could recognized the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/data/generic_nested_sealed_classes.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b4b12b0fc9fd3b3802bf25a3ff7a0725fa8ea44c797cb5c9e7c4c209e7cd77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Room for improvement here. We could recognized the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/data/generic_nested_sealed_classes.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"0769e311c495e2ae9a624d435798bdca531b32ae739be67891d29e1d265ac15e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be exhaustive. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/data/generic_extension_members.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"39654a63d5a35edf3b5865e850798d64b30e1c3b128a56408959319c56b8c00c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be exhaustive. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/patterns/generic_extension_access.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb1707e4d3df06131d030a7261161f8eac1f0d5d5731f8c1d85eb6d9e120dbcf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be exhaustive. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/patterns/exhaustiveness/generic_extension_members.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a33db854f15c46a036d373c294aabb0caee86dceb40b2afa503475d9bb781ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure that the unreachable handles object field \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/exhaustiveness/data/dynamic_members.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"8109519434479da03d2d0357617d59c5ec86165bbccaca3119a8005704057dfb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): should promote \u0060x.sign\u0060 to \u0060int\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart"},"region":{"startLine":10954}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c17fb32b78cbfa0be42256f1a862a35e12401fc3b16f57c1b9757d0349e4ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): should promote \u0060x.sign\u0060 to \u0060int\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/flow_analysis/flow_analysis_test.dart"},"region":{"startLine":11172}}}],"partialFingerprints":{"codehealthFindingId/v1":"3267c0c92bd3f07e6f8a2b9c60c746366ab771cf6acd2584520590ebb4dc27a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): in principle we could promote x to Object. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/null_aware_assignment.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"474944188a37b954e1ef65e45fc8669b030c893151801e2233a345d5be10a6df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): we don\u0027t promote to num because it\u0027s not a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/null_aware_assignment.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"14eed6b8dfbcf50bf75417963acb3587f67de17fe35e0b1fa53d6a816b8ae43a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): we don\u0027t promote to Object because it\u0027s not a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/flow_analysis/type_promotion/data/null_aware_assignment.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9239de57eefbabb8ada0e172f3808c335a593530578828d3479ddf8d1ad4e64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): once we support adding \u0022why not promoted\u0022 information to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/flow_analysis/why_not_promoted/data/this.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"57d11a5903c94a04eea1f984aa78dcaf18a87a48765aeb89b0c8e6f073210a87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): once we support adding \u0022why not promoted\u0022 information to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/why_not_promoted/this_error_test.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"acfd517a1315edb8bc866ea69daf78beb4baeff6a4201e6ab924e45417465d3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45660): extendsNumArg\u003CNull\u003E(null); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/inference/inferred_type_arguments/data/function_invocation.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"04194679ddfa7500c124d140a7cf088c5609b50ccb486ea7de6602e8bcbfd3ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45660): extendsNumArg\u003CString\u003E(\u0022\u0022); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/inference/inferred_type_arguments/data/function_invocation.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"db18bdfeaa20a6a325e31ca0ac910abb67c3779f0f7ddc1a34f0a4de1e8332d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45660): extendsNumReturnArg(null); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/inference/inferred_type_arguments/data/function_invocation.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde8a82680564fcbcc74f9216d770b14aeaae5eb97ee78edb01015751e2e5d23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45660): extendsNumReturnArg(\u0022\u0022); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/inference/inferred_type_arguments/data/function_invocation.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b42869ea9139c0d084770527e918b5b18ee95259a8edad064bd7a368c267334"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45660): var extendsNumReturnArg2 = extendsNumReturnArg(\u0022\u0022); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/inference/inferred_type_arguments/data/function_invocation.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"28ab737c16d26f86a85bee323205a33d4d286ed0e2ee722e3ae8207bbdeab383"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Solve CFE / analyzer difference. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/inheritance/data/norm_supertypes.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"93f3455eeed1e935485b87058433c3c9f5ec1747c508bd2d25cef49c053f0aab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_fe_analyzer_shared/test/metadata/data/type/main.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2de85cc4a07f5ee65239e2229b5f395ab94884e937cb4e45a000868e36c9193"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rileyporter): Use ExternalName from CFE to exclude native tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"0824e0f20ea2432b632fa8c8ba4750625e9785c4baf411ef63f626b444014107"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(43530): Disallow having JS interop annotations on non-external \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb6e5318bd9ef2b011837853a53a12ebb0d32c750e53ccb29e05f5c70be3a262"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Helper functions are organized according to node types, but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f7b8143bbd526828beb44c2bb3993d960dc0f81ba4da52d72b393d8ace45d89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): These checks add value for our users, but unfortunately \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e7ce4c3db3b90ca10296521151c9b681edc2773d34323962946bb6ed345197"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Delete the check for patched member once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"a34284da6f9f320e84db649ce32f2904aa419de4234b2b4a2cb8d97029aa06f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We may want to support type parameters with primitive \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/js_interop_checks.dart"},"region":{"startLine":993}}}],"partialFingerprints":{"codehealthFindingId/v1":"483e650758f982abadd5a2a6f032d7ba7150edbcab3125ce8b052537f75b1d16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Theoretically, this should never be empty as there is a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/js_interop.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf23aa27f40be80264c0fb7d28c57127bcbc10c66b0049c9970b0976545ec5f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(srujzs): This does not take into account any scoping. This might mean \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/static_interop_mock_validator.dart"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"3574d0080707c203258eaca4d1c3e9230c230bb193b54dd753d1ffe051cd8d9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#63496): Handle FutureOr\u003CT\u003E return types"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac0c4b0c5247e00d440861785c539dcbf48abc817351fcadbbdb6d740e01f54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We can avoid creating a variable if the passed-in value is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e6981289d1d5ed9b67f73e8a7e662d82308dcc1e60d1cc8d5815dfcd797b4a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Change these to \u0060VariableDeclaration.forValue\u0060 once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"40c447cdf6721c27c9a45560c1cab89b0501b9fe397c7fafadff960a6c7b43dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Maybe use \u0060Array.isArray\u0060 for \u0060JSArray\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/shared_interop_transformer.dart"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d15973973b45414e0936d738e6bf67ad38d8946088b0c0a630520e0efd70aef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): It feels weird to have this be public, but it\u0027s weirder to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4de14f780544a88acbd039fd422a29e1e5a648cfddbf273c6378a6a437ef47a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Are there other annotations we want to preserve? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"f92e48a2b8c69ad022ee0ec58e201019ee5b4f6cf55ba650c919d51d846d1437"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Support more operators for overloading using some \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1881b8dc42991de55edb7b822d61afd3f4451fe6b6f5925149a0b59b6479e22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Delete the \u0060isPatchedMember\u0060 check once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"beb49e4edde0bb332e2a9179e40e44bbe3b0e3e505f8412976f141c30029c118"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rileyporter): Detect functions that have been wrapped at some point \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":1083}}}],"partialFingerprints":{"codehealthFindingId/v1":"14822a88a2c62bab1d5c3e13e9c84943127cd5bb39aa1af1d4b0741e891b3736"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We should check for type parameters and dynamic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/_js_interop_checks/lib/src/transformations/js_util_optimizer.dart"},"region":{"startLine":1109}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c7928c0e41fd0df8501d6d4dd500d977a2be16e9aef72b41409b4c187f45d8d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): revisit this once source change requests are implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/benchmark/integration/operation.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f099200c2e420c281496b7609a5da80f2167737b56998b610d5810d4ee4a569"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): replace this with code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/benchmark/integration/input_converter.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8450b4a79ec033a4b01bde703b8239ff3153c7175324841157854b06021b3e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): print warnings if driver caches are not empty. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/benchmark/integration/driver.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bdf0a8c7b59c561704fd7ce81d1d9288487e39cc2f361bc5eeadc80f9fa3c1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): This test fails intermittently on the bots; #33879."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/integration_test/analysis/package_root_test.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b2f48c9b8f1120c580cb7b44a8323c4dca99a9b8fbb82d63c13ddadbaa6af1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): will the element type \u0027CLASS_TYPE_ALIAS\u0027 ever appear as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/integration_test/analysis/navigation_test.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"6122b9ec55947c895693c04c2a4990fbcd47fced4254130fd93400002dc6fa58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): update expectations when formatter is complete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/integration_test/edit/format_test.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b704c4581d502d89edc6acca4f60bfe9ab96249d2e9a14481c3fa09d4023bcd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Support this for LSP-over-Legacy shared tests, possibly by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/integration_test/lsp/abstract_lsp_over_legacy.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f027cdd2038f5be127ea99aa71a889d52297321ebc37ae81e9358e639e4c24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Log/fail tests... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/integration_test/lsp_server/integration_tests.dart"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4213f65ab19045339617f5be1a76e24f2a29e0cb648fc99aaa29649926fbadd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): verify that if an invalid service is specified, the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/integration_test/server/set_subscriptions_invalid_service_test.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"261143c809efe2a6adab1a14929a3eb3704777cc5fb35bdcd335014d8561bf5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): expose the corresponding feature from ExecutableElement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/plugin/protocol/protocol_dart.dart"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"7298ed8478183963441e78535111ccba596fc54abe915bce2bc2ae21e6073016"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): expose the corresponding feature from ExecutableElement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"4055e5283f658b37d7b938bed759e07d3489063dd9ac9f024bdf98796157c0d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): requestParameters might need to be required. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/request_handler_mixin.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"682ee23faf92ea8870e37dcb980cd0d9c1ce40afbfa2028fd0be1b1aee2e3194"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report the error to the plugin manager. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/request_handler_mixin.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"47260b8244fd8d56b10db0b03094ad3d5d116a945936e9bbe9326eb8873e6d06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report the timeout to the plugin manager. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/request_handler_mixin.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"508112fb79ccae58076e8a28932cb4c884ce8fced477a734754839fa9f3606d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report the exception to the plugin manager. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/request_handler_mixin.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ab300baf4228d671df31a491e65c3a7576f7bab7ecb99ea770ee9ec91120635"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Remove it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/protocol_server.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"defe08b8c91d69ebf89039ec19f7e2f2b427ec46d9f132db57a0d89d90b8e538"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Do we need to alter this to account for plugin status? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"d267b0c1436aeb957baac23cc0b24f7952292c8ff159f25ff1663d4b7e8af870"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement complete projects/contexts semantics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":985}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d58f0f320b673e2d8e2eabde073d7d29eca4ef4a6ae985554c00d0a3008355e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement other cases \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":1200}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaa918c48a15c27c6e095ba92a7287b997fde082dc2d58385f34e1ef22f3dd43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement for the new analysis driver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"62b9dff58f60dfc92e6a1473e5b933b4146ab2e49f63830f24d9b492496fa69a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Consider replacing this with full priority based scheduler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"200295ef72204ec91b15f3897c54836586a86e05f9e5c7cd0616853b105a53e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Alternatively, if code completion work in a way that does \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/legacy_analysis_server.dart"},"region":{"startLine":1491}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5db2031b81b68d7aa2d250f78178d95f4c17cf0beb0a4f48acfbe002c0ec30d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): See #31456 for the tracking issue to remove this flag."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/domain_analysis_flags.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"01df272d3af411f60e7a823d33735ef8cda21fbd07fa6fda437a15a459a6d783"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(michalt): This is a temporary flag that we use to disable this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8de5cf5edca73c7f3024539133a840296c57cbbb515a916ed955789ad3744d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this interface, and instead have [ContextManager] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"550b6d5feb42d4ec37208c226598bdc35517bcb20c8ca493142a5f2acf66df68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Just pass results in here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc7fb82c5d0897a3731842991853622c168ee429b79c4eaf2398af9d90524aad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): It would be nice to prefer reporting the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa94168d551fbd0e4f183dc8a91a826b365642fc6550367d10cc119adccf682a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mfairhurst): Optimize this, or perhaps be less complete. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/context_manager.dart"},"region":{"startLine":1039}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1583ccd36b9ff645f9b3a49eeeba5df7bf1d2a8b8e4da7347ee20f924d5e8b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This is currently gated on an LSP flag and should just \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c6994ca8cd41a41b429b00f6ab1fa06deccb13c040cf050ded6bffb69c0fccc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec6c9d46c6dbef3cd60f31a8620abf5f9f9c943ee5d65b884018269940de13a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/context/source.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"edde1441b0898a1db152c57bc5e9b07274cb10fff95387cfba5bbad833c971a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/context/source.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"55dd30f304f294fb32f967be88c0ae17cb132b82099699cfeeb5fab99ca9d12d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/context/source.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f3346419869f6f4a392bca7f080ea031c39fba439d3261f117281e01ba06c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/utilities.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"9899727b44e0b9f235d77ac25f4d1f08cca802a018b1a7db8ae8b432556ca5f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/utilities.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ce5d9267e7d0bc4906fdb2fca43abe74e8d52f3cc90e6ff159b18c6d8b643a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/utilities.dart"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"7244a381c4615d236b4ce5f36a14be38612368eca1af38c8bb257a90ac9a9761"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/utilities.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"202fa184f25b08eb8676a6fcd1a5c076f371112880286503c48d3fcd435a281e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"03640197b99768f4fa5b8c78cfe227f9eecb85b40c4ed4c5f80b0983e95054d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce2e4110da61b7c0e48ebbfdb530757b9b909bad6adbc45794b0ba3943361500"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39284): should this exception be silent? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"e879d5ddfb97a9de36485dd6c3126fb59bc0d3b5cd83cd9dc6e9356c0bbfcced"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Prevent this method from locking responses from the client \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analysis_server.dart"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"55482a1bffa5f9c9061353f4fc0905dc4c6c31939282202fb0a6c50d4e4a4924"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We don\u0027t appear to have an event defined that we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/analytics/analytics_manager.dart"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe2c672f643822e2081658e3852b9d3596b725a3ad619df9afbfbaed2a06fa28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Provide a deprecation message, or remove. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/rename.dart"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"384214ce26d13693b6f44936424d33d94075076a5fb4ab8ce9c5622d26d07d57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Provide a deprecation message, or remove. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/rename.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"e180e7ccea9fa8c69096bcc3b9b06701afaeba813683cd2e5318254271170768"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This looks not ideal - we should suggest getters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/local_library_contributor.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c394950befecaf334e2d6eb754df50c126f950cd438f4f6dd07bf4f9ca96a80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Implement show / hide combinators. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/completion.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"a867760d11c8c228985a1dfc0a7402de87fcdc16cfa6722a262cfffb4cf96b58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Implement prefixes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/cider/completion.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"5543d9a2e206eb735507226d2309a8d51e7684cdb156856809564f5ac7bb0185"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add the names in alphabetic order. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/import_elements_computer.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fc535555834404794a7673519d1450530c878f710db8ba1c1c5e06437dd5dcc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Insert after any non-doc comments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/import_elements_computer.dart"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"18e89da302788b39b5ee7f785ab72461205fa51c806ee4f0723c6fb5a422cd4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Fix this to find the right location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/import_elements_computer.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4e040a7f7cdf0494557f8614d78dd480874a8cc4fd0a9c80ed6e2c0ce7b836"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Update the interface to expose the token. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":884}}}],"partialFingerprints":{"codehealthFindingId/v1":"db555f0a2a1d27e5c291ab870f1a9098238ae2d3fcc629583a8ede935aad0a2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Update the interface to expose the token. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":1161}}}],"partialFingerprints":{"codehealthFindingId/v1":"48b033a52511c02784e3767efcbb93ec494610444bbed0b7c5dd1b13a70aea74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): The \u0060ConstructorName\u0060 in a tear-off always has a name, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":977}}}],"partialFingerprints":{"codehealthFindingId/v1":"67049d262d27aa9e78a0ae5b54c7c76567d9d35fa573196b0d9047d0772de316"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Uncomment the following lines when the token is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"32b14442aed443cd8a05efa94f1a224ab528a021bb84b6627a7afbe1b2369f4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add a highlight region for set literals. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_highlights.dart"},"region":{"startLine":1742}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca771e279be329ced515fdfa4271e0be4c52c1c58595cb2c1972d49663af961c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This used to use the compilation unit as a container \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_call_hierarchy.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"d903505b6d8d84ce2bb45eda6e4124777914e24e53b54476977a9d0484011093"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out why that\u0027s no longer true and possibly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/computer/computer_call_hierarchy.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f95befe4737ef8b849ee74b4ea05dc872ceeed17141f58af83f45e370868ce3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Re-enable this functionality after implementing a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/execution_get_suggestions.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4bf613b26fb57a99347a1adc424d8e21834aeba6ffb194a2790902c751564fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): package:analyzer results are specific to *.dart files and we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8fe6b71dea0aa37dcfb4b1c7f7c90473d9098022ab5d850741df98bdd2a5798"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Move this to a superclass when \u0060edit.format\u0060 is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_format_if_enabled.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"9da5a9ef24dac73dfdd849d169788bcb9684c4ab3fdf6c59f0bfb7254a252a72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider using createFormatter() which takes a result and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_format_if_enabled.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"98809c6c9535bc8ea2c864015152dc887c57aefb05e7c158fe9ecba0e6331455"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Replace full replacements with smaller, more \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_format_if_enabled.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"89f4a377dd70d836f780bed06a5ae647f6d0fc86b978686714a7eef1cf9e38ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider optimizing this file (re)creation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_format_if_enabled.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"0090b7181b8fbe0373a4db6a3bb80d767f617ed044e3a9b49be08ca5b171d98a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): replace full replacements with smaller, more targeted edits \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_format.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6af394f3ebbc838f09cde3206d42131a4dc16f97d6011f149e40ad7d1cca490"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Move exception handling outside [handle]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/edit_bulk_fixes.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"74952a229c6479b961c88c406e07a53f3508cb961719a9a6c630389b6340fad2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Correctly set the kind of suggestion in cases \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/handler/legacy/completion_utils.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcba045ba0fe856e45bf6bea3c764257e178ff783291967872d5a062e86ae547"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Correctly set the kind of suggestion in cases \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/candidate_suggestion.dart"},"region":{"startLine":1778}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0afcb457bb6731b7dbec8af9a98e8bff21be870aa4a325dc3b992a8e0277077"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Add something to indicate support for connectToDtd here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/server_capabilities_computer.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"93517a113db694fdb51dd4dd88457e7d20d6972826260ff082b3cf7e8f9ea259"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Add support for cancellable progress notifications. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/progress.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"109cfd2b6cb2280d9feb5de3007387c67b6f62b673ab540c471ebaebe2fa0efa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): implement sendHighlightRegions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/notification_manager.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1598024928bbf4e0d886fd00aafd250631723078ba4f89cfc83ef5033b0e888"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/notification_manager.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd60942897e1f78b6a5e3266b169b34829049880acb817fc37c7a906956a619e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9dd1d27cab8d4cf691097cdff81080bb4179b9431f868bae47193b87bce3647"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): implement sendPluginErrorNotification \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/notification_manager.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"85cc4f27a64318f79c5453d6bc4a082da0c655cce8a11886a6d01aca98dfebbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This method (and much other code here) should be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/mapping.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4d8b0f1ba9682ead70baef54c66d2a9d782c613aa4a18eb837d0089c8bccacd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This null assertion is not sound and can lead to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/mapping.dart"},"region":{"startLine":848}}}],"partialFingerprints":{"codehealthFindingId/v1":"b27e361b4f173956b4ced8c9b7ea031767260139b7fa4010f17bf0abd2a418ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Switch to using line/col information from the context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/mapping.dart"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"67ab655193ec9e3dd368074ec77ade5b99016aa523c2657f7736d683cf8563dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider if we can rank these better. Client-side \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/mapping.dart"},"region":{"startLine":1105}}}],"partialFingerprints":{"codehealthFindingId/v1":"9878400f42c00ce532751f40fc8f98cf76d233cfdf8e4dff7970d8f063ee2bf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider including more of these raw fields in the original \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/mapping.dart"},"region":{"startLine":1282}}}],"partialFingerprints":{"codehealthFindingId/v1":"00490bd7ec94fc7a0ee0f05636df090cd9e129da8d7a65a35e136cbe850d4e22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider including more of these raw fields in the original \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/completion_utils.dart"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"e21646851e21d905a5575255d0b4ecec639baa1212020a641bfaf2dae3277ec7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Is there any way to validate the character? We could ensure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/mapping.dart"},"region":{"startLine":1595}}}],"partialFingerprints":{"codehealthFindingId/v1":"674e77a2f1f446400773029ebdea63eb536abaef6d89202eb66db3acbc173f95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Perform \u0022on idle\u0022 tasks (Legacy server has \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b99942f6a4ae8515437f7082e417fc6259080e7fb2fd374a3edaa5d8ecb3ccf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider supporting per-workspace config by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d7db924f19f86bcd2164deb959b507320ad497c8795ef0ad2651b23c55215bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this custom notification (and related classes) when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart"},"region":{"startLine":846}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b87edb92a1563f0b759fdae843dbc670a23a8f64e9c1dfb69c5358ed052f03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This is currently case-sensitive! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"75b9426779f14a9cc194d0a9b4c67a882b0cbdbb8ac4b8340c06feca796b859f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): These command IDs are globally registered in the editor so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/constants.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"a07c230918b5850d1d1b222933fbe07f308dca77d147a2be89377f91b1d5f2cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove custom AnalyzerStatus status method soon as no clients \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/constants.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d535f4a04f9330dce179f01a03daf84a7350c9a1cc7ff3a9842dfcf4395629a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Once this PR is merged into LSP and released, regenerated the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/constants.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f9cc62981abad993b28b6d9d88e992d1f4e40c3e57d7c4258932526c81e26ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove these in favour of CodeActionKind.RefactorXXX once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/constants.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"39d6a7954c3ac178ec8276afcf746433d45dba61c5555c325ecebd2049938100"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Move over completions for plugins and snippets to use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/completion_utils.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"0273d92f5b055722a8d66a1dc1be89bb341b271aac4b148cb1d80a08a100b0d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): When IntelliJ switches to full LSP, ensure that it supports \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/client_capabilities.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cf38730a634ab41e47b97fafae7c303d724c4b683e20a33b567992d49e5bf48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Now this is used outside of handlers, is there somewhere \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handlers.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d07d125081e0342b531bb0602eaefc978b2a73822e5d04a0ad9167626367d92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Merge this into HandlerHelperMixin by converting to methods \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handlers.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7ead044e850977fa1f1dc1eded1029d3f8d092e95430b5bafea88e4808508e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider a version of this that has a non-nullable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handlers.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c441e1685c157fe4ea3f5c0d07fe5421f8c25752c4fcb82b8fd3624a69f0b89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): The spec has been updated to allow empty queries. Clients \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_workspace_symbols.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c0d3b2a9193ddf385929913b62712e26933631d5addc751227414fb286e4154"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider returning all fragments for the type instead \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_type_definition.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c184823606c65d7e5dc2d1729bcf83c67c46f498e46daf89c242b3cecefdb8e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Check whether LSP\u0027s annotated edits would allow us to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_rename.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"be728e56413ed2a84663cff35045c66af2e8fe339960eca7239b7cb486788f5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Pass \u0060fuzzy\u0060 into here so we can filter snippets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"e251ecbf1b194891386f4238480ced42f88d779a14f6fdd5780198f9433a3ecf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Support this (via createCodeActionLiteralOrApplyCommand) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/pubspec.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"98dadd32790ec61607a95ab96e16a6cf2284aea31514cf84508dda228f9e8f48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Support this (via createCodeActionLiteralOrApplyCommand) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/plugins.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"d46c85d86ecbbc535c06f097a63265e00da059e7ceb87a28308c5893f9ac70c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Support this (via createCodeActionLiteralOrApplyCommand) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/plugins.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca4e3e2c6a780e68cfe98db9f119d77d232b43cf9be729d2dd8a437a7785026c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Support this (via createCodeActionLiteralOrApplyCommand) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/analysis_options.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"04dcfa676357f3434fa4b1f977e7774e801f696f538d7e1f601f3440226c0cc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Find a way to filter these earlier, so we don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/pubspec.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"2217b67015c8d8d4400dad314bddacb830b453ab415da0ea7c7ba7643c7c85b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Find a way to filter these earlier, so we don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/plugins.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f44a9420ea445ca874b5131e8aa7a12e4e275142c2180a4a09dade05db0f300"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Find a way to filter these earlier, so we don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/plugins.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"943b0e94a2242a65847d80d309306b0793add2edc92d457ff9ee113fff4d358b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Find a way to filter these earlier, so we don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/dart.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"db3a624e6394dbeb78e7fbb59d59455821d38047e44fce0095b76374a9b79d28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Find a way to filter these earlier, so we don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/dart.dart"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db7e4532f16178d609a0b97bd11119a9f67c4109a56b4f64176951439fa1e9f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Find a way to filter these earlier, so we don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/analysis_options.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d102073630dc4b5686c7a63974d852a5276c42592c6867405f04ca825b9099"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Change this to a single entry that is a Map once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/dart.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8dc0e4561ed3fb26b9bc5beeef3f482f12bd22657d241c9a2f9a532f83d3dc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Determine if we need to provide both editor\u002Bcaller \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/dart.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"17c5dea4f426af738b405ccc48f54e8680fcad0a6b110f97560a99c36ce5884a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): can we do better? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/code_action_computer.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa3e604ab6d2573d1965a599259027a369e19f3b71aa04d2a97c60d8f7bc079"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): can we do better? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/code_action_computer.dart"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"2339b4da3b7f5c8fd5aaf3e843cad65b9cd104e60bc578d4bdaf36435fcdb2ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): can we do better? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/code_actions/code_action_computer.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"851ee53e7951779bd08fbab1f02673fc56f2870f656dc6e37a60d2ff0c9ee6c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): We should migrate this to URIs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/commands/abstract_refactor.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bcb95a7bfbd1a4e990d06c0640e79e30638fc30361a187ae5f4d69ace490518"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Determine which parameters we don\u0027t include (such as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_editable_arguments.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc6b57d725a8ebde18a322f95d50ba4e3f9b0c0632a09e53229825bfae2b216b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Should we accept arbitrary strings for all values? For \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/editable_arguments/handler_edit_argument.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"37247f577c49e30c5d7218a68768be34d5384087b9330204c7b51b6ca12540d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Allow the user to choose which clean up fixes to apply. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/migration/migration_runner.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a80a223514cdef58fc9973e38a30a81df37465669acbf03d4f68dfbad405354"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Use an IterativeBulkFixProcessor to loop until code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/migration/migration_runner.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d9412d325c865cd7a8b1bd9d2d634507a3e5455fdd20beace6a7de17915b0b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Check for and report unfixed preparatory step \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/lsp/handlers/custom/migration/migration_runner.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4594dc4d878a39a86459ff8323818b6997d3a5664d194618c7e180d0687e8a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider merging duplicate errors (same code, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"846522f38374c0bd69544acba8574ca7e9c7eda37a83b9b7fb3393fce0d82b5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Decide how to handle this more gracefully. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"c04c9a5f65410aabaf3fc7ca7a58e4e4d67c230957cfacb70244a35cfe516e7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This doesn\u0027t ensure that the covering data is in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"311ccae0bcf31356bbbe9756a0c4e52d4e78e90948199364d1199b987c19bcb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This doesn\u0027t allow plugins to add parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"39831b6cd5b7bdf0feda0f299e798f74a70d3d394c341a0e7a56d3019d4b023c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This doesn\u0027t check for duplicate offsets. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/result_merger.dart"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"b275d8ac8c24e8a3c5b007210bdaac6e7ab8c5032c7350ab5dcb9b6395e9cb0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Do we need to wait for the plugin to be added? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_watcher.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf44fa71d60002659fc124aea76315b9fd7aefe72cbe19175e486fb4a3ce2c17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Better to name the folder based on a hash of the... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_watcher.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f1f2f4ea823d323ea1b2a67396a4e0052b724670f824d16ebde41cb1dacc3fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Debug for https://github.com/dart-lang/sdk/issues/35226"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_watcher.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"67d07c8456bba89cc90575d6852f31ce81824f162e75d531ac54b6cd4ec075b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Also print to stdout if this is \u0060dart analyze\u0060 or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_isolate.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"acefbb12b37190eeadc28422c914011e66f5351fb1173a694cf1dd1527ec19a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Return a \u0060PluginDetailsResult\u0060 with a specific error? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_isolate.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"b914b1f31ee6db55fc86611b0f1f11ce696bb5e41bbaa9cbd503e29f529b45b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out when to invoke this method in order to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_isolate.dart"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cc63ac0829487284920f20213aeea81cbbc72e53fc921a1196984d40d954ccd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Determine if await is necessary, if so, change the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/plugin_isolate.dart"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"9170de006c2be09e20832caccb22c9baafeb4a368e00207ad91b1c66dea437b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Determine if await is necessary, if so, change the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"c069fac9ac8acd8fd2e6f1f5e2fc0cc77add65d5b32d79d95a614e752fdd4803"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider the possibility of not passing the predicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/notification_manager.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"0af002e2fb47c8a7149f43d95fe9bdaac57d562a3e0f619ba32ea1760237e6fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Return false if error notifications are globally \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/notification_manager.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"06018b4be78f50c2c27d3abd1a6daabb081448301ad012288fd42588c5a2e818"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): There is no indication for the client as to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin/notification_manager.dart"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee06f5cf4631a7f1c7a321a44678b498aa45aeead40e0373526ee6595f913561"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Format with the formatter, for readability. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/plugin2/generator.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"549c6d5dc88d1659fc2a382f5f98736dc10d6a5961d53f217db056ddc0e06589"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Record [processingDuration]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/scheduler_tracking_listener.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d343a6d9a12ff5c248d1d99b021c1f93c2e0c2754662ec806511357183c7bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider tracking the pause start time if newPauseCount=1. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/scheduler_tracking_listener.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"95f182fee2698147524a62fe2dc281598b95efc2d82ea7834652fdb3669746f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider recording the pause duration if newPauseCount=0. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/scheduler_tracking_listener.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"2723b8a9d389d1c7295f94e2f0b8f25484a813a99daa89b2198f808aa6e4c5f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Record [idleDuration]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/scheduler_tracking_listener.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ba32b243ab57511db57a6f2faf5ac73205c9184b39053d9df155b0b6470755"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Determine why it isn\u0027t appropriate to also \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/message_scheduler.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd52d15d8709c1a1d54aefe693840b1e07563586307b1e23fdf80bef2309b1e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): if not awaited, consider adding a \u0060then\u0060 so we can track \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/message_scheduler.dart"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"4846ac6a8eadaa7d06b5de0eff1df7e66ec35e2c34b9b2e8c4b6838905761298"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): extract method in AbstractRefactorCommandHandler \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/scheduler/message_scheduler.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"4057b722ef14cd9bb82ac0a872ea858720784e8725099baa4bff6b8b207007e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mfairhurst): Use the outermost exception once crash reporting is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/error_notifier.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d7a543feaf68fd2e983c17b4aa9813728abd7626637c0e095a702eec4afb967"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mfairhurst): Use the outermost message rather than the innermost \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/error_notifier.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd72c0d762a29e7117fe0c26cea8ab533d7d348034261ca3910f6b31c809119"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): It would be nice to avoid creating an SDK that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4701099a5c62e7c26b8bab425d123c8ce8d3c650b35010a5bbf358a9dcf09be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Pass the following value to the server and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"8780297255df3873fc6b4df950ac1c3d83d761a49f686fb3e845122cffa5ce0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Find out whether there\u0027s a way to get the channel \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"a616f899354eb0812c67b8125986a5ed9598be292bed6b0ae5660f3c4a20ef40"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jcollins-g): Pipeline option through and apply to all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/server/driver.dart"},"region":{"startLine":960}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8840f29ed01874301777623d192e832ee79ccbdcbed9bb5078bb311d3ddd315"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): fix to use getDefaultStringParameterValue() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/utilities.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"e673b99cff7ad57138aa6e8c929418df0dc05c91cdef485b2a6e14eceeb0a75d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): use lineInfo to determine startLine and startColumn \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/utilities.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"590f6246f9b396e7d54ac67679bea6b50ac637cf5d26184b061d45bc98b739aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): Support having this method return text with newlines. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/utilities.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a389ee28e183bd39f11167010da3e69468946f1df7443546c8fc433dd82859"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Attempt to convert the contributors so that a single \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce73474911a0744e253c4b61f8fd68c15a6f7971c0a4b74a7fa37010c3aa5baa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out why we\u0027re excluding labels consisting of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7439d9fedea84ee188672ca49b1a3791fc200391befbed4337c1511ad5b5061"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This might want to use the context type rather than \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"e541f678d67bd893ebc718b74129e86a3f3068db619c55791a6826b2f854c288"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Refactor callers so that we\u0027re passing in the type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"95bed53ce39df990c2af8aab56da07132bbcb37948e55496783ccd9646e9c2c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Explore whether there are any features of the name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":700}}}],"partialFingerprints":{"codehealthFindingId/v1":"60ed5237f6e45d8daea5a5c7cef4f7e5bee989ac389aa8d10fb52a343ed435eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If we are in a constant context it would be nice \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":876}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d0b04cd97423122b7b33003f039b4b2014caee962ddbd1606c50c6ab45596e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add some specific tests of shadowing behavior. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":1296}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b6bdf46a52ed0a031558143855b6e76e9fc520aadcdfea3a2f3bba58586e9b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement better key for not-yet-imported \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart"},"region":{"startLine":1684}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3ca3752f1e89d0dab387e21168eaa2f27c526c71df10f331dff00a00276bd7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We are assuming that the enum constant is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/relevance_computer.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"a88c3b6a050556a64939d4109863acb82bc297c049f7aa53d10b2a49565dffc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): The old relevance computation used a signal based \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/relevance_computer.dart"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a33c7f2cd0621d9754128f8e659e619e86d27eb39ae577a680591c6cd6ceacb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): The old relevance computation used a signal based \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/relevance_computer.dart"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"291d02dbb920fb9cb788a7776c7a865c1966d99d066e57766936b5a1e401e321"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): When the user is typing the name of an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/override_helper.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b56dd29da4eebecb8c959bcece316c3acadde11e8912b987fa0cbeb545d8dd4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Determine whether we need the element parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/not_imported_completion_pass.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"e21519b8a482b7703a99551d85e13a9457126df737e94ab33b4b72cf4d432cc3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider determining whether there is a comma before \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"58052ad7158f5b4f24207ad30fa8c9520e0e73206009df74709a07582adc4754"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider replacing the lines above with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f50848d3b5d7ca11677a0d0c7836f0e7648f8d1f93a8e6c7cd195860e310ad8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Use this method in place of \u0060addExpressionKeywords\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"7446a709fcb91ac23cb47f75d09fd38cb4732ff3cbd60bb32af58a2453c1df18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If we had both the directives before and after the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"a418836e5c3624c597659f2c8ea214fe3fb929dd998697a4bb6307dd7cb80609"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We should probably not suggest types if \u0060var\u0060 is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"9377a4e255ecec14e8ee274c5acf0f6a3cfe252607270edc1d16c122ce70409a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): update the visitor properly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba34f3caee683d9cfee08a251d18c4134f11050f752d982815f495515fa6e206"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider passing the context type to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"33ff8217e352f1f3db6b07ba73aaa80cfd7f7a289273f4f498532f5d289e738a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider moving most of this method (and some of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff4f0c5f66e42555f0c16acc363f41afe5081e0b66bb3412b91eee322a371d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Determine if the parameter type has a constant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"7392315e62d398bfd28cf8c4acc8377a3de93eeb487841d0d95db4f4538addaf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Determine if the parameter type has a constant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2304}}}],"partialFingerprints":{"codehealthFindingId/v1":"2943acb9885ca54e0b103020cb9005b140db8c1edf58ec8a70f448e8fa8ef6a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Determine if the parameter type has a constant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":3146}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9d944ecf1476e16583a5b972bcc788a3737c234f227d17ac083be1921149ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): [argumentsBeforeAndAfterOffset] should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c9dde153d6357057d157bf69b3d512e228bc64c2e7ca104f4237abcd2d674a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Decide whether we should do more to ensure that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9187fc3dbda47b8f1f0730e3de13edfc276784fab5245c7bdd5d09702feaa30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider proposing a closure when the left-hand \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"032dee2195360d5d952798a36359b1f8226badc0d5a54ed1d707bf9ac386e9cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding \u0060on ^ {}\u0060, \u0060catch (e) {^}\u0060, and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":569}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fcfc37024edf83b83d2d245f560d4f73b6d7ab2d77cd3878ce4b378bb9667b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): The cursor might be before an annotation, in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9fb4ab5a5d9ef8a4d0974af1b8e1e088132b86fd9e71a1c4b3dd3051bf0a575"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding a location for the condition. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"fff97962dd31a58e80b81fb9ecec7407c7faa2ecba80ac25ea885c51b62cb644"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If the cursor is in the expression, consider \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e28a36776a81e3f6ed4398b6c645095d76733a48923b217fecfecbe5248547b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Suggest members of the identifier\u0027s type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1252}}}],"partialFingerprints":{"codehealthFindingId/v1":"32a6c21fb31a8f4f165398d68950b7997c6ddabf00a382610565970ca8e4b667"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding both an \u0060on\u0060 keyword and a body \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f309af677190d377ec316fa692e4486e5e635c5f6d38479fd3c188a73c29c2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding both an \u0060on\u0060 keyword and a body \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1312}}}],"partialFingerprints":{"codehealthFindingId/v1":"002aa81be87f7b1b97c0da8d55dda91fd60fe0f0b097a2983ed2c19bf27a42bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add support for the failing test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1425}}}],"partialFingerprints":{"codehealthFindingId/v1":"23f897885901265d8f466f4abe6e97dda42347d3125d8bc62b85ffe4b30ddf25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): \u0060var\u0060 should only be suggested if neither \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1438}}}],"partialFingerprints":{"codehealthFindingId/v1":"921da6dcd7237b5b4e2d6538ac0f264c4cdb96bd69276b042df2d029c0de60b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Rename the completion location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1494}}}],"partialFingerprints":{"codehealthFindingId/v1":"47b6112045eb573383b54aaa4c1ee31adba57bac7289f789b724f2d135c97912"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1628}}}],"partialFingerprints":{"codehealthFindingId/v1":"0417048db317147caaede60f253f9224124d7dfb1f86335fc9bfeca83418b21b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1659}}}],"partialFingerprints":{"codehealthFindingId/v1":"41ba8580f2cc84260e6c121f774c302c30a81a05a5e537595f2b17ab293a939d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":2019}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbc877cd7560d7bfc843a4bc568ff074a65bec94ffe1481e53dfa7a1cca69423"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/server_driver.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"441bbfb4f5135e72081324179be4e552998973b86f9be04453c5da14a79df49c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/file_system/overlay_file_system_test.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c7ab5bc70972ac467186ec2cb76fa0ed9d775754f2d3b148ea03a0a7a31f1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/file_system/overlay_file_system_test.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"31908c7633d58c39ab45cd7c5d8e5a0af708a4ae4002e21bcc4b2f3de2542d75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/file_system/overlay_file_system_test.dart"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"b095e95717172312e1dbe221da79c0bd9d4f2f30afe233401eed9102823e7b59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/file_system/file_system_test_support.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e173ae5fa4aae5b80e27903e8e1ed9f78f3e0f74426ec1aeed57467f7d87ff1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/file_system/file_system_test_support.dart"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdcc0bb97676d32be58fcd031a1c3265b1ff361bdaf52d3c678f8393c3c1294b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/integration/support/integration_tests.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"57f69e48669cc70a0fb32b9aa0af680530ed5dda0de9523f197d5c8a2aa27408"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/integration/support/integration_tests.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4bf4a29f93ac79cead27dc0656a0eee35ae2d20071a821c18f8cb693ae0cd15"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out whether the next line should be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1778}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e03d6d83cfac51494a84164342026ae557e5bd032a199ef14042e9463dc1a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Ensure that we are suggesting \u0060else\u0060 after the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":1805}}}],"partialFingerprints":{"codehealthFindingId/v1":"c220b844fe70c68384ce2e4136e8102d39ac8e4d525c7ef15c6e7e71eff990e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Also check for more cases, RHS of assignment operator, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2133}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4880cc7bba7efab2909c5fe61c6a685ada075405a16ef1f07d057bd169f9b85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider enabling the generation of overrides in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2221}}}],"partialFingerprints":{"codehealthFindingId/v1":"108ad414415d260bb44daaca97b29c7e9ee792ef165879ea9f903926d029f170"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If we know the expected record type, add the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2457}}}],"partialFingerprints":{"codehealthFindingId/v1":"8249a561ec5af4193f4da7a25bfa4b6ee0bbed035c0ddf2748b3d9af158e1f42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Is there a reason we aren\u0027t suggesting \u0027void\u0027? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2793}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ba09aafb5686ba6000f2d6d2d80f24e761b93615fdb9a904c02943d6ba2357f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If the period is \u0060null\u0060 we might want to complete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":2879}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ab8382053acce2906f69c774872c50ab09d53ba4cf5fd9b086f5c40d6f7ceb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If the period is \u0060null\u0060 we might want to complete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":3070}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5a00fb4deaf2b8ec0af290619755d5e7170ffc46700b1656cb5fd03ef6d6452"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Consider the type of the collection to further \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":3766}}}],"partialFingerprints":{"codehealthFindingId/v1":"045712d6e91d21110aef93bb0d83c02812bacf50d7f0ae2072c1f60a80fdc649"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove the following line. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":3997}}}],"partialFingerprints":{"codehealthFindingId/v1":"808ff9c793717b8d77b885479d92a4bd549fadb05d2dd84b479e05520d5d9afe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add support for other kinds of declarations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4029}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4c6ead6f117f2a26d7b1eba6a29e91aff8cdc250333fcb1f4652318c72e6b2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add support for other kinds of declarations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4322}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5462c44c3b6018e8443540b0c17fb28c0e3709b514aa0df347dff22bb6e63d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle the case of static member accesses. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4054}}}],"partialFingerprints":{"codehealthFindingId/v1":"186fcdc9b9211f0aa28e46e3ea098791ac25518734feeea49ad48dc6b8084f88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Actually we need constructors, but only const. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4141}}}],"partialFingerprints":{"codehealthFindingId/v1":"5136922d5f9e5a1616dd888ba867c7ef135be930165d48cf7cfb519b14655ba1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Suggest the types available in the current scope. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4306}}}],"partialFingerprints":{"codehealthFindingId/v1":"79da0f32b5f011b9079cbdf7c39c5dd7fb4f37d4265f222b59ae90f74facb025"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This location is bogus, but it\u0027s what OpType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4325}}}],"partialFingerprints":{"codehealthFindingId/v1":"4da81c5ef03a2bfb3ae4a054f858d33b20152bb36a33971e55d5521984633f0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This location is bogus, but it\u0027s what OpType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4342}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a08ca395aef926595085c4c1f0bf1318df02959ea1a3ce85b3fef9c31c6b8bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This location is bogus, but it\u0027s what OpType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4350}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1e7dd057a0e16d93a6aa4e6a52bc51bae9b08e853bd84fd4e14d063002c9ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Enable this case for better relevance. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart"},"region":{"startLine":4449}}}],"partialFingerprints":{"codehealthFindingId/v1":"00a22dd4823eef817baa64dec89b433f2e83580a1d5a99fa07ab0d6b424e3069"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/48965"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ef9b11da4fcb8f3b06fb22eb4ba959494bd6e898fd85ddc1d3e3c4c43204cd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Replace with \u0060patternTypeSchema\u0060 (on AST) where \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/feature_computer.dart"},"region":{"startLine":1334}}}],"partialFingerprints":{"codehealthFindingId/v1":"af13247a6c282bf4bc20022e647e0e8ae79c42b4730305590acbcb616aefbb30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This will create suggestions for elements that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1037}}}],"partialFingerprints":{"codehealthFindingId/v1":"070a8715073cb53c33483e38431da1f9a985ca7d9800269954b59fcdcf8cb8e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should suggest extensions that have static \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":1721}}}],"partialFingerprints":{"codehealthFindingId/v1":"24779c3fa6ea6b2a207ed60645066ac6f02083ec7b97bb71ab6b9a819aa02775"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Compute the completion string. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":2132}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f5bac4ee235c2940071e6885bb44f005fc0a6c1e1c6af1172f97ed8724e8ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): I think we need to compare to the end of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/declaration_helper.dart"},"region":{"startLine":3134}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ee801708c2add7dce09d89379e40815778048c846769d62f994220dbb1ad5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Move to \u0027package:analysis_server/src/utilities/extensions/ast.dart\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/completion_state.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"22001766d0f1c0e29284244b4725ebfa6e081a68ab174fbb424ed5cfb3286c40"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): move deduplication logic from \u0060suggestFromCandidates\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1058a0e2be4eb4744e0fc186132cc636aab9db5b556800aa65d2139868a6b6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Can we make it better? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/completion_manager.dart"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"0483e5773f9d729fb16531744e7fbd575447a6c8c99d0d8b32ac3feda3737185"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Wrong, if no name, should be no completion. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/candidate_suggestion.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f99951968de03c94413fa5690929f6036ab62050cc373147d158ceafd4c43fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): revisit this special casing; likely it can be generalized away. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/candidate_suggestion.dart"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a0ba2461542245d96f7048b170aa1ec0dbf140f8c346f58a9f67daf1160097"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): Should we remove the check here? We would then \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/candidate_suggestion.dart"},"region":{"startLine":1020}}}],"partialFingerprints":{"codehealthFindingId/v1":"e46e0faf005a9ae51ad44ced4172d7ce647a48d000d3963214583ddfde693ec9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Move these to \u0060SuggestionBuilder\u0060, possibly as part \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/dart/candidate_suggestion.dart"},"region":{"startLine":1707}}}],"partialFingerprints":{"codehealthFindingId/v1":"87af7d98e066b167f8e5098b10fa9eebeec0063f29ba79080b55c49fd76d4dc5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Refactor the code so that the completion is returned \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"810fe583cedcc1102aafb8ef2cb03db302dd38595c9930b543d63edc34465267"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): The commented out function call has been inlined in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"73bb2f8f734db45e95d4563d38125c3a04383629f262b74917afed7a96557ea0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(messick): Uncomment the following line when error location is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ae689225cce82b1a56bdf83522d98d8528af16eb4fc7102fdb393c46a2451f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(messick): Fix this to find the correct place in all cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart"},"region":{"startLine":969}}}],"partialFingerprints":{"codehealthFindingId/v1":"4014ae974f18edc2312a01e2c61987ef4f000b4defaf8c1d2b5454d238a457b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Suggest names already listed under \u0027dependencies\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/pubspec_generator.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2afdd03ecbc0fbe7f7564cfd188035de9fdf9312566dc6778133f778db9beff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Create a way to tailor the list of additional \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/fix_data_generator.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd45b1bfce52bfab076c6295db326e8fe7c854a4d01d80b1df0c3b0f924bff5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out how to support \u0027variables\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/fix_data_generator.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b02b717d8fc0ac0cf26cb2754fca5077da179241ed9c7d799d753a1d8838f3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Support suggesting uris. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/fix_data_generator.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b63b9f971c231fbdca28cd4e11025f93796828538c92389dbdcba6b51570c61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Create a producer to produce \u0060package:\u0060 URIs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/analysis_options_generator.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"f287ee07220fd8bb506a875c631e4aff9b7796d5ecec975f5ef40f64743f5fa4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Create constants for \u0027linter\u0027 and \u0027rules\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/analysis_options_generator.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a36789b2dc91963683ba1770e1f35b21c922701579a07cfe058af10d035148"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider suggesting internal lints if editing an SDK \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/analysis_options_generator.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c5abe23a7a0c0b66b1cfb17bbb381d0206acfab09883c9c133181730f407539"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): It\u0027s possible that, if the plugin in question is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/completion/yaml/analysis_options_generator.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8e561060510b6b6f2d06e43b8c60d2ccd237c8ec3ecf7fc1449698573892787"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): replace with nodes once there will be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/util.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9aedeb9cfaaccec81937db3cfe97ef325740321aada2717f02b5330cefd7632"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This fix should be applied to some non-lint \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix_internal.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"2739dba362069e12c13163908673c2fc1a04919fc0c951d8de0a391bd2f53121"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding fixes to create a field, getter, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix_internal.dart"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7802440d1a140c3c845eaf404710220fc15783d6bb60fefe6a128d990d064b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding fixes to create a field, getter, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix_internal.dart"},"region":{"startLine":916}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c44699822dc1101752d9018aa679289b20533709917d91a59219621b04443f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add a fix to move the unreachable catch clause to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix_internal.dart"},"region":{"startLine":1024}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd25e9969e06046e8bfbdd81b37ecb7491fbb2b77a499f93ad824ceb54d9ecb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add a fix to move the unreachable catch clause to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix_internal.dart"},"region":{"startLine":1033}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e5b2a8d5fbf6738e85d0608e4bd1ab2b8bff42845901e4812ac9e135b05643"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Support ImportLibrary for non-extension members. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix_internal.dart"},"region":{"startLine":1275}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca753e2e59e7f4bc08182aaf58b22b32ad7c7dacb55341ab79a6207afae63d3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): used by LintNames.hash_and_equals; consider removing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix.dart"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"000352eaf4524d61bac960fa901f6d3d9a58919e81dd620e8f2d18129590d700"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider parameterizing: \u0027Make {fields} final...\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix.dart"},"region":{"startLine":1233}}}],"partialFingerprints":{"codehealthFindingId/v1":"f85b573796604126135d1a7c67a98465632def19df777d94083744c5b4a64a02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): used by LintNames.avoid_redundant_argument_values; \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix.dart"},"region":{"startLine":1371}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fc3849c8486cafcbb98b6db902b9157c2cbca7a23db2031e4a0b104b4941d17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): is this dangerous to bulk apply?  Consider removing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix.dart"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f9931a53af390c30e69521636b83e6dcbbe5beb71b2f41ced83ac730a6ac6be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): parameterize to make scope explicit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix.dart"},"region":{"startLine":1659}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ac405e549a0b050a664b93fa265605b174d06407a94bcc3bd23f374a8f45beb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): parameterize message (used by LintNames.avoid_types_on_closure_parameters) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix.dart"},"region":{"startLine":2280}}}],"partialFingerprints":{"codehealthFindingId/v1":"238be8106b359f05e1989dd7e6edf319eaa786e94f073da727370af41e34dfff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): The following fix fails if an invocation of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f25ea58610ae5cc476b27a5fbd555215cc58e2743b3afe658eeabe2a78bd90b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): The following fix fails if an invocation of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"be408cb600af34e0db3bafe91c93f7d026b5e240cefb54a0896d4767489d96b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): We always show 1 here and this diagnostic code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5a35a0a95bf81dfa2a65e386572bd9cead45d76b39d4b7abbf9cdd6518d76ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): We are passing \u0060currentUnit\u0060 in as \u0060definingUnit\u0060. Seems \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c4d685791e5a1b068b054778baf72a54af21fd1ee36b8d043f98d245292bdbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider an async ifResult to avoid needing to return \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart"},"region":{"startLine":983}}}],"partialFingerprints":{"codehealthFindingId/v1":"8408e5895013fc211b0ac4958aaf67e27f7fe11e88629cc5552d081603ce9d66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): unify w/ fix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/assist.dart"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b71dc1707bbc642e7377aa0480e6b6e79dabca9483885a36956308f478f6d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment repeated across 114 files: The identical TodoComment appears in 114 files (120 occurrences) \u2014 almost certainly one boilerplate line from a single migration or decision, not 120 independent debts. Fix the systemic cause once rather than file-by-file. Text: \u0022// TODO(applicability): comment on why.\u0022. Source code is not a task system: track the cleanup where tasks live. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/wrap_in_text.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"667a5314f23cf0978c85b145cb7c40f5dc4f2c92f0b3a19012db8d50929605a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Should we also require that the getter be synthetic? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/shadow_field.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"3773d1e713b6fff7a0082e90ee819cad3ad957b8264fea2db41dbd7f3bd9c99d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Support adding a block between the statement and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/shadow_field.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef55670435793cbf2c762dc28fde9cfe7010a8e41d60f8ae43082b89b066f723"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Conditionally write a type annotation instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/shadow_field.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aaf3af69a6ef0a346e2d21426da4d570c5e1b4696f5c2fef2862027837277b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider writing \u0060final\u0060 rather than \u0060var\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/shadow_field.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"85dbaabf6247ceaa89642753172c74bc810dad16a935844a89004c0cf83f66b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider removing unnecessary casts and null \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/shadow_field.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfa6b571a73109ccacce7b728cba4d3c7de3ba619fc51d97f744fe7f3c7c6d87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Optimize this by removing the duplication between \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_with_var.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7861702ee3a27579a4369c151b03e5567735ce9c92745a52acc442cc28d778"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Follow up on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/replace_null_check_with_cast.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"511286956966e3952aaad0f9c1664f079ab17ee73639779824c84f55ab74ce4d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider filtering for references that are limited to within the class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"578942cf4c35733133e3f1c0abcfac011dfa1288213e048a5ce73ba680f3c7dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider scoping this to parent or parent.parent. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"02069a6c33439cb78780b55e5aa7c2d180b3335e6aba8429a7b5794a176971ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Consider converting \u0060FieldFormalParameter\u0060 into a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"0155c4b690de935bd77e4eb81dfd812e325983a66830a26eb9726c10d665063a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Consider converting \u0060FieldFormalParameter\u0060 into \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_unused.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"6095740f7d8535a45ef019f10054408f8a9f1159f51d57d40a3b39f693ec51fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): https://github.com/dart-lang/sdk/issues/61164"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_type_annotation.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"400cfe4af8047bc4fff968b1ead98453cba425f2f626c46fa75aa3d1cc676970"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider a CorrectionUtils utility to get first non whitespace offset. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_lexeme.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a1e205dc4b461b3b15cb215f0a18c0b97d9a653eeff5a5b6ada530d4e18362"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider a CorrectionUtils utility to get first non whitespace offset. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_comma.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"45dff37c854208238932fc672c06cb57b3d22fcb965c776c474e8231f445d0d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asashour): consider modifying the do statement to a label \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_dead_code.dart"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e056066a53a47a2bf1ee93ce0480ab3fd09b4addbd04799e9cb15bc1b5317a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider ensuring that any extra whitespace is removed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/remove_const.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9886cd4a6f3f14883c8c7f791e57c8fed1071b6d84e461bb79b6097b1a97f49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Support qualifying references to members defined \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/qualify_reference.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c4979275248c624a2dd14808a73269c599a89a90318f93ba62f33c3e4c85558"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider restructuring organizer to allow a passed-in change \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/organize_imports.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"febb005667ed6538ba6906ae41f69a6ebd5ab34ce7ea9a24867cca21af9a9dc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): When support for augmentations is added, this will \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/move_initialization_to_field_declaration.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"383cea274c639ba2347ab82c5c439ae1c31914c9458b6c72855ec7a3417a35cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle parts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/inline_typedef.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0ed2ddf0c4b6cbb4be6c237006a877b34ad1100c2d59d6dc0998eebd2c8dbd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider extending this to handle set literals. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/inline_invocation.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"034297f7f86fe53f381fe8e9e194054a9c4668471d2cab0c1b797530006db54e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider extending this to handle set literals. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_add_all_to_spread.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"7168213c627ac9a647ee4cf3065d789a562b8089e9cc15728e4b15b8f42736f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): share reference checking w/ record computation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/destructure_local_variable_assignment.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"65b4a541e4041fb3429bc352842d28595aeee87952e35e81b3834a3ce74bf8f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Filter based on combinators to help avoid making \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fbf391743d1a0f72cad9ff9c374fbc88fa4f4f8b6eea455adb2bdbde0d972fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Filter based on combinators to help avoid making \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b298e311031829bf4abaa4b70f5a91b9050c58a8bd4c413b83b1fcf808fc41a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Shouldn\u0027t this be available on enums and mixins as well? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_method.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"3113052176238a8e96455605daf36a0c862bc79ea1f6f47bb2578a58f5872a88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Fix type parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_method.dart"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19cf09660f6da79ba63197f29d61c91ae34e0a1f2f49cec6dcdc6b8b246eedb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Generalize this to allow other valid string literals. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_file.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"72c8c767e99058fab8012c4e05f9b9bd1fa3f6d2f72706319defece062013370"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Support the case where the node\u0027s parent is a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_file.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe306f147837a88f648d3612a2d7fbaafd21fbf469b63865e103e6c29d4788e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace this block with \u0060writeConstructorDeclaration\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"225923bd2f1eefa762ab4500f60aadb6f3d114f1297b5dcfdd2920a05c734af6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace this block with \u0060writeConstructorDeclaration\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_super.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd44a5157b3e75696572bcbc55e730ee529ea77c7f8ba8ec8c5a2514a4930317"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace this block with \u0060writeConstructorDeclaration\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf1df20645726c9670860e9859ebe3a7e45c0ced9d00611c2d34095ec1a91368"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace this block with \u0060writeConstructorDeclaration\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"547beef84296810a8f8db405b4617b49a03e7132a4b4fd0c08d060f44ea2152d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace this block with \u0060writeConstructorDeclaration\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb07bb8d558c5859abaf17ad28ad254b587a9a94a08fe13d67268375c4cf68c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace this block with \u0060writeConstructorDeclaration\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor_for_final_fields.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6c471beab06b7a620822a0f686a737fb9fa124cd06abbd4ce7c15f6c87a664f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace this block with \u0060writeConstructorDeclaration\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8617856a7e8cec97080113f52316deb7b71b297c6821659e9bf67fb3df5f121"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(migration): We set this node when we have the change. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3bd4068d3397afeb4fad088ebb96f9e5abe65df049d9a6ded494c5591bc8e33"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider supporting creating a class when the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_class.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb19eb70f97726ed3f3b6d70a88d78e8bde0e98ad56c5a9bd9848dd3b867ea73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove after NamedType refactoring. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/create_class.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a99baae8889253a4ae7845fc7162f5fe540c51b9eb6f156d3a1cbecefd90d0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): extract shared replacement logic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ccbca6d7333296e2f76a40a55af5f5c9f43b0748b40f5062afa38f8275dbac0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): extract shared replacement logic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_switch_expression.dart"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"558e26319f6b2bf911b796ece9e03d6821b621699cbd42cadb70892ff17d7438"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider handling other iterables. Literal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_set_literal.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c95f14c8073d09d5e2fffa931feec9cae8ed5be07b3af4577d6db1410f399d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider adding missing user info. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_flutter_style_todo.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"77a7e9ca6f27e21f5d55383781564d2e341aef39e531aedfef5eee6d074faacd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Include comments in fixed output. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_expression_function_body.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"487f4cd1ec95ac8ef1a7c1050c7099b2a297d9ef0b0aa89cce3eb6e53bc68779"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle the case where the initializer is a valid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_to_declaring_parameter.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c75ead9a853c66382ca7eb08610c91a879a3b7e8ded3f0013c669d737555ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(applicability): not necessarily the right thing to do. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"099e1391457cc8f0129142df7b0f617f8345c211b6142628e6a5d17f15b24381"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(applicability): not necessarily the right thing to do. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_late.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"39b9e0d7e9696b4b45d3dcb1bc1ac201fa03740c11aef27c241d1ca6b6becf02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Create linked positions for the loop variable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_into_for_index.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"18f6e3e6c59ddc627bd2e245baf3efa5bf0667a18a8e2752a81b18aa4ade963b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We could potentially handle the case where \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_class_to_enum.dart"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"d432819e14ab651053121c0343ac26d89d3cb97598463f4f7f9bf1fdb93ddfbe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding a cleanup for the empty list \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/convert_add_all_to_spread.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7cff8fb0dc0de2eebf665dd78af28301ba74b58a1d3953af7379d596db93359"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Unify these separate methods as much as is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/change_to.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7964bc3878d953c4b568dead95442967ff7be6e085d1ad2c836a371d819bac1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider proposing all of the names within a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/change_to.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"99eda58303a0f68796b294a4e778f71201d082a82ccf37366368a04092dad2fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Create a way to use the distance as part of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/change_argument_name.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a3cedda632fcc9c5b346c18b5827a6435911c6a2180c7e0adc54634243bede5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): If the parameter is in a method declaration, and if the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_type_annotation.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c5d1f42eb31de0d486514f53d31ac2e889f96222d1561d22a66bb8d1577b2d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): migrate annotation edit building to change_builder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_override.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"b465ad227ec1f9ca0144d71c60340fd56116431c186dc97d21a81fce8909a730"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider enabling this lint for fix all in file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f1f93bbb2256bab2d1e2ff19b351336dab4c6a0271697b63177ffb6d827a349"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider inserting the names in order into the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e06cbe25ff4593e778d53a6f3ee35981ff0f6fc1abe28202900ed093934a2e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider inserting the names in order into the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_case_clauses.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a1035455f7dd4f07512d7a88f68f7f77017fb3a77688ddedb5aab87cd0ff807"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider extending the redirected constructor to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_key_to_constructors.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbb58329b1943109c54cf9fc6b5bcd33653d8d712edb3ecd5300b75bfb12ef39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this and update this fix to handle \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee5ffa72c7c6f959aa8b70094cdabf64658aba5f236f0fd17ac2ca8da68f9a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If we end up needing it, figure out how to convert \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/value_generator.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6035e38b4979fcde7c170343af3e2bd7b592808be67b6732700973d3fb3296a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Validate that the import can be added. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/value_generator.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"16c33987e08d436e8c3878ab5de523850daf448c09871b0b1b4791bb6276b200"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Check for an end brace without a start brace. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"880ca612872d403eafe25d0bb22ece3b8d8597761b692a8fd7a7b44e02fcfa48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Check for an end brace without a start brace. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"9460aafe23e6e606b0be06b3fb93d6e006ee19dd3df80ac74736ea3898553f64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If there are no other errors, then report \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"d11c3d93b01a8a1b9c4204113bd46aae1b94117e0ca732516a1af703995717d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We really ought to require an argument value for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea7d4c46012de3f3ce53b7b0fefb9f06e74e5f8d5aeadf84305de81809f458a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report that required parameters must have an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"442abb1c92c93f3caede5f9bdf931a1838d52d8e5e11c49a6513c28d6ac0df10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Version information is currently being ignored, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"813fc9275dd2ae56bdd8a3b8aae2b8ba7730dab872cafafe73a7e2d8d5b32d17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider having a different error code for the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":1565}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a73ffbf86bee1435b97f55c7b429edef7bcdd0b9b19e90dc4a2e00c8b7ca795"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We can\u0027t currently distinguish between final and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart"},"region":{"startLine":1666}}}],"partialFingerprints":{"codehealthFindingId/v1":"b425a137753ee17607d5fac21623aeb3c4ea29bb9c3577ab5fe0e61850f7ca28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkinson): Maybe also handle setters\u003C-\u003Eone parameter functions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"df05a2ce4dc24716e9015dda7eb01ca9fc6dc6fb4694f8666366b3e4bc3750f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkinson): Remember the type arguments, so they can be retained when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"36cd4c125beb0dfc27f33901277a18afed0d75a19d52aa6618471c905f75b230"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkinson): Retain type arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"622ebfb30fc72d551cf630792a68d92672222ce8b45791a33cd59f608194b79c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkinson): When replacing a named constructor, retain the type arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/replaced_by.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fd70ccd4c81c73c97e7875f54bfcca44184815344e0d9b0bc512c847dbbd226"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out whether we want to support this or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5cc42943f9ca0c6955ca245c892734a4950df46fffb8a03196b8569ca65cd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this method in order to support changes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"193e2c7e4d8be6d035870d6ffffbf6c93353e68356dd113ca5721f5844bb6a17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Use the static element, if there is one, in order to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"07cf9eb9f2952faf7e95c05584290e641e847bec19a33790cd516d5e6c5935ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Use the static element, if there is one, in order to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"55cb167cd979f1374d1c8f6058f27f333c337ac2978ff6fc163d7b8ac097172a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Use the static element, if there is one, in order to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b622d2bd18ba383612fe36c156943bdd7b42c5f188e4fb5957b243937545e9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Use the static element, if there is one, in order to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"d42ffe12b726f204273e4071826d2e5c495d884e6c4cc945e1c54a6a64c0a7e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Use the static element, if there is one, in order to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"3558f9ee855f4188ccdadf80015819a876ed5a0d3998fd48d0ecd49b414d7219"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Use the static element, if there is one, in order to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b9e307efb09453ec670a12e1195e3d68400a96739b6743870699a073acc3b3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Use \u0027new\u0027 for the name of the unnamed constructor. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"41722a1de14f885488e0cfb29b26cfc99af578e5d7538b84921fa555308aa055"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This case was missed in the original implementation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"495abbdae7eb131be386cafbdd724846ce61d8fd610d6cd8e206b7de94da1384"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Determine whether we can ever get here as a result \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dfe55ea5ea4ecbbc17bdbdba90c2da8a9e9b0c0625087dcd9a185e325d7077a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): See whether the list of kinds can be specified. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_matcher.dart"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"2effb474983a278562f763d0f115aa8fecee83fc910621c922e8cfa9ecbfc91e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Check the resolved element, if one exists, for more \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b3214b2c6c101ac8cce66fc7932ed008dd9f1518611d921a80f8dd29acc6676"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0d97d9fcf3aa8d3abea61d65cca5c3c027d01fe44290dbdd67a921c55ce05a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"04dd7156e899ded8969a34941fdc1f866fc9332ed9735cf2130cdb0f67f3bdb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"f41d33f149d364002dbb8a301aacd2095a104de2cd72886e9ee0da24f948ab9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"af7dd3caf25a61c5585c25658a18fb30058fab4b235d3da752ec38d1b665538a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2d59eb669469489b9ef9cbc0c6ea704839ec7619177ed6cdb5f60bd600da556"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"caccb60e14ca101726628e81e27f9b184665b6b82e664da2a58fce031344657b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If \u0060node.target == null\u0060 then the invocation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9c2a2dddfc7d6e96c1ec1af8c246f1e71f90ba8e7f31db6efdf75dcd25de5bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle more than \u0060InterfaceElement\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/data_driven/element_descriptor.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"9240bf4f6049a6ed9d7b67072da6d800581f09f2574b31fa6044a2bd3f5bd46a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Generalize this to add a key to any map by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/correction/fix/pubspec/fix_generator.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"f433bdd822ee105a8c7fab735437ec5c6ec1836419e45e9aaad0b0cf26b0fbb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): constructor name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/property.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"d171348f20dd177f53fc75005e1b79d29fe5e421c9be4f7d9f00f60bc0db04ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Generalize to identifying by type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/property.dart"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"078f3de0b957a9d4268684d0f2f92576e883896c6a4ad3db6036dfaf6b91183f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Generalize to identifying by type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/flutter/property.dart"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"639abd552351cca814bd11ca5cfe035237dd9e6284c5d23d0da8d194399e15df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): this should be using absvar instead, see \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd0ea0438298e1ea575d798cafb11a8b818233a7dfbff87a5739cd7fabbe370"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): This method simply serves to provide the WORKSPACE relative \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8d39833c6329b5a1db3167a737cd7743586ec69803d949b90378351b682b007"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): figure out what source generates a e != null, but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"33b91417b4ceaf8fc41395659507a0712855571bb39f7039f9aa18cda830a8c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Ensure the range inserted and deleted match (allowing for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/move_top_level_to_file.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8199a17f0def1f517e11d86ea5e090cc7696de205d5901cf577b9ee381957b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Check for primary constructor declaring parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"171f4748bac729c4a94df1182c1c7c7d211a9edbb254d46c7c92a6db84efedf8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Check for primary constructor declaring parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"813a6c65328ecbb561de1bacff503a2dc82459d4bd1d136e805518d40aa123e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Make [ChangeStatusFailure] sealed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"32751c97ab4ec20b39bb383c407ec65b533f253312f51d29da7dd6f76b5b3c01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We might need \u0060defaultValueText\u0060 added. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"f758d6a0639d9095445941c7bab950d181b0633befebb98a3301ba89a1a24f12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Consider adding. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd28a8509ce02fe4bfb450c65149c4250f663540d43c35b13d9f7a6dcb586259"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Maybe support adding formal parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf216a10557fc3f45e1a6f75a09fc8bb33718fb8686fe73a181d629f3ab66c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): can we have a lint for this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":1227}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2040f1242f46a469749c0ce3f211024fb92afd8a165e9f01008e9a7023c23d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove empty \u0060super()\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/agnostic/change_method_signature.dart"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc214d2dbb4390b35554fb0ae8e2fecf2a21482f3033493f5818ced5cacba94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): maybe support renames \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/framework/write_invocation_arguments.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"e076673566ddac67fd706299bb1cc652f060cadc640217cff0f22b79bc5b678a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out whether this should be testing for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/visible_ranges_computer.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde1a91750675728e951a56459a525b52c0180d5f3c58317d2011b26e2f876fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(enhanced-parts): This needs to look at the set of imports for the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename_unit_member.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2b415e34fdf39fe6449b804eea8dd058ceff751f9993d024b530ae5d608342f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding public API to get the offset and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca98e01d0591c0407730a4c9176ea096e9955a805b7dd0f53d45c6c259399e16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding public API to get the offset and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/rename.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"757d07d28dbc6095ffaebce4c558362f4067bd137fb76f30545c46328fc4d20c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): inline this class as SearchMatch \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring_internal.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f797f8fd4229a94f8bbaa93225370d8c7dbece50ba1971f8dace25d30d94bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is bad code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/refactoring.dart"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"663d03c4b064f067043980b8096f3a5177481bf3dd2636ec15f1098ac4ca85ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This exception should be caught higher up in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/move_file.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"d60a982652f18a864211edeb9a2946779f67a4e32643b44fd88e7e3d1a835f96"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): support for ParameterElement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_widget.dart"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f87810f192231b3852489ea7f537e4a64a982ec7c8c699dc8df811af8e9dbd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Check whether the type parameter is visible. Return \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_method.dart"},"region":{"startLine":1650}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5570141a451e4f1d7fce55bc25212ef849030b5601f6eb8073f3fc106290668"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This does not correctly handle escaping (for example \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"d584abcc2d90b991e1b081042ad538f17a0690b918b0094f2cf44a71f08ee9a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Don\u0027t include braces if unnecessary. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/refactoring/legacy/extract_local.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"e38041d543b410b54e9fdd9490627936cbd298733b1f64cb0c3168dc45306737"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Should we distinguish between command executions that came \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/services/user_prompts/dart_fix_prompt_manager.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e5f165c41e8721c2543f71fe1b9e6baa8bca1029a800b745ab12972b0f6cd20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Make this method support the legacy protocol. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/session_logger/session_logger_sink.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"c50fd6b60efb549fd0705e501c788d24869758fc10f43bd647acdd53857cacb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Make this method support the legacy protocol. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/session_logger/session_logger_sink.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"169070ec3aa6f1ea0bca5e31ba96df13e8f3f955f9e6ac1c73ddd032463b2fcc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Provide special handling for \u0060CaughtException\u0060 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/session_logger/session_logger.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5e4c08fd6da649f085948e44d9524bfe2d8e9a0ecd7b49e463b7a2bb409e37f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): \u0060InstrumentationService\u0060 is defined in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/session_logger/session_logger.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"85e1c6cca1e645fc12f750d29a1941efb79c630082ade294c690d0f2801afdf2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Distinguish between the two. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/plugins_page.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"392fad2ca00b36a26e3b0bd89a0b366f010ac4471e52bfac4001024087b9600f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider displaying these times as a graph, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/plugins_page.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"c12814232a0207cfc486e67fce33a9003e98aea4e0bef6709d2d79c5d9128f31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider displaying these times as a graph, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/status/pages/legacy_plugins_page.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fcac89259000d41acfa045d500fe0bdb028f906b662587365fa08b1202b24de"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hacky parsing of csv line. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/profiling.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"e09b497c81f99077ad739bb0dd08e0cf04ef41f5ae5a9620d4a62ee76ad0aeb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebosch): bump dependency after package rollout is settled. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/env.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d9b35e861ab87219495aceeb302c7a7b3648b9ec5de4d6656b01d2a3fcd8e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Testing for a null value probably gets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/extensions/yaml.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"faaa67d5e4b48f521a3e34683fc719373e47526b1112c2a1ee0328c01ffce7f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Nodes at the end of the file contain any trailing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/extensions/yaml.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"26cc99ce751c473e61aa7d672f73c1d45f324975c13614da937ff0b6bd988b22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Improve the name and signature of this method and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/extensions/range_factory.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ef4a68875c76b2ba2240f7bf901a372ccab9f4c8059dffcf33d72ea6d296f1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding parameters to allow us to access the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/extensions/range_factory.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e6020034cbdb0695ed6e6080a067d133d55b9e11f26171675c8795d5724b93e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider adding a \u0060separator\u0060 parameter so that we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/extensions/range_factory.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4de4d003193b48afac7973769b2522a9c13ea248f994a17bcae872bf237711a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Move this when the occurrences are removed and only LSP is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/extensions/element.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"61952c526e0f9786f1b6bd1c04eaa4d497359d935931c48f3c9520894bcc4f82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Validate that suggesting a tear-off instead of invocation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/lib/src/utilities/extensions/completion_request.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"e53456a993609152f3da918b7dbe33159d2de3cae74431d7ea2c8965ce3be702"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Fix the generator to sort the generated files and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/verify_sorted_test.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f6a72c13d0b1ab9908ffa60d818fe73592eaa99b5c5b0686487a891ff1f03ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Fix the generator to sort the generated files and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/verify_sorted_test.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a90e5f0e3bc8830f710ef3dad1b8b2b0e3ec2dede2f4d456cade7eee1892300"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove it after SDK 3.1 published. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/verify_no_utf8_encode_test.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c2ffaed1e21fe6489eaa2b5ca8b390f9f4c024af959ab827c7540eae6f8414e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/protocol_server_test.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"19e2df97ea77c1790091a9c3e72a035ef42728aac91b0e6ae1babfe3536cb76e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1c11a2928262c46b163cf0f7caf5de9d7ac4fbd144edaa1f81822eda56303f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): do any of the exceptions below constitute bugs? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/protocol_server_test.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"1daf14a9e0506dc94a6b7949bb7cad50cbf9507397467d0fc223b57c7fa51b26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): why does the MatchKind class exist at all?  Can\u0027t we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/protocol_server_test.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"49df2914a61de469e58d319752ce9345cc1bf08b5bdd21f0462d5d40b4f75461"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Remove dynamic invocation if/when analyzer\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/protocol_server_test.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"654a76ddd69e176c7cc091565e5620810c9da7496812b1896a5419407f185e8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): It isn\u0027t currently specified to be an error if a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_execution_test.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"a102335c36a5da9cfa140b0617a5e2b92bc9ce977ae511ed727ce89b770b31a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Restore the expectations above (and delete the line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_execution_test.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"8663a9087eecab0cc69cc8e343cf5eadb1cbe28af67ee0c81c1c3e928c82ed67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Merge this class and \u0060CompletionTestCase\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_completion_util.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dc597e8ecc39b6928a6b21e15779c12c2a1ce4cf0bd5b7b36375bebbd369942"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_completion_util.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7d8744906e0356991b37938ed7c97e80097505d46a884e20ed689671aac5af9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Check that says \u0022libraryUri\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_completion_test.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"85f154cb8311c4963f4d40f65a98ecc6a5761d9a8300bd5de9161da508d270a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Why duplicate analysis? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_analysis_test.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b033e84c97e77c0836cc79262aeed066d8f6b89557d03bec162e8833d7bfcd6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Why duplicate analysis? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_analysis_test.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05d9405a2eea56edc0a960f3bdf2f2672ff0f6513bee734ebe45c792b4c97dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Why duplicate analysis? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_analysis_test.dart"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"134d049f980438911f84f746cd08c12adf40e4ee967802e4241b2d975207e83e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Why duplicate analysis? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_analysis_test.dart"},"region":{"startLine":666}}}],"partialFingerprints":{"codehealthFindingId/v1":"e07c7ff0e88d87932d97d0016c5dcd17b6b153df19e3b0d9a59ecafa0ca43b80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Why duplicate analysis? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_analysis_test.dart"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f54fcb11861f464a1835b2104fdd5d71d3c3821fa25c21247930af4954ba1f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Why duplicate analysis? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_analysis_test.dart"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6faa6558095abed9c458a657b1b228718ac3066ec665b793aa936e80a327f55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Should we get flush for a.dart also? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_analysis_test.dart"},"region":{"startLine":1272}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d498e68128040766a257ff9286406d59f72bd9b3663e7639781b2e3c3d08674"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): why not flush? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/domain_analysis_test.dart"},"region":{"startLine":1424}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e4600509c5988275936894a59a5ae08805e5854a5a34e58e2bb1ea6992b55bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): rename \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis_server_base.dart"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"995d311a444a15d09dc0e01ef5051dd6e410bddebefbe145e338079eb5c2d97b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Rename it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis_server_base.dart"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aa28fc336193354d94a579443a2848ce7d3a8f80a86e44f9725b9223abc3786"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We should get \u0022flush\u0022 notification. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/update_content_test.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"568fc8919a35ee1c19edcfcf3f2b51f654fe0421edcd6a53015efface9fd24da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): The legacy protocol requires all occurrences to have the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/notification_occurrences_test.dart"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"64aac545b36d108bb5964e90f8041d24a1b02307e02a769e2527a7aa8c6aa625"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Improve target matching. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/notification_navigation_test.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c03ca8502830a7e4fc6481669bd40a6ade4a63210d7a915d18dae69e50646f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment repeated across 33 files: The identical TodoComment appears in 33 files (69 occurrences) \u2014 almost certainly one boilerplate line from a single migration or decision, not 69 independent debts. Fix the systemic cause once rather than file-by-file. Text: \u0022// TODO(scheglov): implement augmentation\u0022. Source code is not a task system: track the cleanup where tasks live. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/notification_navigation_test.dart"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cb574615143d48c5ee93b1423f5734e4c6b7d789f9f5711aa93ea8f762eaa3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Apparently, we don\u0027t sort in the server. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/notification_highlights2_test.dart"},"region":{"startLine":2764}}}],"partialFingerprints":{"codehealthFindingId/v1":"17264480ee04fc3a921cdf6b9b64fca21b468f87e421602339a0224e7b2c5c09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement options file analysis in the new driver. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/notification_analysis_options_test.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"94151afe5c7644cc6fe5615bfdc78139856612f32ad5e485f89f47a0e3b6b1c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement options file analysis in the new driver. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/notification_analysis_options_test.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"8adf1dcae7a5de87fce0380a1a1c2e562114bdd791cb238bb77ed08d0725fcd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement options file analysis in the new driver. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/notification_analysis_options_test.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"91757d612f639a31c0cf3b3987e49c4faa42a810d33449920b3c6b95b4a9061c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement options file analysis in the new driver. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/notification_analysis_options_test.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"f64d6c178f618253746d9aac1b3c223f1413b68739b5c09aa60f0ab893957515"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement options file analysis in the new driver. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/notification_analysis_options_test.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eb2e0ac807489b8dc76e9821f869a8ff6a6461c90764592eb4304b158b4ddce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Rewrite these tests to work with any file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/analysis/get_navigation_test.dart"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"e68e457d0784d1ac152cdc23f84b0db1fff6955bf54067beb20608d096b23e94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): not correct \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/client/completion_driver_test.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f25bd05feb27a10b2895865f27c8ed7c055cc9bf54d7cc05a4dfd7d24575cde"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): add logic (possibly to driver) that waits for SDK suggestions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/client/completion_driver_test.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"d26c44418c8d9f73c3a3471e83337fca803f7419885b0fc4ce1ba0c89d639369"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): It may be a bug that ContextLocator is producing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/server_test.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"0776ad6857893a9cabccf9ec96e91f80b9fdb286c6bb1489a69f2cc4c86b5052"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): We may need to revise the tests/implementation when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/request_helpers_mixin.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"58011e7087d8219666e286d253e76e0d5a0e7696a3812a30548b218c9ff40a92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This one seems to be excluding its dartdoc? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/outline_test.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6dedc3bcfe5c7bd079ff545134e80f4c51a523e4524bce4320d578542190013"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Stage edits per package and discard them when the package \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/migrate_test.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9ff5efb422f84b5179c829e68ec6423ea84d38fbff1884d42e24a15502dbb49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Improve the LSP enum codegen to allow us to get the names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/inlay_hint_test.dart"},"region":{"startLine":1280}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e7b2dd85bf47b1220159e662b80eca2c1b9234d7405260f60009ebca8e30601"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): The server does not handle the file change. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f4d9234e41b699b99e1c0bea5030b67da446c976111106406b2d8892097f9ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1ccd6dc4c78b6b9f2362a5405198565129b7c5a149950c97337fa0903f8dcdf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":913}}}],"partialFingerprints":{"codehealthFindingId/v1":"748dd75c8e4fe536046595386041d38062339cb5967ec696c58027172b774f28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":925}}}],"partialFingerprints":{"codehealthFindingId/v1":"051faf46f8833393c97e984dc6eb81b320211706e738b065d4a89a347282f7d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":938}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc2a5e87b751bd720ff399d995ec0d905ebf9609afc912ca477cc2c322d542b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f380284f2bc3acba87cdf122b8300da33a1db4fb630d8f2079cacd03d19645"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2d7da1a48d308d5a8e00332d8ced9f697e52dffac12be06a401953844c5b0a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":914}}}],"partialFingerprints":{"codehealthFindingId/v1":"be0633b8bef4c6c8606ff6e37a566f6761c2cd3cbd97c737aa6783731f2e383f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"690bfedcdc5f78e8a5a121a47a21cf88c04a54ad125fd7a16e78c97856887e52"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: This \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/diagnostic_test.dart"},"region":{"startLine":956}}}],"partialFingerprints":{"codehealthFindingId/v1":"56c62d26b5516ff2609fcc196ddd291558491a722ffca67d44673bb0e7c41fd8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider enabling this by default for [CompletionTest] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/completion_dart_test.dart"},"region":{"startLine":896}}}],"partialFingerprints":{"codehealthFindingId/v1":"eda315e083a1bce6e44c508eff2cfe77bfab9c54ade98e09303b42f3d4be5d2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/completion_dart_test.dart"},"region":{"startLine":3832}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ed1e58a4520df00c7d14344d6f9e61421ffd53c78f8a845bf64cc6528473129"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement myMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/completion_dart_test.dart"},"region":{"startLine":5044}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d77aef57f0ee63a127dd48d3b1aba5b449779e1414a368618f9160a232a3572"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Abstract plugin support to the shared test interface so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp/code_actions_fixes_test.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7f3b056a81a421f1b2e967489ee222726cc6ef6918ef9758d30f15d2508e257"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Support this for LSP-over-Legacy shared tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/lsp_over_legacy/abstract_lsp_over_legacy.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"54ec2659d22f19a3fbf8070c3877e3af66c4b9ccd87078e83e8346eb1bdbe2a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Support this for LSP-over-Legacy shared tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/shared/shared_dtd_tests.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a80c5e959577816166e2a3c9873d4bd8216256b733ea20a38a094a6bad2ad6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove \u0027search\u0027 parameter and convert original tests to go \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/search/element_references_test.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fb3ac3d9ab8f1c769bbfb5ebb0cf3a9be8e0e5d380bb9170114812e3310e732"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): The contents of this file were generated from an older \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3d7746c2f9b4c498f962655bf35cc65fe769c36f2e2ab8db9fa65c8bfaeb902"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4113}}}],"partialFingerprints":{"codehealthFindingId/v1":"b86ab9cfff2b6f1b00aad37b631775b6145b97e6888f6ba807bd63371c14fb54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4578}}}],"partialFingerprints":{"codehealthFindingId/v1":"851ae321677ada046db5b1f49a6f59a81169f079e944ef590abf8076031b72a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9676}}}],"partialFingerprints":{"codehealthFindingId/v1":"19afadcac5f259ad179e6ee3ffdec0f17ac4ffb60add94dceaa08a25585f7fa5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9744}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dff3cc5ea0eaaef23490df8adeaf1d1e5e0a0a109c5929e34fb1ec12bd779ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9834}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ccf8398dff083238b0034eebae4b4db9ef544c6d553398703bc94bc6cbd4d06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":1334}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a3be774145b4f922ce52995f35dfaf56a58eb896cf4c57e4753e42a33dce4b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3717}}}],"partialFingerprints":{"codehealthFindingId/v1":"305870610ed977fed5e3e5e595c310b41b8176d5271e89536e892dc8c45c699f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3778}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa721d6f325ce5f05e43416c9e54e097748d32a5a8f68a55db17816eb1e3b144"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":2024}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0a20019b1b89b9f3dfc13126bfa77fa9b5401f8754ccb34eb53ce6ee5c75207"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5677}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2549d71277708f980c5400b726f3352848d487ce7cdf1a45dfc2f3d3a506d56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5737}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bbad102b882c120ed14e899d25f913063a4bb4cd78409959c405937a4c48412"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":6023}}}],"partialFingerprints":{"codehealthFindingId/v1":"921b5ff65ee33a39e269b6ab6b039b45d50910de04bc853a96b07f8cf04db262"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":7482}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b47d481a57ed41e8c469df221e5aad68f521d5173376f023e7e89ed8b55dadf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/library_prefix_test.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d396387eb452cf42d6d5fcb5d47aca00fba694853c2e0e98996c48233d71176"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"51053b690d3562760b98cef408ab805f68cecdf20347057c5d4956902f1b8e58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2600}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cdd98b798ce21c562073d4a29585cb296570147fe2b76f14071957c653de059"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2644}}}],"partialFingerprints":{"codehealthFindingId/v1":"20472c520707fd6d3443d3d5b25a274de368ac1f5613fc65bb56e50f00040356"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2688}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa917ba4d83295b58dd21997a95cbaa05bbcd3b1dac481d3b3d65d81df0affd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2750}}}],"partialFingerprints":{"codehealthFindingId/v1":"276f1b5b48ccce1d41039496127ac3240f822a1dfc5a333a998df61580a294d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4626}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5beda5ada3b220bec14f7166f2e0640971da13d8f53a6f6dcd86adf3a6f7d4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4685}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b68193ff31aee73323ca5052302adbb03086a2ad1c3e2f3a7a9ec5a41ff14e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbbdd3e92c3aa970eaaa0d31ca7eeff84a354e84e0fe4521e9a81d8e3895a893"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"08ac52978b85ceb4e114809c389a2bbc2563f487f49c00e58ea0b87470de1499"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d0bc4ae00e5b7d4a1863c17c3307975f297365fb8314ad1fa13b7b10b8dbba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"04bae0354ca8a38e04633458f6e4ff1fdc60321dafd7f04c8c5238e5bff950d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bc17c8b9fe9dfc0a586561cb8e8c4e5adfa96934c49a00a4a7c06a812d0c7d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"6305fe928afaa3d7666c5d229b1ee687aea481ab650c42c18c2c5e1c93b3fa16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":290}}}],"partialFingerprints":{"codehealthFindingId/v1":"266c26c55d104c14b4721620165216d5d9c1f3ac3b03d6b76486ab9ec02e1b62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hashCode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fcce23abfdc298ff14cacefee651a66292257bed245b03815e5f15d1048e457"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4117}}}],"partialFingerprints":{"codehealthFindingId/v1":"13c0c30ca127142e5cb4562dfcad52307fae193e675fb9b23e20db6d24ebfc7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4582}}}],"partialFingerprints":{"codehealthFindingId/v1":"da37381e50a00cc0544ae2192fafc388f20c05a6aaa947f40d47fb925f7c1b3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9680}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee489a85751fe3a147f7bdce82cca88155200975ee39302414b934941251333"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9748}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0822ea9ca6179f6f787ad39eea712710d353d639b9553480add87f39f87bdd3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":1338}}}],"partialFingerprints":{"codehealthFindingId/v1":"c58efaf9342313a5c5520516b9f2d68087251fabb469ff5c7d53f89a2a8f28e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3721}}}],"partialFingerprints":{"codehealthFindingId/v1":"959ac32dc9c53c8bfb0220058f44ba63b5255c91361dfeb71c83e4266a2db006"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3782}}}],"partialFingerprints":{"codehealthFindingId/v1":"11715c9748a7e60e2a342f2790f38507bb50f738d30c4acfa2bdb7a6144a7e2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":2028}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b1d4139782b5a3c181bde8ef6f2fb6cfbd14f01f28e39a7f4f6ef238b46772"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5681}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea23da1a39c2126856d6e71b2d7e69d3ea660410ca1b27858aac262b7c895f89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5741}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb4274a43d15da965315154c42e3f7f66d5b81c3e308967725306570c1135425"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":6027}}}],"partialFingerprints":{"codehealthFindingId/v1":"138b2beb2573e2bc1c016f5aa00fde6073c7f89025c6665c35fe50dd2e69ef9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":7486}}}],"partialFingerprints":{"codehealthFindingId/v1":"871a09846333cc9f17bb50ba3d6f600fe2061623beb22e417b96b54fd805853a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/library_prefix_test.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2fd240767687986b1dcec171f948c1bed980588d15f3bb88c7bb5e660676290"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":1686}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5fd0492f87ff9852552c91487c4a975f7722d3eab3c82e0255ca4ad4c22b8ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2604}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa54808c77383e026cf174ac5809c3494426ef279feb738ea77e1a10c2bd5806"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2648}}}],"partialFingerprints":{"codehealthFindingId/v1":"785b12e7b0ae77d9ab634c3c5c1310ecb8b10e5a627f2f43893f14b35783e061"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2692}}}],"partialFingerprints":{"codehealthFindingId/v1":"4198d5ebdfa8a97d05fe9b4b46b082ca5d6c1ce48cc38b6a3965d635abd3cef7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2754}}}],"partialFingerprints":{"codehealthFindingId/v1":"185162f618ff1e0274c8359ed646d2eaa4bc57bb09bda3da29c56267aa96874c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4630}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f826a1bdf9f63c5471f56b5af720b82ea200450c48f3dc1e03245fd1f157c66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4689}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b6a125fb4fc2057fa19010f561d08185d0de4f18d32a3f0294ea7be778f618"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6a1e37ffbbfe7a74a661a2d58cef10681955a35ca2a6ac8e2d96fd606f42ed3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"db0975a661793134e41a44dbd34268944012c6c7ce2faadd04beacf0ca57024f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"733c64b0d9a74a4e90f45b83dfcdb7905aa0012a21fd2e39fe727ea14fd711dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfdd240d0924a9367430138bee92664d5a45492278bde76c5530a4fca847e25c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ebf09b1e8dbac55eaffeaf4f01a73dc3101853efc704dd86dae35077b1d6bdc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b58916d87348c329d24c2596c30c5cf4750898affa4c5534629329ecae0eac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement runtimeType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"b000cb17e7869b77e30c875731e6f163d0faf506c91cea63a380e1f179193e46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4122}}}],"partialFingerprints":{"codehealthFindingId/v1":"be6520456c9ad72ea5e6995b8eeb78496cff11b0e2e45c906cdc6f42e78b7039"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4587}}}],"partialFingerprints":{"codehealthFindingId/v1":"453e8d3a3c07eb6c9837f09a32b355186a25620cbead5d4d7aa70a8c5dc5d1a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9103}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dd1aa99f9e5ccc5d36a9fd34e1fb74cbefcf24e2ba60ba7df3aad807b2a73be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9685}}}],"partialFingerprints":{"codehealthFindingId/v1":"7503dfda32953634d27013fe2b67183831944f4e08fc48901534daebb16e49ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9753}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d6e542500f9b5350cfdf86cdd1cee94cc21deb9d190bcf146dedf8ea844a73c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":1343}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7549281e1bcf56f5f2d39fd0b2a2fc0d6af7fc3ab8e8db648c5f069f7cdd120"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3726}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e67b4cfaf4250100fdb7b7dc2b110b40af40f80b6a41e3dc55a26b6d8ac12c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3787}}}],"partialFingerprints":{"codehealthFindingId/v1":"22cf0fe5ddc25171f65daf5a913498959b3e4e66300b1e03ffe6a744b3817056"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":2033}}}],"partialFingerprints":{"codehealthFindingId/v1":"98b115705545d68069245ce6f02cde47c3b3e5d97ed568a7c0369ff3470466b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5686}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0cd3b8c1bc3dcb0852dd1f2f9c9163066ccc9933c345f5c503aae277d14054c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5746}}}],"partialFingerprints":{"codehealthFindingId/v1":"a15b44fe6fc9396c99894997e9325220a79debe79cee04e84cc9b2bcb384ca28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":6032}}}],"partialFingerprints":{"codehealthFindingId/v1":"efdf2243698b639790633bfa976059c6f181c1c2dc70f1c562b80eaf3238c126"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":7491}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef3eeec9466d59376cd007ad0b8911dadcaa4ae9e75fbec20d23dd50979a6c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/library_prefix_test.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eb3bd3aac8a7406e0e403af9f11e1b076b7e338fc630847ef6181143cba81f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":1691}}}],"partialFingerprints":{"codehealthFindingId/v1":"a718576a5ad26c544413d95d593843e4cebae2310f4cee935eab9636bab1ebc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2609}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b44d71d16dd4110799458a68583e48c5e18dd518b1a6ba574cbe7aa78fe2bb0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2653}}}],"partialFingerprints":{"codehealthFindingId/v1":"e320cb7d563f8e6f29e7069ba618b9cd7a7027291cc7fb5a644682400f354d3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2697}}}],"partialFingerprints":{"codehealthFindingId/v1":"003ff2dfb3e1db092d1ebbaa9ca58c101280575ab0f2e8694f63ca32b92f39ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2759}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b9edb6674350c27ee69e9780fba3f327ff06c19147aaa6fdfc22be79cd909a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4635}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d65c87806d5159b0f76ccd984e8ef81d5aef5b2bcf6c3167860e577563870a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4694}}}],"partialFingerprints":{"codehealthFindingId/v1":"d70385f0578312f3e904b96dad31a7a849f230fef50599106a00844590561781"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"3172c79a0a50660e45036636378e76a1678f032e13b447284c99723809292130"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"b702bf94157167dfbc15821142f53b306c8b01b5b0321803be3b402a5f7ace17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"e187f051b48a7416b43d4a738ec7143b9cf682ee2feff8f5ff8259f43a9f4613"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"778e111899873eb0873a84000c3078cdcf45b343dffdf0900bf46a2c92342465"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd96d7264974e30dc4a59e7ac15947d4a15b09fc01cc8e1801f28c8d49bd1dfc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"76fbbaac6d570c60b5910e7454d8aa0a04373f6558301fb07362fe5ca9eddcff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement toString \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d5ac9e8973ffbeb6a00d6e447156e49a5fc7ee0b1f517290c9349bc3e652652"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4128}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bf5a3828d927dd58adcf4703f329f31bbcfaa855c131e0216f8f5fdae049947"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4593}}}],"partialFingerprints":{"codehealthFindingId/v1":"63fd7a816ff83df22c53a109280912790e910e16a196ef0ab94a4057b93d21b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9691}}}],"partialFingerprints":{"codehealthFindingId/v1":"8acb17f40c7a7499a092ed49889dec67d66120f2bb2e18fc5482837a9c4bf857"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9759}}}],"partialFingerprints":{"codehealthFindingId/v1":"77128d01b49b16300b058565020194ca9e9a256472c661bcb29ba0d8e1851c42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":1349}}}],"partialFingerprints":{"codehealthFindingId/v1":"bccc89f1af74e7d4fad27b5b0ddd626aa7a046c4572f3e21c197e9d403003390"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3732}}}],"partialFingerprints":{"codehealthFindingId/v1":"104da70f20fb3c9db42e19a4168ddac437c219bfe32d7320738f4f9efd264e57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3793}}}],"partialFingerprints":{"codehealthFindingId/v1":"580c033f3d17da85e0a2ffdb260ed12bdae315a150e9786619ef97f9c182ed3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":2039}}}],"partialFingerprints":{"codehealthFindingId/v1":"18eed9f2ed45415e8b6666114fee892e6f43d15fd4f20a1c988077da8b9c014e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5692}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf1ccca8e21417b5e779739dacc3016121261cb7e1ec44ec2f32664a63423fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5752}}}],"partialFingerprints":{"codehealthFindingId/v1":"965e71472158385bb6941f228c62174d386fbe3f957eba8ea8f694be6d913780"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":6038}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ac323db3bfc2a0176730820bde735e0e43f18f9c704aa10f10a50f5b8b85702"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":7497}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d12332b06892ff75abaa0e75cd42c622f7f4bff5220d3434e67dd9770b5fd3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/library_prefix_test.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc8a70ec2e6e6c0407aaaba95048efbd66d65cf428664b5c2c80109692ddc4b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":1697}}}],"partialFingerprints":{"codehealthFindingId/v1":"1328f775e32e550e43710736a1fabef49552301be2c91823b76b32043d35a5b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2615}}}],"partialFingerprints":{"codehealthFindingId/v1":"d049d619950e0af6c0cba4aa56291120d27d0a9c05ca04115b1e62be40ae9d9b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2659}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac7911cfccf53af9afad88099e55a30fcba3736eeb414506a96d953c71c00c75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2703}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c9b7bfcfd08bbd7df76535b8cc2a27fa19dbea6235b0e23e20563a10508b15c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2765}}}],"partialFingerprints":{"codehealthFindingId/v1":"edd9e830e650224581a0ea795b70e1e7d6d4e7e65d24a6953708e16d7528bcca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4641}}}],"partialFingerprints":{"codehealthFindingId/v1":"24e8efca8eab4600a3d20dd62edc49bda1f650eb7befee08cfeac49aa12c0b3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4700}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0f894664323111f71d7c8c70ff9ebbf104997286d57973d040e27d426b4f7d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"166352f54803dc0d349d7ab3803fd62015134e13134ee04164c5a49faace4201"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f658e602b38406c5794fb1f86a08c1e16a70be44512fcc70eefc2e19d2fe4a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ef850bb94fea4cd27a3a274b3eac83756cff35d59d58e2e8b350113885d5b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"582347fd1bf8633511ade27fab4ad127d9df8e42adaa0b5593e7cc671db9c17a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e9ec84b11f3b6eb046c17a01b8e99b66a049d64e1eec6cc4ca59cb44bf9aaee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"8108b5f3247d4aeb06731ee6eeeb2538a3c67bb4af8352616f3718fb074df240"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e2fedf656cadcb2e1810a7b62b04d2ac1e8d07d82d62a143585cff0780f3e56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":893}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9ce7413e0be1bcde687ac7bfb09fb0c9979bd41d2f7d9fd8ed549db1690415d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1398}}}],"partialFingerprints":{"codehealthFindingId/v1":"8113dce914d5ed4bbe4744b407c421e9fcd9a8723d30deacf3b995eea47d3611"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"86f9dcbff365abaa7b22af9d6a9184469b68d2aaafe01707bd2f4eff6df9d93f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement == \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_method_test.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"5de24851e9cd9733fca706304c8b7f100893a5aa1a4e641c2301c115921a6716"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4134}}}],"partialFingerprints":{"codehealthFindingId/v1":"84321bb419ea4468a610a5d034d3f8b5961ac15f766fbf01775e1dbdec31aad4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4599}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2d575bc94f1198d0bb4861a73db7573b93a881488f9ad9728e2c3749f00a4ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9697}}}],"partialFingerprints":{"codehealthFindingId/v1":"a50fce96332308e1115129c8d37a56dddfdc4bab953b22525784b16a60ea2f93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9765}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a2e708b86316d1dd4fe5a50bede723df86ae01068aa4a4bd19d5fbd6686796e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9839}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e18fae977495995f61565f794212ba5d3b9fc028f3029b49beedc77d1fb81a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":1355}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d74c3fa8c0661730085079198a054b70231921f38838690bfb34af708c7cfe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3738}}}],"partialFingerprints":{"codehealthFindingId/v1":"21ad0ef9c41423240d7c170b582d6dd97d89437b0cd9ffd5019047e4a1848a5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":3799}}}],"partialFingerprints":{"codehealthFindingId/v1":"83e8fc67980db003930ef16107fd678d75db236adc238ba43038108e6d4e9d84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":2045}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2ce969b9805f027ccacd2a2cf663bc0d5ba73a76c47171df7672f7a43d95fc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5698}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a0f40e78a4b2796d2249765ceb16104e0df96dce9432e3302ce29155a2b8018"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":5758}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5ff0e0f234915ae1457b64436e33c8522b73e585629f112351fd8889c3abfe8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":6044}}}],"partialFingerprints":{"codehealthFindingId/v1":"a417b7c8cfa1fa3a2b614d0ad446a12884e7671f34b95290f72b7178bbab098c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":7503}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb5f7a77aa2b7cf350d797c4baed003d42dc62864e3d06259185a35f0f253c02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/library_prefix_test.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dbda805b391b53315f34e5a861012fc35b6a92914af0b3c1d1bd1f2838193e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":1703}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab4a49afbc244e2590f7929dbfcac7214a94a3ed049ca0c96e1075b90cf67f90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2621}}}],"partialFingerprints":{"codehealthFindingId/v1":"99022746ade23c738d7b3607c86b91e7eb0f39a84fc3aa2a659c946e3daef623"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2665}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e5d51d88ac42a0fc0ecf215cab82edca445f74b27983459e869630311bc13ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2709}}}],"partialFingerprints":{"codehealthFindingId/v1":"783344ba5f1ee59f357c4e8a2ef973c4a8728da43957d44952f41a06065e0bce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2771}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa4d8d776d1d6a5f20f4ca048bf237890f3c4404b8bebb2b5859d50b157137d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4647}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e223a9d0781c6094d3ae1cc61a79fab004926eb5f54537d24291fee43e8bd4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4706}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef68050b78cbb081e7899c05cc46f6fb2629cece299e592eaf5395825aa1e3e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5911064a3797a9ad549714420e3378be793c4e5b0d9bb6e4df59c3d31f53b35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/constructor_declaration_test.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c8fe8de4235cf8d6c05e91a12f127142531e33e129c2a75b4a2d3ba621fd756"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"669fe4219e64cf6dba28ab2a1c04cb07090431dbbc2664ce0ad296441e84f292"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"feff4312a109c89d4f2d24f5c5a2d8dc8a24fc57758cbedf03f666b7887a8f62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d53d9eff06a9176986f7a4a55ca10fba187539667edc40d4f9ef49ef6904f6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb9266787f04d3cc4f3e492f1f0b1889fcd503a4fcaabcd754836a597cdd059"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement noSuchMethod \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"47cff8fb22533c4752df6e995de3af2f11a21e3fb0fad5d082f1626c18607bd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Do not suggest \u0027dynamic\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4535}}}],"partialFingerprints":{"codehealthFindingId/v1":"01f835fad197cae6d340dacd1f2b05c45f7fdb5aeae7496294caa9876ebad874"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Do not suggest \u0027dynamic\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":4552}}}],"partialFingerprints":{"codehealthFindingId/v1":"104b8129f5758ec630e6746e074374edbf6e9fe6e9dbb3e2612fd867e10d2e13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Do not suggest \u0027covariant\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":5149}}}],"partialFingerprints":{"codehealthFindingId/v1":"86d2fb39ad976f0eb7baffb7606e8f4d00b243392a9a90f8165a387ef81cbc47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Do not suggest \u0027covariant\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/parameter_list_test.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"36cb8262b263ca420ae277ce1596b545cbde64c9e2da65655b243380bb40e645"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Do not suggest \u0027covariant\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/method_declaration_test.dart"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3e28c998f7c73f04ae5a6db80ea87dc06c1be685a8ee7346a8331febe198d62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Do not suggest \u0027covariant\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/function_declaration_test.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"5705093255e301bc75e44ad9d55cdd48944987193739913541eff04b398b5999"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Do not suggest \u0027covariant\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/compilation_unit_member_test.dart"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"eed49eff36b7bb7dc939bac450b2edec9ec97bb63dc19d2654b51d70f3b4b53b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Do not suggest \u0027covariant\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/compilation_unit_member_test.dart"},"region":{"startLine":1147}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1286ecb6249f6cf272641d5494811ffec6750f90e23f110a31ef871382a8fc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): The suggestions here are correct, except for the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":7987}}}],"partialFingerprints":{"codehealthFindingId/v1":"16a539d6e1d956738a11c375e1df883d57d1eb1cda3eefc8dffd56cbc168a4a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This is the same as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_test.dart"},"region":{"startLine":9517}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b63709f4a379f6413ede263c709082f477dec3a13717e36ec62f5e93d980f11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): will be removed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_printer.dart"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"eca7dac30bf2175cc658529b29bb15e82e782b008a7df0be810da044b9d80cf1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove it when removing \u0060OpType\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/completion_check.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"13e1af25b8f8864189ed0c5fc9724501d9909b6d2b36b51f6cc1974489f90fec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We should be suggesting \u0060dart:\u0060 and \u0060package:\u0060. The \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/uri_test.dart"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"518b0535f9ba78a8f8617c4b44bf7774315f0f9465c26576b3ad9bfe22bbf6cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Before being converted, this test used to produce \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/uri_test.dart"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dd3ce07355647361cf10a4db8e0fd302bd83e6c3edf72fcbbeca63fb2def668"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Before being converted, this test used to produce \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/uri_test.dart"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"7900dc341deb9b758cdb1229dfb2d6322e852c2bc02ba337f95b2ebed176cd0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Before being converted, this test used to produce \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/uri_test.dart"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"bedbda0b57d40d358d18aef14b5dfb5bdcf8f0f5856935606457fd3e72e1e2ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Before being converted, this test used to produce \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/uri_test.dart"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"a53a65a5a13b4ad72dafab76419404db56a7c2fb5fa8c523c372f2f51bc7e0fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Before being converted, this test used to produce \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/uri_test.dart"},"region":{"startLine":1057}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4d764b68f288435c99f8272fa696f27981be26304f21ef1e8af628e0d82620c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Before being converted this test used to produce \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/uri_test.dart"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"b668ac09b99d7098e47ac2d7397305f4cc74de4481168965fe841bdcb68a417a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): These tests should be broken up depending on which \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"e24c05ece85ce4f13278c9e3261a345a5bd52c68fe318aabb82fb338e5997c75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): This is invalid code and there\u0027s no clear answer as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/type_member_test.dart"},"region":{"startLine":1869}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaa796b0ac2ce25156671aba668465a5e80defe058513dcd86bd2e3b68699c5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This is invalid code and there\u0027s no clear answer as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/local_reference_test.dart"},"region":{"startLine":2705}}}],"partialFingerprints":{"codehealthFindingId/v1":"c55b8b1c1b4fe80c2a097e2d65a41b760459c60f77f787e6f5c877fc207f414e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This is invalid code and there\u0027s no clear answer as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":2280}}}],"partialFingerprints":{"codehealthFindingId/v1":"71bea5cf0c352dbed71d41477f072e5606f8a4ca8013f6e071ffe120d499cfdc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out why there is no parameter information. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4962}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea5797eab496486cbbcdf9bb63b204906cf2cf989d8bf7bf2776d42474abdca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We\u0027re suggesting \u0060int\u0060 because we\u0027re treating this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/imported_reference_test.dart"},"region":{"startLine":4977}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c6cecd024e79443f3516a594690216dc19cd79000f7a80d7f28ed64eb531bbb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): The kind should be a prefix. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/enum_test.dart"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"e09e6df6f4b448ff1fdaffc03ffb106f3118f17d3966506e2233ce92238eca70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is wrong. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/enum_test.dart"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4fb1521f91e800fc7448dc284faeb847dfa4ab05f9f4eaf001f59bd7afea85c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is wrong. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/switch_expression_test.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"b45e7dc5a0839b887cc582c374394f288c51e2c970ecb6ed092e57d4e6b22bb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is wrong. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/switch_expression_test.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d3dc0aa3ac6f498a208bba822ad6d46d1e3164cecbe536699e5552658afe9a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Split into two tests and remove extraneous code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/class_member_test.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc2ee170434d8c245795d15e3ecd26fc59e377391d809804b95d4b374528326"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Split into two tests and remove extraneous code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/class_member_test.dart"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c0c34d01bacb56e1a5cd4ea23e5726d8ae1a734f66d56b5b01f953b3e5b14e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Either remove this test or make it pass. It depends \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/declaration/class_member_test.dart"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"76ca10eaacc628a78b94b6292734c09f98f0129361218d44ef7b86b645fc771a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We shouldn\u0027t be suggesting \u0060default\u0060 here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/switch_statement_test.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7e482b0cc19684eb8f999283c737ddddbb6348419b28c29c866f399c87d89c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Decide whether we should suggest a constructor \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/switch_pattern_case_test.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3c8313eb9264b24bb2c9ab97a8f1ba9ab6f283027efefbbcd9b3a9a1abe651"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is wrong, include only const constructors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/switch_pattern_case_test.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfe905d1730430bdebfe44cfe6c896933d1290d245b1e2e6b9af44a09603fb1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is wrong, include only const constructors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/case_clause_test.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"02d5debc7fdf935ca310127f3e50a823b74ff4c573d645eb0310d03fc4bfc37b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We lost \u0060const\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/relational_pattern_test.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"83e30297a9e2687f90b052589acc2b6c2a3e7504e8eaca2723c48f4eeb07d1a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): It might be also interesting what happens when we have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/import_directive_test.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"50e41469d5e2760b493fb1cb5708f20283b708b19fd6923fd8b9f272f7c6b7b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): \u0060super\u0060 should not be suggested here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/function_invocation_test.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd2953f53a64ef0a7d5a6db4439c2bcff2f54ebac340b0e59d86aa643572e86c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Not clear that this is testing what the author \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/function_expression_test.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8ad14bbca7013d7cd53f8b2b96715b0d0be724c7d1d47a7ae028cbda008bc1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): should not suggest declaration keywords \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/compilation_unit_member_test.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"28b1097472eefaf90404c89f1dffc81c5a654ca388996bcc5bf75e2e3248058e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): should not suggest declaration keywords \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/compilation_unit_member_test.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0d5bd39d1c4192d3a291af236fac5fd7da3f852e63cbf1b6e10eb34a1f50739"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Should not suggest export or part directives. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/compilation_unit_member_test.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8421878e1e3d91bd718c3ab8dcc199df1b5e149620ed576425967c7a6fe0e7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Should not suggest export or part directives. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/compilation_unit_member_test.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"82845aa2a14fe7d77363ffbc12b015c89059756a352fa5ce9ba81c1b3ee24130"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We should not be suggesting directives. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/compilation_unit_member_test.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"65086de1bc858611668f8eb4dcd9e7f454f8689fc78fb6a071aaac37edcb915e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This does not look right. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f6572a1f99508357d08d6c6ccb9017681a5df96d0b30f60e4c80e909697fbbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac5c0aac936e3373ee435c71844933707e0703e1c497e22231cd51ca2144ab94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cb43fea3b9ca6c451129225cfe9760296928a97cf813fffee1de7f31f9f7b94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"3df49ae8c740a3d9aaca17c9e6d6f81723ab2332a463b4fdc1820cc8b2cbd3df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"36de4c066c432c709826003001d20512c2ac05d5fa37f2bfc83b2fa044ef88a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"c095df8203bf97313b187c309ae90ec33c4ef8401a5629a1a48cfdb36698bdf1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0aaae6f783a109a8a3fa7068f8d8b1510cb20bfc0fb056a22173336c44c87ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1004}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fdbf2a5cd7a9633c54bbfcbdfa2ebd80ba9446699b707ff864516328fcf5629"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1032}}}],"partialFingerprints":{"codehealthFindingId/v1":"4af6cc51291fdd991df578eecbb43052a58c20c63d0067994b896cadb16e551e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1057}}}],"partialFingerprints":{"codehealthFindingId/v1":"117192cb342adda9b1ce486e21d86338b2b70003a63538ffcfa56a8524118c3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"6740bbf5423035bd60da243d54122a64196dd7cedcb6c3a1d8e39299374c15ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1117}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b72b0a79ddeadf2ae2dd73b099c2fcb6182be54440c732ebe154ac5698987b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1219}}}],"partialFingerprints":{"codehealthFindingId/v1":"8526cdce3a5e377c0b99457046f655a27760255cdd43edcf501583ca4f602a97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1244}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c78e57186e7122d20730387bfa7c4f5da6d0b8a5f14448c57083ef5dbad0052"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1274}}}],"partialFingerprints":{"codehealthFindingId/v1":"4054f3743d61c493b33bd8840acaae1657f79c5795c5fa8047e046c5ac0a85c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1323}}}],"partialFingerprints":{"codehealthFindingId/v1":"78daef28cc2fac7b0445ba83b3c3e15c75b79260e32b70564b84925018e95bda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1348}}}],"partialFingerprints":{"codehealthFindingId/v1":"3094cfbb5f1cd0682de5a62dfe94663006282b678f2cf5cc804b335462c7b489"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1373}}}],"partialFingerprints":{"codehealthFindingId/v1":"67182d98d12c4ed04d4c1b5df35aa9bc574593909cd1e198c577fc3f1b27c608"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1472}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd625122909cb3226f6f101c92c03074c3a4c92bd48ae1989a6fc6e42fe11a34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1498}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c9a70eb38d2be2ea0c40f780485997ae301504e8d04f69aedf1fa71966153b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1523}}}],"partialFingerprints":{"codehealthFindingId/v1":"38f0de0fac8d938edfdfe939f5dbbc2037059f8f48582f475e0d9bb04764e226"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1551}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0fd37184a57623774263c02d2ed0723e4d4f12110e07ecf44ab1281b2582541"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1578}}}],"partialFingerprints":{"codehealthFindingId/v1":"bca08de888281a3e56f08481ad388d042ac2ad29ee227390d8e39739b0bd7887"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1627}}}],"partialFingerprints":{"codehealthFindingId/v1":"59c0919918de14c48201e8ab8d20414d44f201c405b66fd11b861e2b4505cd50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo02 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1124}}}],"partialFingerprints":{"codehealthFindingId/v1":"a531693944ce6be2b1ddf59811683b22b0ac813a9f79fd8626e9915ef31cfc97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo02 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c285e5461dc20a67a1a68c629274f80fe2d5f4cea3cbe76bb6f9a85cd2026e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo02 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1188}}}],"partialFingerprints":{"codehealthFindingId/v1":"d885d611591ffc1e484ba925a43d6da25bb15ec81b6552fb0455028135b57116"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement _foo01 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1181}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa67586349ce02a63119605d2ed9866214066298372b4588cf0f4be9688010bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01^ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1299}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c730faf4f33d89c9e8cdd7e3097c509992bdb94ffd8770383029abdec8eca5c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo01^ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1603}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bcf6d4d2173fd1333f3ba5101fa2fd574f564324c644f2c28f8d4c839e3af7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement \u002B \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/location/class_body_test.dart"},"region":{"startLine":1427}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8cc496494496331bfb3830d1e8a5181f911767d1fcaa785635aae51b0c3d3a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement \u002B \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"598fd7530cc3420e1b39a7552e64e44d30b06633302cd5875adbaca79dc6a207"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): why \u0060v02\u0060 is higher? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/relevance/locality_test.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e9dca9c8d5c96be50390ee88f8cf566b3b28643b5d4b2b4c808561a4d14c2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement test_boolLiterals_imported \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/dart/relevance/bool_assignment_test.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2329882ef4279d216a7041dd450755be85e852852915e0a4927b9a54f011f1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Improve parser recovery in this situation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart"},"region":{"startLine":1084}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b469c3224742ef28dc5a782972bcd061dd4afdec982ee8b5a2b5169799a9e1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This test does not work. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/correction/name_suggestion_test.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"f616bcd80c8fc22fa6471b5516ca64f70f3dfb959a4c46466bde4a408dc468fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): These paths should all use convertPath so they\u0027re as expected \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/refactoring/legacy/move_file_test.dart"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f0d289e2cc2a334e72fe947876459d4643ce731be6165e806ace4bd288375b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This class does not really belong here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/services/search/search_engine_test.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"65be227c630e3ed63803e34076f8567127bfd0852df39a65591d7020b79b493b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO Implement this library.\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C\u003C \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/shared/shared_code_actions_fixes_tests.dart"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"405396fa7401e2dda58a22534a7ffe4ced51aea377b43304f1a8969bdf90d0f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m$0 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/shared/shared_code_actions_fixes_tests.dart"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"3009c6b9500c89fbe2ee8ac484a524c05a2658afa80abe62b32d98fe7d887a54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m$0 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/shared/shared_code_actions_fixes_tests.dart"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"7202efc896d299425f4c5365ff5f94469af09258bd2b52887ffe47f3c3210f59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m$0 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/shared/shared_code_actions_fixes_tests.dart"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"582cc30d8b852879e34bfdb83f7a9d3c44eff27ec89802618737bb721d2a47d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m$0 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/shared/shared_code_actions_fixes_tests.dart"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4241a641624a0cdbe0f976ff7439f8442c1abca1df90f152f7f1575bb126e68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/shared/shared_code_actions_fixes_tests.dart"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"350b1840df405c5b8dfcfe0612bc0539be22b6d0d225fe1a1e4b11d8f2f8cba8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/shared/shared_code_actions_fixes_tests.dart"},"region":{"startLine":1025}}}],"partialFingerprints":{"codehealthFindingId/v1":"673f0892e650f93d4db55909299e08437c04501f5465c781f69244024b56a9df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"980159296bbdb474ec95250bd93729ba7a5931d44bf0cd894919dc53a41d1cb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"db0ef9491b4a18d8dbe69b3fe5e114ef332c69087bd32b674da7b4d2b827ba38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"438ee8764ea430f3ee9547372a6065c5a0b4cbcb613a2f1de88b8e812ab194a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"65c924e4c96d39b5b82da31545ca1e14cc4c855553dea68427f44b1d251b3aeb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e09dbaac7b6e24ce5103d8e2bfcab74dd6a5fc7ae9d55eef54bb460c1c92f3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":854}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae73eb3a87464419861bd5e93f5df45d03f50c994959265267eaa037ab12c4ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1231}}}],"partialFingerprints":{"codehealthFindingId/v1":"153eaa7105bf95f0eca677d76655a3206be42a76bd0f534502ac74879a04b9fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1300}}}],"partialFingerprints":{"codehealthFindingId/v1":"78cbe6ebf5930cc3ecca0d4ff823d058c13bba84e3eafb798718bd4f855b0b00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e7e6f389334b7313d09ea8c6ec65b62d1b85ea4b09e8814d05d4f3264bce07"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"c26a6bb26eaa4a690ad3530ee92453c004a2aac771df447d01c69fae87bd033c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c39a21dc26357dca54c17ce7c69c9937d5bee564cea06ccdf76670a76fe592a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e49a289c3f0c3b61d9d666752abc7a425d439da6521b8b4cf588a782ef8a74a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4908}}}],"partialFingerprints":{"codehealthFindingId/v1":"55fe655254ebeee3a332ae58c57a8d77384bd24aad50a3d016b6245ba1faaed2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/cider/rename_test.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"df0ea203c66f9475b543bde103522fb0fb42015ffec9518f3abb3e8b1c93f65a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/cider/rename_test.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"065e24d07cba98c8c83f82da54391ef6fc70d1803fb89f3f208261871d7e615f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/cider/rename_test.dart"},"region":{"startLine":648}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b2b4ef15b7d2b9e2f90c16927910f506148c5d19cf756d5a5d31f6c5c5d1c32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/cider/rename_test.dart"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d7a56934110d4260cb57ce25bea704a528e144059755369ee3e37bf47e2d580"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/cider/rename_test.dart"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a18daac82231df270d3ae6935d64731e581d4c7133821d460bf4334d0e07ccb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Implement incremental updating \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/cider/completion_test.dart"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"33d87acaf825ad8a5811c0094a18ec04e395176d939690a1c570b5636ce6cd9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this and handle in resource provider once all tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/cider/cider_service.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"a41a1b2100b118ef9c6d81b82a696996fab02fb8d56e26c493c63de449e6fb70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): It might be better to show the parameter signature as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/computer/outline_computer_test.dart"},"region":{"startLine":1642}}}],"partialFingerprints":{"codehealthFindingId/v1":"87127c0fed4da8304bb36ccec35c142fb0c2821123583a2b47d603933ee35067"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this \u0022const\u0022 when we can evaluate constructors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/computer/color_computer_test.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"39a865a645e0a6cf402b562f59e5d957e33d4d1ba5a03d89bded6e280233bbf4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Results here are currently bad so this test is just checking \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/computer/closing_labels_computer_test.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f9390d98b85842f6f1e07974c83b6d95066d68893acc975929d829d267a006"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Use AnalysisOptionsFileConfig \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/g3/fixes_test.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"3268ee37ae8f80be84d5953e58e3aaa0ba3acad46b91d2776a6ca291c8aa61df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out outlines. What should we do when merge \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/plugin/notification_manager_test.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"663bf08563c09d2049a872f022175da080c9d33dd355ea5a28c2d99798c68515"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out how to test this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/plugin/notification_manager_test.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"139547bb76b9a3caff0d54834b3b1a4cd539b21e6958a226d914708b0f1b793b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out how to test this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/plugin/notification_manager_test.dart"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0c693737965a20c9a5800222d3d3c0c97c78d3a833fee1037381f09da21746b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out how to test this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/plugin/notification_manager_test.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4b6860bd8988721be60c9dfa277082f40398ef3257645c5f3162d21fcf139db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out how to test this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/plugin/notification_manager_test.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a6ed1cad1b600f0803504edc215f5a9e88a5107a163ac12a11eedb192b07a8d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Replace this with a constant. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/completion/yaml/analysis_options_generator_test.dart"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"f975cc764eabc7e64936946344176f9e9221235841efbe1db3196d2e4065dbf6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/assist/surround_with_try_finally_test.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"6117a749888914141a5dce7a7964b25094aed979e648733ed16c092734202a5c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/assist/surround_with_try_catch_test.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"290ff65ed62d76d18221526f1d43d00da0a593bb3208ff8f63d799dacb003695"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8974}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd3269fa9d020367c9ec3c0727d53a53cc2d29d453487988fa213ac2c6df4c23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): It would be better to keep \u0060// comment\u0060 with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/assist/sort_child_property_last_test.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"61de346a57fcf6ff9a1e1b8e1af83fd335b19f77c09d5d61ed1470942127134e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): update for SizedBox \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_sized_box_test.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"6845b41d012f4e845e733c066c6eb379752d206d419f3015ebc0bb82139883fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement C.new \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/assist/convert_into_block_body_test.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"856308dbaf7350c2539c93c822974e51eecba25b0e8d4b400a858122a730e17f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): two diagnostics are produced but only the first is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/sort_child_property_last_test.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee7184bd6d605313b4be1ac5c3a705c966ad52ad161a0a0a40978b40c2ef7026"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): I suspect that the lint should not be generated in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/replace_null_with_closure_test.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e972e7b1644188280c49aaf215e58ce5a3f88d8f5e796e1075a837abc5c7cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider supporting the case where references are limited to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/remove_unused_element_test.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fcebb153dba9c513dd205203c50f92263a715c695d34d4c0d73f2a117e17011"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): CONST_WITH_NON_CONST should not be probably triggered \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/remove_const_test.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbe5c99a995250c662cd1df9bd603f4420c35205e4a4cddebf44940ad32a97ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): CONST_WITH_NON_CONST should not be probably triggered \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/remove_const_test.dart"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac1a98764bd7f7c8ec3732e2af721d74e21729b712d18ddf8f9973952566f483"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): CONST_WITH_NON_CONST should not be probably triggered \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/remove_const_test.dart"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6fbb6ba32eb3dd4a1e70ed2e0e55c18ff022e38efa3debbc8b7dee510eac15d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): CONST_WITH_NON_CONST should not be probably triggered \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/remove_const_test.dart"},"region":{"startLine":534}}}],"partialFingerprints":{"codehealthFindingId/v1":"772fbe976a43abf3b9ece5cf5debe01059fd4c455e50ae65af09302db5f91c7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): CONST_WITH_NON_CONST should not be probably triggered \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/remove_const_test.dart"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"871f8a3b9e94d471e1039cee4f484fed975c08f3643dbf3392d2387418bd93dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): CONST_WITH_NON_CONST and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/remove_const_test.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1896241a0be59c40029d76bcfdffa62aa4229ed009bd58c90415329e244999b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Move docImports with preceding comments together. Since \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/organize_imports_test.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c976c0e8646636520d382c6168f80194165541226cc278d75229e221f5c3bbc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider special casing enums to improve the insertion offset \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/insert_body_test.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"4439dcf2651ab97925c13bb916ebbccf0a5a17f646697dd5759b230de8c2b3c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(osaxma): we should be able to prevent creating the file in the first \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/ignore_diagnostic_test.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f9dae38d2e79bd707690cc19962c206fd3eb520882fcf658256122d30aeadc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): temporary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart"},"region":{"startLine":748}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06400d562d8f9a0e30fc8ed5d37df2f9c83d298f921cfee1b8ba5cac3ab378e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): temporary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/fix_processor.dart"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"086fe14ba5c532ea9282e9ff0f18926f19bc8a9a9f4df85d0e52b93bd28e800c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): update w/ a FixKind that we\u0027re sure we want to support as a file fix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a125dc54d03f6c155e1d08b18228598a65bbdf16243663af415acdec2c456a74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): find a better way to verify dynamic producers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"c097dd509e2c265a963b98582c71d32b0d3938fb774d5dfa8e9b23fe02353036"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): add negative tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/fix_in_file_test.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"da93cde1599c7d9d6989958896a4a7e7d7045d51abba938fb736778263df0ba6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement performBinary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"c97efb2ebff1aabc457318a41730474b2dbbca086fecf9d63f84518728ce782c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement forEach \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"a825c50b725f703a3151e482894a6ad00e692c25bff714ddfbc11bcf70386268"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement forEach \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b05803eb96dd9acefc65f41052adce366b61fc59b31be3875a4c69d7d30d9b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement forEach \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4616}}}],"partialFingerprints":{"codehealthFindingId/v1":"542dcdab2782e1dc65144d8da352cf046ba97f6109dbd8f2cb6d321765066104"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement forEach \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4639}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc856332e34e1bdc0b70dc53a43a1e8e264a9077c1b1df159c50c12a808a88c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement iterator \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"1305df151baea0b63145d375fbb9a0a8cb6978e8509b064fa4db281fac6b32ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement getItems \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":323}}}],"partialFingerprints":{"codehealthFindingId/v1":"a50d82bff1ab98a26c69c55e7793119bf6f4d9c1024ecbced882bb8d95ca3d6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement g1 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5ed32fd61ae9cb3d68855f004debcbf39f5ca14c711dc988a9ebde633b9e07"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement g2 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8cea20e3c2e23c1ef5ab83cd32d2cf32d8e23bd541e56362f4ee8a13fed8802"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement g \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d09ec448fea6749ac6474c152fdd5bdda3c65838b4d9d054eefb2c9b11887c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement g \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fb2d2df0272e9e2492d02cebcd688855033106d94fb544ffd8fd48323edf43e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement g \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"89e595a56412420d73e56e9467ed579b960e73a39a799a8528804660a18a5370"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement g \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"f20ed21a598f6b398825c16fa827b652c359fc00b28cfbc046d44b098000d30b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement [] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e0e85c8e1e87451b076844a9245a76a58d0965b13377b859cef82de2ed4baf0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement [] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":946}}}],"partialFingerprints":{"codehealthFindingId/v1":"df6bfeb55f8f4b538264693e9847d6d997337f5a710498a2d1e91cf626a6ec27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement mb \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"55dcc1058a8b87c696a32893d1882fbcbf48b1877b1c3c91e9691a73fefa6d47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"d318220b6faa2e208242fe00eaee54a7d5fa8860b0378660c63c23a835eab4b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"e32042691fbabe370744195495af60c30c181571c24e5b917d5ad7eda262c05b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"1544cb6a0480154839eb560fecdfa38660b0ce61a51b05a7898256bde5d4e2cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a7d4d0b33b7ee520cef521131e48e95870ed2531f48db7c875d4ade5ab3bdc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"425c66f4f141e40dedc2d2409124b2adc8040d22f73c7f862c82c377f01295a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"78eab7ef373cd23c00527a882954488046f557539eac5365350e29773b94b539"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"16b2ede23d43a6eed42191966119f4099b2665dc8dd6cecaf21225664e629e17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7eff45ab20cbe4dc7e4d2cdbc42b6e5b1ed0e54834fe771799319b601526517"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"bff55aad1408d4a7f96e34d19de9fab6fda6302b76229c7f302dd59f8993dda2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c91ae696a590fe8a13645b80c060520d4c2fb2ce8e29a25542068f8decd9d5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":918}}}],"partialFingerprints":{"codehealthFindingId/v1":"10f0db70b1a7050f674a0f6b11809050c8d88545a0a680f8b4b36a2177a9b3c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1164}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e36fdd13cdad61f3d60b6117f006eabb8954d2e0b5a1c0016e3a0f7f241234e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1198}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ebfc8c02397bc961880945e0ff840f20abd27be917fa2534707c516186534ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee0bcd5cffa53e1eb1bc6a772262a742c513092cd0d385ea9acc1e07a090af0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1350}}}],"partialFingerprints":{"codehealthFindingId/v1":"6078145547d340e8c2cd4f82c8e5cde6bf3d84668a9d14b5f5056b519a3ffb2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"687e5cd2e7cf98dc326cb94de5b32a8710900620ea739baefa830ff1803718b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1429}}}],"partialFingerprints":{"codehealthFindingId/v1":"12fdba789cf4cb3288bf3ae1c5223d0581b70e7cec039087a82fc2df3e37aa54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4753}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d661a0a47818b46115d5bfc1e6d563a15cbebad1dcd504985f0a2d79ab4715"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4776}}}],"partialFingerprints":{"codehealthFindingId/v1":"e970cb3b1a33b69d8f44e2a0c8cf50c712605403565023bc2cd33a12f999f223"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4798}}}],"partialFingerprints":{"codehealthFindingId/v1":"588c350a2d48cb9014508c0b8045e3073b9be90b0c1d0e47173bbfccf174c0d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4821}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aa5fdc2fbc4346cac078ef0bdf28d301068702f80c0827e308eafb9bcd549f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4864}}}],"partialFingerprints":{"codehealthFindingId/v1":"dca5096f9d4273d9a2169ee00c089335968e9168f885e79dadf48e46e1aa830e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4887}}}],"partialFingerprints":{"codehealthFindingId/v1":"6da76941c8aa158ebef514024f3e9cb991c1ee30c027457ea4cc88c416168f47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4931}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba4ec658549c49e897996648678fa67e3223fbf81325213bb93bbba9add2d535"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement foo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4955}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1ec1f41d221265415eb01e911e5cf3738296dff870208332ec294dd07e035d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement doSomething \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef306d78d4339f9698899fc1bf1a70c9673a8067a7d030c86c3fe7244680fdc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement doSomething \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fd8335aefbcbc347e5463b75f51425a6f2c47c648caf8597126ad0c1ad34add"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement bar \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff1a726ba89189b9903b89943ba71b748b5d840f1d71b1ee60c3be669954be2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement bar \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5803670918547a0951c2a9c7969a0b760ae8ae033b876c655bef0e6ade8759"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m1 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2aa90e29c3ce0bc648a303f8242ae8a331a785b7cae0d8a54441355c12ff949"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement m2 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"5270175c5cfadf5fb488309f69a2a1078f128593e73985b78506d13d832803af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement closure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d85a01cead9e8b11d4824abb7a99fc7d6b76037d8d1e03d7700b8324560142"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement []= \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":952}}}],"partialFingerprints":{"codehealthFindingId/v1":"9300a061b4a1138eac47a95a9a5237cab4a92f0b1d512f074c47538a44bf3abe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement []= \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"735623585c19c56e04400247a9b537b30ec9ad07eb999f244f342060d7a094d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement s1 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4393de25a1649fadbc38bdb620c9c153cb1bf382257e48b34b8b9d133012861"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement s2 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"4631a7e34c1149f32add85cf1d6b28702419471a45f6bb55d8508a113942f130"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement s3 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c930255895ba91e27e3b8fb89bbbe63d114cd8a3e65ba0b7bc81b481eebcba2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement - \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1035}}}],"partialFingerprints":{"codehealthFindingId/v1":"91949cb7e85e1c50845cf432e4ce58d9aa2985bece6d70ebfb40dc05631614bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement f \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1135}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc78e0dc88a5a90cb2f9fb36ba2329a72731de48037e5ffe1010029fa1ed4533"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement f \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"384b810a3b4f7d0cbd0f86ecc4e902f468275302573d26fa0b2d25ff37550179"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement f \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"040e06971e59b659881d6994c4a70a0c286a636b2ae63c376d0b2455f48e2e18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement n \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1305}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fbd2e0d995d650e81ea0b998287edbc95e4d6302c8f59fc193aa83c55f5dca3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement o \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/create_missing_overrides_test.dart"},"region":{"startLine":1310}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d864b427589c016aed2525fe5dd243ad721cf3c5b24d6075348eef25db5aca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user) msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ddb211412f37a7a2e07b550d84a504445cbe19059fd9322c19b0fede5c590f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user) msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a19692ee80a3a6dc7f74303698fe4932aa365b0a4b9b688f589cdf5b7371b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user) msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b6176aa15ec959b0c1ed23118301e19dfaedf47dbf6ded1f630699008b6f099"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(user) msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a41d8f445376e4276b957e24d0b587294569c42a6021bf6db03b9f60c521cac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4facf1803b0014f637daf6ade5c69a45b418206dbfe5a248db83517a966f186"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"29326a45cf6ef82aea36addac0d0837f85d4121f996b7bf4fc0ee57853617b60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"be6051f80395da29c3342eb7bbeb1f308651ee13463c55845d92798d191f7374"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"da2d94f5887a851ddd3412b897658f75cb42fc57d5a428bc309696459b3a835f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5954759781e0c466da76ef8a9f12bf6c1e285ab5ad2e85fcc198b3ae4a233fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"69d5bc30599aa973ec01c9548a5ec5b19b8467df9c07fef1a3dc5c48fc16fea7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8d9cdd5423d7ef998bd078d11c9f64c13d85d258c9c1e184e2790bffedbd51f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"17e32171eb5182a36ab7480e61d420f04dc3776def42e4dc853a4e96767198d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d28715fee966791f461a37b46fe037f9bcf83052c26bf4a2146e438e9db7d1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b0e4a581fcfa2fb7c0c49da63f718d4197089c029e7f8a0f437efdea19e411"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"6361490f6200ed6e743683e9c6c746523cf9d70e646eaa7e8761798ebacf0f23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e937aaca7001458f5d4b122dd715c9ff511809a9d5b274a3b8facdf6506e0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(user) msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fca9bb3e8916a968974314b560efc61593ae472387ca9d30aa9b18a48b1ae49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(user) msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad44f4fe855b5a44a7108a2aced67487ad5f270854489b3bd658db03d574438b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //   TODO(user) msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5d15337ab6b1d1b9a95cde480ed8546f9a5268344f084949daf4eedf29cc2da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"62bc533af171e48590eebea5c86477e5e783048f3ca2bbf97bcebb902726a7fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"8447d1a0309ae48c1d9e7c1a3a9bcc3de86189c8f53c684c6f8fee0d281bf7db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(user) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d2ef9c6e41b7d1670d523b6d0274083405b4f2b5761fa4bfa11ef68c8d525ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (user): msg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_to_flutter_style_todo_test.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4b20c36db8a5632979cdd3cafc50ba70faecf757a5df8777f57bf1564783289"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"25b82f2972108244dee1b07294fbed9b8635e2e42db0d26d0eec26569d657b71"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement set \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/convert_into_block_body_test.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4171c2531833689cff38f6e518a7c1e67a13f860b4b3c360f811287e5f9525"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add support for suggesting similar top-level \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/change_to_test.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"681289d815d3686fc08c60eca1f9646b495debc6864a689873d1a8b661135023"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asashour): consider inserting the named argument in the same \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_super_parameter_test.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa97d6d0ca3a6b7d50469c981af5efcd021cefe3a9c723063cfd1f645f75edb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asashour): consider inserting the comma at the end \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_super_parameter_test.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"67eca5c761f0620331a7604fb54caf35f9bc2044ac26529faea839436f80016a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider removing unnecessary \u0027as String\u0027 cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_null_check_test.dart"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"b59264c214aa952be2752a7cbca2092f77c14f709190d6bcf2ed552fdfdbf667"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e8e2611530558d40ea8d9b48ebceafaf2aaca3e1520b579fefadede064439b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d16f988191fb2bc55effede5ea161d940c03032f69997cbde399d3c55af5ff83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"42e434d726444b3c17b27144d1751fa2555782e748837729f24e9cb418e3aaa0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ea1d764c554f64a85f965633a0543ad137636585a213f051915089208c51256"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebfee36c396d6ce29c1955c2b82549886eed35468ef468a9ecef598f509b4550"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"b39c99d64b80e71047e51e67c0846680d24ddb24f12d4e6b959684c487d45020"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"67592ec642eb5e1b52f6dfdaa4d47b018d69f03a16d88ccda8eb820316417908"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6e9cf01452ecabc7dc3afa69e1bbc01fd94bef6234dcd12fcd25c57675ca710"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f5fbcb27efa42b479eee1d36d0fa0323548d010434d6b2aa5a999e895e077fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"a34986333632d6c9879f8388ef61cdaf58a1ac609152d2be713d5faf19401c44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e665456b1ce4a284e0a12b7f67fa578fe95da4ab97c19495e69272afa0c8a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5bdaa4d46231a6935f998971a36755275880ab3ba7d71bc728f12eca8a8f32d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"e72b8dc537249f44c83241aaff38529a65285b4206c26ce6279f6c07ab94cfb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"a784f238bcb62a13f1630f13b20668ef83dccfa8d12180e11a0a0d16bc18b259"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"0efe9918c4ba99540e5e369df4ac0ad2c32bf5db5db6af5c390f0e164592715c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"034ecb6015ee6e7465889bffbda5eafc7d2ddc7cd2b6bf7f51f9c00c08ddae04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcc4881c381b13e40f32f34b319bfcb25c3c67eb8aefdd4163bc53ff695ab0dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"efa165ec35d7ac1a3cbc625e46569271df65bed71de0ed3a72c69b1205a16a58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"595b9360990d4de83bba0cb403f638a689b748e96a558b313f6af2afba1388f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bc686f921123671c97576080f1edcf9b2b96eea85b9fb702c5be066951afed1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"8355ba36b5cdc22cbd9eccbce862f6238410ca8497f79d7d14e64e7d2c4dbc2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cfafbe5afae9593b0a81ae0933c72091b24c3304dffe69efc71f7686433ed23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e36aaf5d348e87f0538dc1f5efca7b09bd212e6708655d7eea1f0245ecb680b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":406}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbcbb91a3d69d3cf070a3ccf90278fbaa38b571ca1cf22223d2dc49682e50d10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e2a610c1e14d8773f09244b6fc5a2805827de0573bae4e2bb9839b279186680"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"42f00ae7c9f01e42412700fbab65e63c682290a3d4971fd46ca290ba27b104ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"afef5ca220b4c01c25e4039006a999c158c2bef96ac659c75ed8a36496e34808"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"f829d5a6b7f10495ea5b3428b88339db2fcbbb61b8c4c69611c643b93b8e7f95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"41c1a59427e0776e6d327b37edd544fa6a863aaea3b475ef134560533bdffa69"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"24a8fb319e42e40939917333be21608035cd99a10f8223f1fa972ef844fe6fce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"49b93a01516094374d7e373223ae6ab923a0328fcf7b97e6618e54ca305fec1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"c67334bc858a8ff733ebe0ae3daaa60b92909445398a79d351855a2ffcfb85b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec0b2b3f7ef3d0fb4874266a8c69d5be7591b6e3f450c01c9305f0a9743a5f3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfe99a9265e8fd0017afe15bfb5de66cfc1cf2d1386af39ec0db51817d55e12d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"eafd0b7b3cec00a4a2213f639e17c223e9d3adb85aaff8a58b93d38499b32ca6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccb9631e30b3b0cfbf159738cf7ea8fa9e0e7cecf4b6e223bedc7c4f0cc7ffd0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6e01a56b9b62dc85adf2ac6241465a65d6851a9a2bdddd5563398d645c466e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":639}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3e8d2efa1a208c9437bfe03817ddf800c872d72d07b060212f97ca1cf819068"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59476f1ffa98af540d44416cdcfd6556183791434d001a25cccdf53ea02e54a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7b33eaf99fa808e8ac546b3cca81ac054e0d517926c09160e913a5cfe0e46b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"a90aec6e677ad4bda863522495e03599400f27b55dc272792f63e29c5b42f82c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"73334ab13d74f908c04427ef1a32efbe45a11b0b4382b8e2e2b5a1b32d4b2f4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"28a09423aa2f0cd542f45d7049c2b3d30919ed59af0b9964705b117cb527c488"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e6ebddc9ce3ac2b8b2b2df30038dd56500d2ae956818004bd66025db7c9cd9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf691f0731338ac3e1ef42db45c1594a8e5bf08976ccac023f704b6a9da25f4d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d13ce28fb97e1d20bf41a68b73d5bf2a19c253c50a9d5daf6f6a24dc1ce9dca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":759}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb3ffead4be3270ef6df8ab35a58972f2ac3949e78f5a5945fcea514a505d0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"743a52d18cd420a481e388019a56fa754424fe858b695b7f2965207ca63f6a1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"b912219b4c644f0bb058a292a353208934b45b7e24a036c0a596d6b56c499a28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c7e4831ac3cf3ac89ec6f76eaf9ff18199e2664acd36348a2cb042febdbb544"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":825}}}],"partialFingerprints":{"codehealthFindingId/v1":"35a24bdc02ff908ddad83d1f3f1181c8b7502f66d886a045938a1a16780371f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a6e3c0fb82b69507842394c3a02ea610da6a2f2233d9677b839ad784a53d4a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":855}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6379e793b8092c94e9e985abefc2de6e070d549a510a8c759ebfdf449a0d712"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":858}}}],"partialFingerprints":{"codehealthFindingId/v1":"462aaf4fd74b04bdfa21aad38d9144b6541eb715a20d1c39097740dd8eaa1555"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":887}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3e334bc073ab9fe39c14a0c7a395310a4e693431fd58452e783a991a37f39a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"88dc9c6d6795dc0717ee5347852370496419cefb711c300ebb4b249bbbcb3bed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":893}}}],"partialFingerprints":{"codehealthFindingId/v1":"f699bcc43fd203e3f92b1efcf04c205084b3496ee8fb52b500b0b4162168eb39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":917}}}],"partialFingerprints":{"codehealthFindingId/v1":"be46861c27d7d96629053c16a01a0a3bbbaed7a064b5eba5ae9793435e86bce1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"a25469b8a2241f192ecaab0cb14f032e321843c73baa2660d30cf08ecd516e3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e78514ef57abc215361ad8e66de670e6faeb031f3aa98bda8a4d96fdfc7a01d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":947}}}],"partialFingerprints":{"codehealthFindingId/v1":"beda5b78851ee1bee6c0519bed749fe96eb349979ff7b29197dc5298001ad9ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc939828701874f6bd8adc727214bef5e069f8edb4b0c59a5ef96dfc0ddc194a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"27f5a7c41a918d700e18b8813e48f6dcd86a0f0ba3c8e4ad7ade3077abe99e2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1006}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7218138b0be354b630bd58e6e3693dcfc75fbf124c2f2b196b0b0e8ecae3a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"846d0f5cf9a9bdc60b851f07e8de5afdff31f3630c50ba93784f6202e2bde45b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1036}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d5db0299e6e511cc7bbb14d739c5b8c841b404a8dfdaca515a53db30953511"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d176dd4c4afe90f10e2afe9d1d644ec241a5dd5acb42f6b1248d270414a39ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1064}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2661e016a0a69320b24fd51952d5838b2ae3172a8d2631d9aa89544f4f46988"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1067}}}],"partialFingerprints":{"codehealthFindingId/v1":"a01c26a1a7e3f9a7afed933009e65b0b6cd80c4af466563cddad2c77d1f361b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1098}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b41cb31d026a870389c2cbd4f0337c499bdcf0b65a8a0ecd54ca34f01f75ce3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0a4b0d01d455c4ec7f4a1238c9087867ec06c988c8e2612174bbda41a25a9e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1142}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc7758dda59027808cb7adcd69fde9b996cea7fe5cd5287844ecb565ea376621"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b670cef8e202483943208759f80d0c9de89146da0cbddb312fef4161cf513bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_switch_cases_test.dart"},"region":{"startLine":1177}}}],"partialFingerprints":{"codehealthFindingId/v1":"326d81d50f802a755c27e5687350137ff1e5325855ade51887bab4c3f9496640"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a0226f3fa578fcf5103a4d0f5de5b6c0c0f97f033b7b9f2c1327610518da0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"c64b57e8aa7b311da5386d6337226ff1292e8ff852b71c738bab6c76480f0089"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dfb968b6044f6c12fd46deecca0ccf031115535f72e62f88fbcbc06d68a46d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"444ed928d229da36c660c23ba46321d05e38498d68e62266a0b60c819f6b62e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe65b03c65d86475abc1e90471eb47b140d104f324bb62f3ae76320bd9246b9b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be42b1dd3ea629376d9370f6d519e6bebd9b269c6638b6ae3dc20ead12d9d6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b9b54970576a1ea9c4b52f3a36348c2c599eb6f69dc0a7a7359a0789d0dee7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf7a13fe30a4f99c1a00567a3044af65311d8026c82bc8fd34d414413b548e84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"1940b9e81c991661415acacf47b0991f60adb09517c798658cb4e1734fd7d0fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb36e2bc15fe2da5d044ab825c0e0a36d59ba16ad3c72b01f7abb2780b6f12d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"90da3fd826ef9682045b14b8980a0dbc72862736c7b4dc50a5e68486f6273223"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4b3cc1ac6784d7bf9df3df44c6190c1c339dc04e8dcc00f25cc9f94a462c060"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d71080a2160e311fbf087529f5bbf6f7a38e4673b1b3a9916096d0c53e5ddb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"23091731ac799c9370be47247bd29df9118999262ec5525467aa5f05f7099a85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"68282c93e3ed360ca08c6ac792472f85fc2e9bfc90e7760210013b2b47355369"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa9c5e9566a71a45962a5c85e7de5d9ed300964b23a56a77d35301c8412ce6de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_like_case_clauses_test.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"4689afb92a0e94aa95c74007e3e986954ae517fc02c9c8f1dc2f2ecbcfa5cd9b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa1ac4bd15896a5efe16c3bf9e21ae233a49934f969fc4adc4ef5db6c971e5a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1b807f06ca107b65ff43c28498a1f0ed248c3b2e4c754ad46e8307937876e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb32cc2b01bcb374247a6ab60bdf6a60fec4bdc43a5b99f25296c2f50052c50c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"293bdb0f5e45599939133636d9e394b62bf54c00bca2eea9280181cc8f9870fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"1139b0e2368cf38cb0f4ab6e82d4d38dc6a90b6750d5f6c830e13850d0e7388f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb65b1e71dfcef70818b68aedaccc5871b0b8618acd280a87f008447ae91d8e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"68f1a2413890af72d7e3286debf076b1de91332b5c2596a70b63493761acdbb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"2414282d710b65686974324c02b6658247b333ecb8274cbf45b4be2e3043e5b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"2035880d80ed872a38f7aaca14981903ac4cbbc62684cc4692f815235eae60b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc0b927c3cb1b3c2520ac4a843152f46bc9fffc8f8bca1c332c1455ead52c54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"d58cbb1a8bb88b8a3d26ee819b127651570e3b6fbc82c700a1db1f9be8b5b876"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f51102355c1ff508e3b0b98cb61ef50a325d773a1e90994b189c960cc84ad50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e3dc71f181e6726cab263d3700ed712a4f71afe4d8bedd8e9b6e243faa5f81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"98da82ab0b4ef056e45939aed711f1ce319e7060cd1fbe19a80d91dde96a08b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1af3df14c43d70a9e1f1821e1ea62bcd11f03011481a005fb74de972bddce15"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e1eca5a4c51a018140440928c8a51ea379335291ec9eafcd6398070b0a1ff42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"379c20e1e703e4479756acc74c48a497297b7bd516587944ed434537fa2c79a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"93db6acb97b5793db7b4656c07aeb7b190c49431d9c9b4451691d50b691372d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"a835dfdce13e289261899cbe1ce1a7f4c75d44633930b52a511111fe0d1c7596"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4e4829f14749e1d9a94062b86e1cb2f1955f15a96afa12618bd44935f29a77f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"55082f3b067f81846037a08a85d55a00c4f66782ef2c789273cce7f45c35c6a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"95fe8f78c5180c3ea1c2dacbcb158734fea19d5c27c9cf3cafbd245a1ede71d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"286446b33b3a08244b1698ddf74e353cf32ddf21c4698a6f49dde54f52338f77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ecea0932dcc8c79cc463e388a4a7e932c0bc37af1f08b04884a41cdb5966684"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"909737af348686f6ea8fcb06af48422481db86e9e8387a6de541f854c8283e54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba832622960be5bd6b0d3278a41f77c1c44d34e99a57b20b63878a0301075561"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d8d2358e3637b2bf832d12fc6ed09dd126c90374726d72ba4602ad9476d486"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cc5fff4a1cd6d4501c3d9de7aa5ca7a16466d916ecf87e26f01242b6115d43b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"7729647c05572ae513ba60a8764e902faef8e8006bd5e9a57172b47a91f66498"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"e16096c2cf2f2112e46a1488cd5a12267844419d0ee136aa29ecd282b3db1996"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"749c8e8ec259463be5ed02e0455505e87f664dc4163ea28de4361d64dbcc9de8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d8ab808534e393f5ec5fbccf14fe4d52e3e9646749eb0e4f632c52efa4d707"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_missing_enum_case_clauses_test.dart"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"343f8dad3dfcfcdf551a2c949c19f42d5e148a2bfd59528e43e5cf83890ebe3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"faecbb83f2f477c6bef29dfc2ea0ef3051678f49a9eb1990fbe0aae38f3877c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e2a5f35224f6d9f0b34ffc9dd805382643baa31e3aeb3cad9b9dbf33ce9bf7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"842eb1af80f8d8fddc8b2e4cece507f04c1e8b1f91f8f6add8005c72e0336ebf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"15eec7e7ae6ea43ddee9815fc232c95a49df4b802ebd0741fc7434c05970c0bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f72aa421af30b4cd9f9efdda48babec3abbee73690c05d19d0514447fe1d6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/class_hierarchy/class_hierarchy_test.dart"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"8904ff8001ef9d52c633262492c5e9b171ea338846668a13f2fc0b6fe18d6c82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider a test for a body w/ no CR \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/add_diagnostic_property_reference_test.dart"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3709b3c538ea28af8f406ae9418f6c2135adad3cdca635a9ecf5773ca9286b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asashour): inserting imports should remove initial blank lines \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/data_driven/replaced_by_test.dart"},"region":{"startLine":1135}}}],"partialFingerprints":{"codehealthFindingId/v1":"871d634f76c40324642f7db092e21b14a0d21e9c6857be156b8d5f6ab1d1152c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asashour): consider changing the kind to \u0060setter\u0060, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/data_driven/rename_test.dart"},"region":{"startLine":1608}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d0adbc4bb840cb0c343040141393d55e9075420fea2297327b182c5012bc49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): We\u0027re only able to fix the \u0060.new\u0060 with a context type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/data_driven/data_driven_test.dart"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"10df95470401226cbb68e4b5c41fb1b1523c23cde362ac3d793d4dfc18cb40d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): ReplacedBy should replace with a dot shorthand in this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/correction/fix/data_driven/data_driven_test.dart"},"region":{"startLine":1847}}}],"partialFingerprints":{"codehealthFindingId/v1":"38b993203060383f65694a4c2ed395d234f5e87f9a53592b77db364734107dc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Track down where this extra newline is coming from. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/refactoring/move_top_level_to_file_test.dart"},"region":{"startLine":1607}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d262fd66dfc52b21108e538ae3f854a4bff7853bdd869c45e67b2b8bd676686"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Unify behind \u0060testPackageLibPath\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/services/refactoring/convert_all_formal_parameters_to_named_test.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcf879fd94e40a0ae7955fdbfb4b2e10258d4e23cc2f1b74cdd726000b86fc36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This needs to move to the analysis_server_plugin package, or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/utilities/selection_test.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"4640e58de01a3b183f0a69e4d7a457eee6b95b13e6cd5cfeb8112a2c8a684795"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): When the tested method becomes public API then these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/src/utilities/extensions/range_factory_test.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"493408389076fafd032586609ca1ced4f84adf931d261388116e2b7083e51b50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Randomize. Sometimes add zero (0) as a break point. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/stress/replay/replay.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff70e7e52ecb321974a6345c3790c26d58c61ffab1f7330b2625c312c7d962e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Break inside comments? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/stress/replay/replay.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"5145c7bfedea02cd3ca7baa63c77bcb03c4263af0068870554d847d92e135fa1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Randomize. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/stress/replay/replay.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"864b59410b9048e963bc71ca524b02e2607dca63f4e5370f025cea0da5015b6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Randomize. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/stress/replay/replay.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d9a85e1c6c9c1dc9729f8af387e49fbf683bafe043d2110259124e087ba9b4d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Get the list of glob patterns from the server after \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/stress/replay/replay.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5623939adf1e130914be0e0a1c510367c2715179b8772cde0ddbff16c6b262f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This needs to be moved into a Zone in order to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/stress/replay/replay.dart"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"c290297937da5e713b4afe579fdbc53e1bd95617b30569f0438d7b767e38aa44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should use the path package to determine \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/test/stress/utilities/server.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"04429f90360a3273743f1dce9b35c19076ee70ee4e4ea451646b7c3552886e45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Support multiple packages which depend on each other, in a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/generate_testing_package.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"e813708c7dc141be7bc33e39f95454f2f1378a5ec15e5aaf0f5dc5887d6111b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Make the \u0022connectedness\u0022 of the import graph \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/generate_testing_package.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d1fb068c9d4cd66cf5290e483fd4f77dc0be65c79b106cfa3baf2251cf3896"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Option of passing --profiler \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/language_server_benchmark.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9dbef90327d898851108674f9d1931c64dd166ea5fffd5e8ecc3a56db9039e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Option of passing --profiler \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/language_server_benchmark.dart"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"59b7733e39117e244ceb3f2af3d54291cac3d633cbddf3ae62a5a055cd835405"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Option of wrapping in \u0060perf record -g\u0060 call. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/language_server_benchmark.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ad9b7140e73397357d6ec7d351f399f79b25b80bf116d415e7fbe1fbbc8d0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly send this - as the IDE does - too? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/lsp_completion_after_change.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e2a3568f87f8aa6772fc71bc8405b428e7f933379e1e5a348ecdd5f3556f30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Wrong offset for the period. Cannot call beginToken because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/benchmark_tools/big_chain_benchmark/files/copy_me/copy_me.dart"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0584761e94bcfc9b89a82897e52d6b80c1986accdeccfeea7402fff13abf47c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Commented out, probably does not work now. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/visitors.dart"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1baab5805156d3567bdcfb3d279715ddbcaca142bde10d4e2197b16855bd7a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): If there is a mode of completing at a token location where \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/visitors.dart"},"region":{"startLine":860}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f5701e998151fcff81c6a22a1139dcd83e275cbb1cc18791bd46b1f751799b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out whether this method is needed. It seems \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"d459d67058a8c4bdd8dee5308ee9a9cefec451c5817e908f9921af56529ec873"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this if the language feature is accepted. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac1083b865b58ea79244207c76c26564e1acfb19313f4c6a9a489d3160aa2351"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this if the language feature is accepted. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"a24804070ef6a740ffbdd5885867f232da93c3f9ce2d0984e8d2a5ba2da5beb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this if the language feature is accepted. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d2b3d7dc31c916216b02d3104123a41334b01803bacd7ad932130c02ea0f931"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): implement visitImplicitCallReference \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":1277}}}],"partialFingerprints":{"codehealthFindingId/v1":"e728b82ee5427ca06d02629285fef800b4437eaeff6b246ff3f2edb7ac23ad32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider splitting this based on whether the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":1357}}}],"partialFingerprints":{"codehealthFindingId/v1":"edbf5024394fe18ffee30c8d125e662c717433be4d88c174fe9f37f78303351f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): implement visitNameWithTypeParameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":1561}}}],"partialFingerprints":{"codehealthFindingId/v1":"251a833045cba372515e60abae47d4f51162047624ad4ba64514e90958626c5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): implement visitRecordTypeAnnotation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":1757}}}],"partialFingerprints":{"codehealthFindingId/v1":"caea9d5710e0dadac6c8e652e7187233f189c882861c22a1b6c3357d826d5138"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider recording the kind of declaration that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2065}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d1d6a4d88437e60137a7ec5ce52452d1f2ebe772c9bd0df032d529c4cced3de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider collecting and using the data at every \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2367}}}],"partialFingerprints":{"codehealthFindingId/v1":"c917e323b7124e3a23cef89b8abf0c19c95c7f00fff755fd44cfd6454a9d21b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If two element kinds have the same count they \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2553}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b70aecf90761550e9693656389958351c5f6b8410d34ee5d2a26faaac7e33da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If two keywords have the same count they ought to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_table_generator.dart"},"region":{"startLine":2629}}}],"partialFingerprints":{"codehealthFindingId/v1":"2429f73afbcd92431a6e9fbe781366c6917fc382954b0e3fb03d511fdee7b0e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): It might be interesting to also know whether the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1806}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ab62fb4f81e93b32735cfd85e77ed35efec8ec42b654cdbe9dfa8ea5bca401a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We might want to cross reference the depth of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/relevance_metrics.dart"},"region":{"startLine":1935}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e72f4567dc91306a531ea4ef5ce7e90c20d46588e7282307e27f2f7c972097a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Replace this with a more realistic filtering \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/completion_metrics.dart"},"region":{"startLine":1528}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f3be5c07d75cdcf5fa9c10099823610ebb6d2367e590caad9d9aaf39fddba4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This misses all node kinds for which zero instances \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/code_completion/code_metrics.dart"},"region":{"startLine":1379}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7b067b5f7bc92bfb9123e8b36b66620cae11433df995cebf0026b24ed57ff8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This method isn\u0027t working completely. Some source \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/log/log.dart"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"4727950f2034a88da437e79b4de864fe04109afa89b6e3feff114a129276c878"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle tabs and other special characters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/log/log.dart"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"89610c904572195eb7ed97b656ecf6f3f3cae30e1df81a7557085ef1a4c2d118"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add a spark-line distribution graph. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/page/stats_page.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"fca8f8dc92ff08a4a63b25405325c1fc5cb0bbcabb5e19953d0dc57913ac715c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add a spark-line distribution graph. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/page/stats_page.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"877ffc2e4a1c526bc5e9287983378b2e1d52977c87c88bc9b609f76d6d4ee0ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add a text field for selecting the start index. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/instrumentation/page/log_page.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf2bf3d13484ae9b4f50993a6ed0b9545950449bf2460401f0bb76a338cc48c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Update this to separate analysis options, pubspec, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/issue_generation/list_warnings.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b0872dbb97c0ea4242941d1b15c0af3e3cd341a20bcbdc89be8bd2427142e06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Filter out any warnings that have been removed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/issue_generation/list_warnings.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"0576fbda8fb503685bddcb2cb00876206fa666ef16a7cdf30acd87ba565c8460"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add a flag controlling whether the server is in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/server_driver.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ce00f6d98d6d4506f1021960894b2dae3e93301580a25c2d1280d95752bd928"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implementing this will require some additional \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/server_driver.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"96103d73c0cf626b2123a5425808d528892f49443ba4edf9601888770c2383d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implementing this will require some additional \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/server_driver.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"89bb0fb9e50b93464d49a37bbdfa898bd050cb3aae806ecbbff144afa8bd61d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(somebody): Support legacy protocol. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/normalize.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b0de4847bdd8e3800b3407654246754b1c521f82f0ebe0a80e2a8837fcce26f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(somebody): Don\u0027t take a package config, instead infer them from the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/normalize.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e325ed974caa6b4ec5abda3c744f92bff2f00937789df817a7d555d540db064"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(somebody): replace {{flutterSdkRoot}} with the flutter SDK path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/normalize.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0abcd5d78c396f93fc571a4342cc30c1b4e32d4c70399770b6868a12984b0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(somebody): replace {{flutterSdkRoot}} with the flutter SDK path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/performance/scenarios/scenario.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc50ed21b0ad46a4e488342c745e1b949c0fbce252c1bc5c49e9bf6f4e9e4795"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This doesn\u0027t currently attempt to retain the same \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/log_player.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"c124730f6de2c9535c21b6bd25a07c26d8f8639e2c6e23a94f1067737a1925a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakemac): Remove this once we are not reliant on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/log_player/log_player.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d2e3e53aa414d2bdc7e1beebd0fb0999cc2cd774cc2b580f403f54b964873fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this condition and always do camelCase in a future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/meta_model_reader.dart"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"d11d14411856f43fdaaaf26318f81013aef2a7347f12d8626882937102cd5393"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider removing this, it\u0027s not adding much. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/meta_model_cleaner.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b412025bcc105c538c3d7aca54a483a1bdcb781712c0f8113b230b6d43fd65"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this once it\u0027s gone from the JSON model. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/meta_model_cleaner.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0c1e9914df710afe453674da84987a3cc42fa1cb5b9d1ad13b1036bd75392c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove these once the internal code has been updated. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/meta_model_cleaner.dart"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f46114c645b7e610f340a37e55468b7b1ee601f65bfa015e658dc01564e012"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Improve this after the TS-\u003EJSON Spec migration. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/generate_all.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"0297f5044938dff55e5652d39c11f47ac5c699699d4c042ae73999fbb238fb66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Improve this after the TS-\u003EJSON Spec migration. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/generate_all.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"e449e90360d29ef94e99dff262b65c8772864a00908aa59f4836dfa4fbfc6197"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Generate this from a JSON metadata file if one is made in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/custom/interactive_forms.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"213ea96784a5f6649fd6aaba9ed6a4ee0aba0169266ce0d050a32e0396f89188"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Add these back when we have support for them. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/custom/interactive_forms.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceab47ec608158f924008fbda470bad7a28a70f2c5c3b72f8bc5adc00e5bbe14"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): field(\u0027refactors\u0027, ...), \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/custom/editable_arguments.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f904c42991e86e4ccd498f426270a9c3968698a710d899eb15cd60c048fd8d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): field(\u0027properties\u0027, ...), \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/lsp_spec/custom/editable_arguments.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"023d36f2895698d0d656610c4c2e8a2662258c24361f59e440ae01a19a55e64d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Individual refactorings are not yet hyperlinked. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/spec/to_html.dart"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"973aae2ddb51277c614e398017e9687fc73ac2681b63e3703df4ff7ab4596bff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Ensure if the client sends us filepaths instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server/tool/spec/codegen_dart_protocol.dart"},"region":{"startLine":1063}}}],"partialFingerprints":{"codehealthFindingId/v1":"502e8429fa9df3c574365b4e5dc26ec6b400810ea8800d4ddf7a16395b608dd4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Ensure if the client sends us filepaths instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/tool/spec/codegen_dart_protocol.dart"},"region":{"startLine":1102}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbc42a3552d21f2b79b4e4e05d166752f3df677525a229a0dc44394baf1fe21c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(danrubel): Consider moving all cmdline argument consts \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_client/lib/src/server_base.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"11de8baa5ef7623ffa1200dcbf11f964f518a93f80c8be35aa769e55a451626f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson) Fix the generator to sort the generated files and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_client/test/verify_sorted_test.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"c866b64788835c3e5b650c13f4ead939ebbe67cacefdbed574849cbe6625c07f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): consider merging with \u0022_binary()\u0022 after testing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/correction_utils.dart"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcbde6433324b655c0b0aa2c4c4515f767f053eb4ffcca772a4ba18e5f41f0d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(migration): Consider providing it via constructor. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/dart/correction_producer.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd1d230043e14e22f83e752c405e0a1a9c2170f2214e819ddbd47d816bbc632a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Rename to \u0060diagnostic\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/edit/fix/dart_fix_context.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"8106cf8af2a3a62e4f24df598fe5f514d555f86c8e9a405c74ce0e15ff0eecd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Use a real instrumentation service. Other \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4c16f0917264854dba6c76e93e7209f8cfe7f8bf44b273ab60a134503f93e52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Use a real instrumentation service. Other \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea49d81e8db17dbc8eb6d8b2ed8c9eb1cf8fbdf2166d4790151f73c7928e698c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Is it important to at least log this? Or does it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"c80d48620ac1522dea3cf42598f52d89b53780b0e434992a762e29d4084cf75c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Is it important to at least log this? Or does it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"2935981f8ece0d1d7dffb0185d58241574cca674dbc694059930f497f36cde85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Somehow wrap each ProducerGenerator invocation in a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"858680f836981d72d6ebbd998dd28e9f55543478bceebd86e92af0fc964a1de9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): It seems improper for _this_ method to be the point where \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"05ca01c73f8888809750e47750f6ae38328d9a484dfd4453749d75452f768939"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Enable analysis on other files, even if only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"b99f80b70d3d239dfb95fa5b667a7db93713193990d27e78751ad007c89d0850"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Enable timing similar to what the linter package\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f01ff31b482158482880a79723468685d5d6e963e36b36ff0beba4dfc3dcfa3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Enable timing similar to what the linter package\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"29803d7cea865046f3bd01e3fd1d2a8075be84cff456ec10db3c7433d5f9774b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Use a valid value here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/plugin_server.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"61f3f4ed9e5dd1decee775ce8efe6ff6041c64921056f54b11c999bf02f841e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(osaxma): should an \u0060analysis_options.yaml\u0060 be created when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/correction/ignore_diagnostic.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ae09b1a47e88f04ec9f46ee19b620ded16d4dd7375755f54de5ab03b32fa1ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(osaxma): check if the \u0060analysis_options.yaml\u0060 is a valid before \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/correction/ignore_diagnostic.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"4053ed3a5375fa5ba1641fc642e24b66339c531f57cc2d97d6ae99da70db6491"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider discarding the change if the producer\u0027s \u0060fixKind\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/correction/fix_in_file_processor.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"41d3493ca872fe693cdb8ed8fd64e3738f17c7da9be45eef9260de25de7141ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider support for multi-generators. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/correction/fix_in_file_processor.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"cddf6d5cc9c517c58a63f666af48a75ee651414507d695661615a6bb2fcbed56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Move the definition of \u0060ChangeWorkspace\u0060 here after this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/correction/change_workspace.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbef2933a7f42d7b7eac5cf8f9e5d80a5045e0d9fe77f264f0ed49cf9c8f5ecc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Support selecting both directives and declarations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/lib/src/utilities/selection.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f585180156dc42e86640e854c1ef925867b104dc964ef0bfdd24022f687d3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This is all copied from the \u0060AbstractSingleUnitTest\u0060 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/test/single_unit.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"0db7f4543a98ca99eb51ba7d9e63cd06f1296661bf814934641c61c784475a68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Does \u0060StackTrace.toString()\u0060 not do what I think? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/test/src/plugin_server_error_test.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"2582bb72209a6c20fc04291759e851808e4a9ed0785a7187f8f9d0f417167d62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Does \u0060StackTrace.toString()\u0060 not do what I think? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/test/src/plugin_server_error_test.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0115f7eaea7bda8afe23c02918292794e22e782d40efcec8e9d451da5ddabfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Remove this once there is a public way of instantiating \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analysis_server_plugin/test/src/lint_rules.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"799071f6a14b0a40498530b21dc09c107a4fa5b6e2576a39210596d38bea852b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Stop implementing [FileResult]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/dart/analysis/results.dart"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdaef082337eee6685e838ae764cff8e8413111d4334b63dc5ff08a1ca7ee979"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): We have mostly used \u0027kebab-case\u0027 in directive names. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/dart/ast/doc_comment.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"b39ec7e56ede9b15fe3a1f699a6f0a1a2020c1359c80dd74f9ef07399ae68def"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): We have mostly used \u0027kebab-case\u0027 in directive names. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/dart/ast/doc_comment.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a1270d5eaad0e099f5ce6bf505deb66a2666ced61a3adfcd8ca6fca8d36304b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): I think allowing a category name, which is parsed as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/dart/ast/doc_comment.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"8de398c473e359889cc9227f893cd461a8bef719c634c7c8e79b33292aca0cb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Migrate users to use \u0027end-template\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/dart/ast/doc_comment.dart"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"18897891137979fb1bee475d320fcb9d28db0f415ed0321dffc9cab1eb62c05c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Deprecate and remove it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/dart/element/element.dart"},"region":{"startLine":2024}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc303b557c5df841eefe9ba9b829bf3b91b5d3e66735188d95f8b40733b19bd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We shouldn\u0027t be inheriting this member. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/dart/element/element.dart"},"region":{"startLine":2115}}}],"partialFingerprints":{"codehealthFindingId/v1":"14d7f64895685f67c00387d1db757ddc1c962237e82aaafd876e5eb726b79bb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider removing this from the public API. It isn\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/dart/element/element.dart"},"region":{"startLine":2170}}}],"partialFingerprints":{"codehealthFindingId/v1":"63d1b249ff20ce5cdb00bd50d8f1833c580f839fa95dfc3a4a4384f9af1f627d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Make \u0060analysisOptions\u0060 non-nullable, in a breaking \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/source/error_processor.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"3270bc227211db933c75c348dff8e024783cd46b9e63338db2a2230985177c16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/flutter/flutter/issues/141576"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b8ea79ebc2e0fb42cc99a65fd513e0266ca8b0d26291178a57675a11170e0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove this compatibility entry together with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1f1b33de5be6e283110ffbd5b0e50c0bc6f4b791547f4f242c6f9e51c52925a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Move lint-code lookup behind Registry so callers don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"53a6fd54f28b3feae0e04020d2ec813bf72c410064da451ed842ed7129fd4eb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Review whether options parsing should keep \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"15a30c8ab8c5be4eb216587d4e0acc51db2c9eeaa6184efd8ccef79a5a26c507"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Create a \u0022duplicate value\u0022 code and report it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"f99dac4fd10e249312be11f2eee2c6e68686f71db4456df28f79c21374f47191"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): why? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"249a80ee1e0a3255bc7e0ca56c4b1ee890cdc40e9e20db25ba66ef43e96bb617"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Compute rule configs in this parser pass too. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1168}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7cf9753039b1639d074f10021a692fb85b1b7a363a9ed749fe64fba24e2a443"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Decide whether an invalid \u0060plugins\u0060 section should keep \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb116dd55099e4174d2f13b66df803750583e3e7ded824375b61438e207efb37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Implement \u0060enabled: false\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1609}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69a2295fc2d2f2c329413c56b881f72bd220075642707c5ed6c81b50b744e81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): In addition to \u0027version\u0027 and \u0027path\u0027, try \u0027git\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1648}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b85c1631f3267432f71c52126e6481b3bff1e6f0c201d145d9e34aa3593073c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Validate \u0027path\u0027 is a YamlScalar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options_parse_model.dart"},"region":{"startLine":1832}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb4950316090eb65b1b67555e4ee075f36571773fdcd8cec8085bf66a8640fee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Having a top-level \u0027plugins\u0027 section, and then a Map \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/analysis_options/analysis_options.dart"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"de2db11365b53f3999827e7805ad39d26b966ebbcd8062cf31171194d591f64c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove it, exists only for Cider. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/context/context.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a2c1b96795cce56653e55a8eb145f70c29eda0a5af7a80a3a4da9f53edabaa4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): If we ever get a malformed \u0060_embedder.yaml\u0060 file, we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/context/builder.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"93e22a8c003d1e01443ff1760e4aeab1b46a6214b60f7cc0c100be783e1d308e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Would \u0060targets.dart\u0060 be a better name for this file? It \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/type_instantiation_target.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f904281cb1b74d6261b27f0644c41eadb2f8eb2539229b3bb5fa913a5a40e4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): get rid of this cast. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/type_instantiation_target.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"56fce3852475ef4ac6605b2690b578dd1442f14bdaff81dc47f2be7450e0536d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Could we use finalizers and automatically clean up \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/unlinked_unit_store.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"be8181a5393edfa66005d21104a258819832074a5df59c644b3721731b2fd5c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Do we need it? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/unlinked_data.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1925bbccb1655c789f8633c4317b10558bf61694991af7f19426089b963bc42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This visitor could be further optimized by special casing each static \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/results.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"df3ffb0d591b2631333114d51ea07daa59a41fff8a322e8f00dc5b175b45265d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): We only ever use \u0060writeln\u0060 from the StringSink so this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/performance_logger.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aca22aeadb905bcc97efc59e4acf1a95fda7cbb15a95ec690e4aee218c2f733"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Take / clear parsed units in files. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_context.dart"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"cec8316ae8ccfc13285fdeb6240528d0a15f9459f46b25bd0665686f6f20125c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Use [libraryCycles] and textual dumps for the driver too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_context.dart"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce1d3433d28102671be9472142d42347529d4a9aded8cea112c5613aa5209ce7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We don\u0027t need to do this for the whole unit. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"34bb7f1a37f9e7938447810af49508006bfdcf65d94a90e579cfc9bfac399e9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Store [IgnoreInfo] as unlinked data. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"59abbdd856c11e853d35d2729aee04925ae54d911cb0ad3f8d6632e96b421bcf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fshcheglov): Consider removing the index entry. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/index.dart"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7baf1b0d1fd0a04e7545c31026b811af9393b339f49cda40f0ca31d9c75b298"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): removing the path from [fsState] and re-analyzing all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_tracker.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"eff6cb885ca3fd90404c188632343a50f9f80b72300f016cb8d60ca51cc06dd6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): schedule analysis of only affected files \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_tracker.dart"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"e73bee7ddab463433ab0a225f9494455b7ec9d121d426720b4a8b35bd66f71df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Use the path as the key, and store the signature. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e4ea1e9dbfc8ad01733cc6f78a702dbc7c058fae36e7fe23d28d02a1b679fc1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): move to _fsState? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"73708f93955036f475516d992f504d9aa0eb9545e53355f9d9741abc11eb2347"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): write tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"50d37efcd22dfb8d8ae41b0c8d00629cb63ebea73994840792efd88973d39521"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): write tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":1553}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a1946d97718320afdfcfbcc1a9c15241e25a428aa855c66d37f326e8b500c36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): tests for excluding generated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":1494}}}],"partialFingerprints":{"codehealthFindingId/v1":"b34d179468938b30703409e18f315bc3910a4f59f7badeef5c8907d4d04a01ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): If we use finalizers we shouldn\u0027t clear. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/file_state.dart"},"region":{"startLine":1577}}}],"partialFingerprints":{"codehealthFindingId/v1":"2256a5311932c73688b4036d47c6389ce3871c1198abb5d770c4995d02ed6a33"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): if this method ever needs to be exposed via the analyzer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"077d53939c51ecb23159ac95106529c50cb40ebd9342a7038f71d52ab46af655"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): if this method ever needs to be exposed via the analyzer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/experiments_impl.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"976d79039757bf554b2d3f9745de3bb06bd65f28c322282d6b234eb55e42d4dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Clean up the list of implicitly analyzed files. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"747603e1320a7a40f0859d9667c7ad8e4fa905e1caa620136a79b603bdf26015"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Check if the source is not for library. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"128e43e88233b0fa4608cd16eaf2fb876daab7af822a6680b66ebcd6fbb2e587"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We have to do this because we discard files. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":1585}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3f624148d647ef9011dbafeb003519de06a47b1c7221a24c6e6b0b0c12bf68b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Eventually list of \u0060LibraryOrAugmentationFileKind\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/driver.dart"},"region":{"startLine":2278}}}],"partialFingerprints":{"codehealthFindingId/v1":"7868a2436524109782dc112170015619cfbf4945a84434f41712e9b18f7adeb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Ensure that \u0022librarySummaryPaths\u0022 not null only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_builder.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba874c771ed81b534375a3c8956e41a8f8f70333fb697ea9db61f56be44e1a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Get [Packages] from [Workspace]? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_builder.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"0101a14b94c2b3c299bfbabe92e284c007fd0f96ca826d547e993f5cc00773e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We have already loaded it once in [ContextLocatorImpl]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/context_builder.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a47325b872b4c74c174c87eef7ebf2bb65fc892c964b1543dcd0d2b75d9407"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): enable and fix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/analysis/byte_store.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bd5eb36f280357486b9769472d8e34f412d7f1eca8d0ac2fe4ab4c637c87d6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): : Clean up TypeParameterImpl casting once variance is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/to_source_visitor.dart"},"region":{"startLine":1778}}}],"partialFingerprints":{"codehealthFindingId/v1":"85029e210b15ffacceec467be294b01e35e6a3ff7481b4465616c3f3d70e0ac7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/43608"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/extensions.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5420e51ec7d13bf30f19cdbecb0fc572a8e923bb3655e486346d5e44ee48ffd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/43608"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/extensions.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea45203c175ec532582c4a57bc54d7b56d395aca83d17b673960539de90f402a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/43608"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/extensions.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"88069b12ceec9ad00c542c18c989138ee0e1a273ad55d03919d680a605615f4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/43608"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/extensions.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7d88db07b627ec045b47bbfe4cffe889a8d21250979ffb47c97f4339b30e09f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/43608"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/extensions.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"57cb4eeb6b98698f8b58fdb6dc44397633b93e20c00ed80cb52fd0677e5b0730"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/43608"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/extensions.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"35ebe0c81cb8c751a74f26e2cb9f20f745e58dd602ffb5eca0fccc335b460d63"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/43608"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/extensions.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed45b462cfe1fea90718ceb3141f6c8725a8ea328dfd621141e453f3a111f57c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/43608"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/extensions.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e497f1519b32958d1609bc57cdb95e977cc03f565f0c09ffc0976d803b4d991"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace with native VM implementation once stable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b5cb9569e8e34a7ce1e94d91b3cebb384eb5f0593b146089bf72e161473a8c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace with native VM implementation once stable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":497}}}],"partialFingerprints":{"codehealthFindingId/v1":"2efaa990beaf7dbb3e7167c18a7ebd143cf4f3769a59554ab802a3fa8d2be0c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This doesn\u0027t handle numeric conversions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"da1098f8934a674764c8a6c9721cab724844dbba083efd231490a207a7fe0070"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This doesn\u0027t handle numeric conversions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d37debd14fc4e7201a415823401d040c8f09f30ddf64ce2063b077f50877dab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This isn\u0027t optimal because a Symbol is not a String. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"99fd10bb47f5f08b042ddd52afe5031d5a15a622e17a6327e5e46c9f623dc2a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This isn\u0027t optimal because a Symbol is not a String. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"633d847405025d4bdaf823a2d7759de2f3172e62ce54daaa1ce5dbd302a06a48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b802b1d2264277199b4b573f8f4b11f9c969f06ecd9b4c012ad346d22a6d5d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/constant_evaluator.dart"},"region":{"startLine":755}}}],"partialFingerprints":{"codehealthFindingId/v1":"69c17e31f1bb94e46badba899dbd1727fabd8171839cf8be5ac76d4747abecb0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/49102"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17933}}}],"partialFingerprints":{"codehealthFindingId/v1":"51ae5a81ce360cd5b134329e323e1c1752fad4a9175d8621bc0097ff237b6dbc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This doesn\u0027t look right, there\u0027s no element for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":17950}}}],"partialFingerprints":{"codehealthFindingId/v1":"c761fe5be1186ae2b5385bb807d1a56e20e6a95979538ee15dbed9ae41a17e43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): remove this cast by changing the type of the parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18285}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb51acd7a9f8c836c6d719d229b9bfc966866fa73f30ce360f120c9dab6e73b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): remove this cast by changing the type of the parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":18321}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a16232eac4bf42ed6dcfbd55f44cf174cebcda44f110563484ae55596dc0687"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): include commas. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":22285}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e3df4d37b736d9f7deca58942b60f12124ae1edab44fe7ad3e19c46bedf282f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This class represents both declarations that can be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":23659}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc66cafa47b324da58bf2db0775cf32e5a0662f5b753d2c123686a0b75b39f0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This class represents both declarations that can be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":58088}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fd3ea57b245ba2eacead30187cb291a9c2f5e3d2078062588cf20288f60f223"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Extract shared \u0060IfCondition\u0060, see the patterns spec. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":28153}}}],"partialFingerprints":{"codehealthFindingId/v1":"67f34e0470744c72d7669d4d170638dc3769020f753ecf5a08bb87ac458451a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Convert this to a getter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":30911}}}],"partialFingerprints":{"codehealthFindingId/v1":"050e04e746734be84ae136b226710fa9017b09ef86f6e97457da02db86d902f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Convert this to a getter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":30921}}}],"partialFingerprints":{"codehealthFindingId/v1":"a61efea3e074e65df29eacafc5efc4d47859dff5beaf0e9a3d723ca43dad3cc5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Convert this to a getter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":51284}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d6dbf37b9ccc83e153af6523982d4016ba7f64a202eb3f44289a4f271ff5ccf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Convert this to a getter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":51292}}}],"partialFingerprints":{"codehealthFindingId/v1":"6de23cad50ffe350440530e5de8dc26fb59d317989fe10dc6b9fa42857b26cec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Convert this to a getter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":51300}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ef88f16880a17455e9b060e80ce8110be9200f91ea9628388ee1466ddbbb2c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Create a new precedence constant for pattern \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":43782}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f0bbd9a43e56417c418919abb579dc8a225e5f69c95bda2c5496da130575e2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This should not be a \u0060Declaration\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":45398}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec514b71dd3d5bb897b145a53a583a932bdaf8bfbb29acd69363d405debcac60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Replace asserts with appropriately typed parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":52221}}}],"partialFingerprints":{"codehealthFindingId/v1":"44e7f2593e9fd69b8695e572be4bd72dc3ff4efb7d17c259bc7f6865abf0cb1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider renaming \u0060SwitchMember\u0060, \u0060SwitchCase\u0060, and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":54195}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dc47ed175a52ffeeb1b83f1583b1c4712b55c176dec49adef2b175ecae0183f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): The grammar doesn\u0027t allow metadata to be associated with a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/ast/ast.dart"},"region":{"startLine":58083}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6cff360f9516e69beaf021111956c735ae254608fae36214c3c78caa6c228d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Make a more specific error for casting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dfa0c4f2de498a859a6fc11baeb1bba8dbdab8851f699dd0a99611103dc1e48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace with real operator once stable, like: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/value.dart"},"region":{"startLine":2320}}}],"partialFingerprints":{"codehealthFindingId/v1":"b52ed092c36d23e965febd64a6bb551d02e96a5f61f521e70bef6f1dd54dad5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mfairhurst): How do if/for loops/spreads affect this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/utilities.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8766b8d6a79ba70c12246ce9c4f13f605fa18736814dfd428eefc76fa7f2b98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): collect type arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"67e37f803ed886071fdab78c43ef77438bd38e4481d10bee7393638405571abb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): collect type arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/potentially_constant.dart"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f1ad743ef57daf2c4efa42685e91c66aa3775c86f50da823804baa141b08e21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): It would be really nice if we could extract enough \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"49926afc9aecf83f3005bac19e92d5f832c3a7c85b0aac02e8650b7f608b1a50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Use a better representation of an unresolved object that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"7338026bd70f09ca181eabc0236d6e01dcbcdd6b63625601971cabd6fce91093"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Use a specific error code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0eb3a9ac5141800232faf548a59837c8ae7372643a3db28f7a532eb786c44a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Use a specific error code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d91f837b944836d2b7a422c307e94ab17b3b51d1a021fdadc2d16a23246a55b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Use a specific error code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bcabcff2457214fe3e8d9a86bed99172e14f60286823617dca1d9e38161ab05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Use a specific error code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2186}}}],"partialFingerprints":{"codehealthFindingId/v1":"a097e8ae4b764bb04890160e271aa0ae66cf3e73656353ad74eea2a01036d673"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Use a better error code for this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"8750b15e9a9ac66f052a2fdff69442c6aa4812bb6e79c755b1e60a26cb89be34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when dartbug.com/33441 is fixed, add an assertion here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1337}}}],"partialFingerprints":{"codehealthFindingId/v1":"1096439ba2bac4aa315c067b110d457ab3bf76ff37f932f03dd2eff8bb95e03a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Should it rather be its own code, for example, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1721}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcd027aba0b05f379543777c0af8b96f19be4d705852a1b3961eb9dc30d356e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Test type alias types (\u0060typedef i = int\u0060) used as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":1924}}}],"partialFingerprints":{"codehealthFindingId/v1":"96468de3992fd1cf7746ae2252ad7893537d66d674e84f318d6e1f96bde584cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Revisit this method and clean it up a bit. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2019}}}],"partialFingerprints":{"codehealthFindingId/v1":"78d5e4d7726cd0b7e1ec38e77182e74ceb7c177138d19bb5b356d36938322a58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Remove this check when [FunctionReference]s are inserted \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2043}}}],"partialFingerprints":{"codehealthFindingId/v1":"5957bdfa466a2caaa23b1ec2c9c9475bd511ef077e8bc9af3b1d80dd7fb385dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Investigate and fix the test failures that occur \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2081}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed18e659de560569674ef2b2e89738bfb558f2759bdc3574e46341192aacde0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): When all code uses [FunctionReference]s generated via \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2300}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab440ca86ce9c57c230aa55703de980e9471d419e14f30f4c3b927c960fcc37f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): g3 relies on reporting errors found here, but also \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":2363}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d99817c62e4362d838aeddb0152af43512a1aec9f57f46b38b7adcaf0697187"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): https://github.com/dart-lang/sdk/issues/53263"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3283}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7492d8b80882665782339c844cb6da5b188f726c8d3a4808f7110dba3a3ce13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): https://github.com/dart-lang/sdk/issues/53263"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/evaluation.dart"},"region":{"startLine":3491}}}],"partialFingerprints":{"codehealthFindingId/v1":"067b56398fd15656eee10d61edc01cffc900805bd6555a4c6941f9de845f08eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Also check interface types (TypeName?). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"a09714250466480d26ed890ef6f783b6d068716cac4e23a9c19d11fb28132712"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Evaluate if we need to do this check for inline \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"a98872dc2faa0ef7beaa48065104922178d69c6e7cb3e5e35fb9b737f45017e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Create a set of errors so this method is readable. But \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"20aee4772b47bd552b11928f5f7dc15aa7bc18e15ba795a613c0e184aef33cc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Report the specific error we got from the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":964}}}],"partialFingerprints":{"codehealthFindingId/v1":"15175bf0d99e02addd1b2426c74537e970d3c47575d5e3c5468823a47b903c2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Consolidate this with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1436}}}],"partialFingerprints":{"codehealthFindingId/v1":"42f0f5abce7b1eff08f1b12df9543a02ddb27b1e01d9bae43a367c67ac97f795"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out how to improve the error messages. They \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/constant/constant_verifier.dart"},"region":{"startLine":1597}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e2e14c9313cdc096af7ca4894d8bf9324a1e2f8ae8e47a1828128f5fd5764d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Should we visit the bound here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_visitor.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b42e90a393af3b6cdefa6e42dc907c8638993b04b4ea601bf2c9bec3c2dba2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/44218"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"46920ad398211b0fc7ac220a62de3f63d08330fb883426b738afa008e1bb5554"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): make these casts unnecessary by changing the type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ddd2ca9856c473d441fdbbdf238b5e7bf1ccd4d5aef5c78a187c28eb44c274"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Use \u0060ClassElement.instantiate()\u0060, don\u0027t use raw types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"0456e14832aa1768e4da49a66acaf78fb4fc4ae68c11d4fe521ea072355bc9a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): I expected that [methodElement] is [MethodElement]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":1545}}}],"partialFingerprints":{"codehealthFindingId/v1":"33cb8d6fe3198ca3d2435137a578955e90571bfa66acb828766ef05200f8922f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Ask the language team how to deal with it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_system.dart"},"region":{"startLine":2200}}}],"partialFingerprints":{"codehealthFindingId/v1":"1af5a60ccf80b2df81c502eebc664611db12435de7eb064dfc806e84ddd232ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): : Clean up TypeParameterElementImpl casting once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_algebra.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"af6387fc6b5ec4ea383a9c5a65f0ab2fcacf50289f3e8788774d6617d9b4432b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement visitRecordTypeBuilder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type_algebra.dart"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"da5262852d3b163f4e46d5719ca84284519bd1914ade6923b6f60912063c8076"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove together with \u0060star\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":1266}}}],"partialFingerprints":{"codehealthFindingId/v1":"932f00fdbab097cc2bc3c2dda1ed3f41f5fef532d76a26ae1bf907c139d19fe2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove together with \u0060star\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6026}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e8910fc1cf0688796b7ed3031a61b8842475acdad33904a3647b5c63e169eb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove together with \u0060star\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6044}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad5a5488848994946d5b672f88b043600dd02b31cafb4ba63c40bf9c806b6baf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove together with \u0060star\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":9540}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ea5277d24e07671881cdef3597f541822ba1b9a8a1e1738e6c8d19e69ae2a7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove together with \u0060star\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":9591}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e13ac272a26b8cfad1d835121429101be03314593a609eeb9e51354dc168bf0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the type of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":1291}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9d613e69c056c463a175784de69b04cf94636b28a3cb54186919be9fd9eab0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the type of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":5853}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ad475b43570574a871899564b9e3ba42f73e1f20fb466716afb0603026e251"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the type of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11147}}}],"partialFingerprints":{"codehealthFindingId/v1":"3050b361783a1e61a47a35333c18cfdc5bdeb8872e54fb8de8fdf9cad974a0bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): change the type of the parameter \u0060promotedBound\u0060 so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/type.dart"},"region":{"startLine":1651}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e3e7da1f149755bc4fd5e120763d734d3d5d11985d74e9d4f0c10954d6919c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Replace with assert(). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/subtype.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"d56fe7a3dceafb3d03ae8214a5aaf5189baadbb71a1ee5f0d85bf21642e191f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Handle combinators. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/scope.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4ac17a081a701905080522b4bd5568468560997a66b14906b14ba5b7dd8d2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is kludge. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/scope.dart"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"add492518b8c3ee219f2fcd796bd0f7f887f4ad6c5cf1c0d40f30d4f8ceaf8d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): why not FormalParameterScope? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/scope.dart"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"c361b18013e54c5a93a555f9f3f919bccbfdff1a395fe1fdbc87298ec1255bde"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): avoid this cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"f795ce04a30a45227f41d5e538f39b53d0a1c7d2d14b290a22785777c15ec191"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): avoid this cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf6826dcfab5db8d0eae4b21294efa9d6ceafe782386dc0b4b431cc263e04455"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the return \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbbe4ca1406380afa8ecde612cc1f1d47a32b6ffe330292839756ee1ecf38610"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the return \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/replacement_visitor.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"475d2b5b1af5cc1d31e23e9ae59964b98485f70a38b749b5542a99957e2f8cb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): Use matchTypes or something similar here to handle the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"513df44116a5a9cd02dc3d8640a7875f4041a21cb177a2c9413aa07d9cd41d84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): Figure out the right final algorithm and implement it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ccb69f9071d49c774381c7264e77bf6096d2cae3f91a19292ea94a9dbcac00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): : Fix asymmetric bounds behavior for invariant type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e6e083cca23eb09f018159f8e157564086af3c377c91a85d4cffd04a6ac6b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): How to get here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/least_upper_bound.dart"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1e7f3131c73b5235bb76a8a872f6650226628da50bb429f13e20b99da427d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eadc7fd301f052375fbc852aee29ebc890427bb579c8bacc35881b7346fbb6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd8f4a9a64f189e6c11fc1b1000a3c569f2d03ae79313a3cb6a34df1f73b14f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"670cb9a71952e9fd0c5cdbaf119c988764b310ce258cfabe18dd42994f4e382f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ae6ae886c82e6ebc512f3a07a9b9048991d1c27b339d0ba42aa5a42b151bc1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf637f8c21464ccdc55bbd34a56fd7a7a36c387bd0c4c97e380db6008c380bf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"96e70f7dc71aa75062f75c300d4d7f3bbbff152dca067bf2789767742ccb02a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb0c5ff1d3d885a636e055f85f1788dac16e8094733a8d1b546e7d75600786ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Consider having only one merge pass of candidates. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a8e671e7dca67dba88fbecd3557fd89a91259f706f0d0bbb7ba8006eb4ad50b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Handling of members for super and mixins is not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":579}}}],"partialFingerprints":{"codehealthFindingId/v1":"d641f003c46a9490ed8ec204618337bf30ddc043393640067ea1729a057fb31c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Instead of merging conflicts we could report them on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/inheritance_manager3.dart"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"b88eba7ac0da2f1a700250795631b9a984a6d5157c1ededa5ce1c95eb67a403b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): improve this error message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/generic_inferrer.dart"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2002d14e74a81afe605a574231a4d694800f2d47fec22f249effd0723050782"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the extension to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/extensions.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"de291b99a3d196ef25892ff6d54e4a80a970643b1d34246ac79dc1aca880bd0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the extension to only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/extensions.dart"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e955365d9a8a87cd04c41ac5e2923076437d636189349191f23e7d5619c4448"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): make it explicit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"428ba3b3a355fe81be1195394da641fc695f8f4f1c2d66d819d82f50393da7e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":767}}}],"partialFingerprints":{"codehealthFindingId/v1":"de3b70d90116a7e236351862ceb2a4699ae046839668676e0c53efbd580ad1c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11898}}}],"partialFingerprints":{"codehealthFindingId/v1":"f76e50324a1b671497c678b3ce2d5fbf9ef474934d5143c35f3d5f96ef70d190"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We cannot have both super and redirecting constructors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"edefbc7e20140f9e738852b5ec7e387930cf5ca14d5f41c8e8c7ea7db9a5ebf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): review whether we need this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":1393}}}],"partialFingerprints":{"codehealthFindingId/v1":"133551d68baba53fc2c901c856dea318154bf01e2f6bb2d7d9071ee05eca131a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Remove this field once we fix up g3\u0027s dependency on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":1761}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e99059524c02e8b9e81a6f599c70790852fdb9e7f6829ff004814d113e108e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove when type analysis is done in the single pass. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":2716}}}],"partialFingerprints":{"codehealthFindingId/v1":"1933a4dd4fa33d313706e3161f533ca08d0d7335a65af87fbabd1ff490b39072"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(augmentations): Implement the merge of formal parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3937}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67ca0cb71a6069743596fc815562858f6497ba311acc329f1752b85ae554618"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(augmentations): Implement the merge of formal parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":3968}}}],"partialFingerprints":{"codehealthFindingId/v1":"a254e0b29bb57a95f248bebed0608e74f682ef3bc4c84028dc67d98c2c11d348"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This does not keep any reference to the non-synthetic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":4151}}}],"partialFingerprints":{"codehealthFindingId/v1":"435b9ae32f807a9e1796750c4a344ea8789324f8970a72bb5ef86c167cea77fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the type of the \u0060mixins\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":5880}}}],"partialFingerprints":{"codehealthFindingId/v1":"1074b1947035f4d8c47e127e81165207929d309b6f3ee1c8a4b2b872f331e4a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Make this a modifier. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6653}}}],"partialFingerprints":{"codehealthFindingId/v1":"6015b1bb511cb6628e93933e64c79e746b6bc19d6ebbebf69f9fbd75d6f35c59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): make it a nullable field \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":6686}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4fa7c9bd096a82f0974fac3e70acc62cf3ae142f2b173913312949abbd289b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): prefer \u0060firstFragment.source\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":7225}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3bb1394182b9102e1a8149b317424f7dfb2374046b3c1eeb05eb50a7b931149"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove \u0027index\u0027? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":10196}}}],"partialFingerprints":{"codehealthFindingId/v1":"359d2fe2def5bc392c3ef961f0d39f585d80f11a678545d1c6b247e153ad0df6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): eliminate this cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":10679}}}],"partialFingerprints":{"codehealthFindingId/v1":"7db528348b19e75a0ddfe76d77d63b232858c0e5179f7d633e1c2b270609a840"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove this wrapper once fragment provenance is no longer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11686}}}],"partialFingerprints":{"codehealthFindingId/v1":"c789530490af36f1e830f802844505251db24d7cbb35c96d6d22e4601e276e5c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): eventually move logic from PropertyInducingElementImpl \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11779}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bd7ec4b9b22e1230623a79a52f3e5e2f80a610154343128e1ae2f2ed3bafc52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/47915"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/element/element.dart"},"region":{"startLine":11802}}}],"partialFingerprints":{"codehealthFindingId/v1":"980ce196eb680c148ac8013e1955c1b44650a4d517ad3944c716b1c435cf655e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add a \u0027url\u0027 parameter for plugin authors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/error/lint_codes.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa82222eaab14979e8cb2f6baa99f584e0d50e91c3b84f121134d6c031cdbcb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Document \u0060uniqueName\u0060 and \u0060severity\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/error/lint_codes.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"297ccbbbcada6877ed591a6ce120bee6b9ef4cf57669a741a5ca61424896b068"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): check if element is named constructor. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/micro/resolve_file.dart"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"7159afe9430d323b4fe164b690328d3180eccae4b823ed1cb5d04a0d133195f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Casts are unsafe. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/micro/resolve_file.dart"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b701a290ccd9266be48a4a6ce138ef40c88b8ffa713b87318a277a1c9b5b2e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"8856b5b5d971edacffd38b0d0a690e58ba8a8ddb279cd8917d4a6b1b51b351ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Also in [BoolExpressionVerifier] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/yield_statement_resolver.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"22071b35afe3225ee52d8932bac04369a2e0d902972ff93d325b3b9128d81447"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this as an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4cee361d54825df0edbf658c82eb6220d235cffaf20425bd198b5772741c0f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Find out what the \u0022greatest closure\u0022 is and use that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"b87ed4c0d8d1c7ee1258027863fff40e90c6bb1a40fc236dfb98fa58c16314cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Determine whether we need to make the inferred \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bbcd557afbce07733adf50a55178672818db2a2a3002f3f367d32512621b2b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): this logic seems redundant with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0590719597f0463198504f3678d0fa5396fbfedc9b8330d62dbfe36b3a0e3e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Decide whether the literalType needs to be made \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"03645504d78bfce2581304f310bb22209249ec1e4cf30bea01450beec3b47de4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): (shared 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":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":1047}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fa4703d9203ec65391f4411bb05e1fb766e272aa6501d3c14a02d589ceba614"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): the code below doesn\u0027t work because it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/typed_literal_resolver.dart"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf6d35f3c86112834d36d30114df1a070142a1baee675180a5f352292a9837a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"357eb7d09a2630cc0d21f4dfe16d614fea91f9c1da9f502012beb693ae808ea6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb40268629448dae354285d48919cb929f1b43920db304b8f8d07060961ed632"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"a06885057f923fdd49924c9e3f9e7477d117aaa81b59eb64a99f22152fe58091"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbbc9bc116d197f5943a0e8027d06dc7232efb934347acd1882a2bfcfc2da93b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f88dee8b6e5523642274a78cc06a4831d0e58c75aacbec09df53510f9cf27f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/function_expression_invocation_resolver.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c5dcf183ac931f49f95a6844def37cc9032a0e3074b2b82b16a94c1c4a23722"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/assignment_expression_resolver.dart"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"6018198f9898d35fc9997b1195db0d466f21d47ada3c15876e900fa5895e9ae7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart"},"region":{"startLine":3232}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1833e5b796a45109d8b61825e3af49b4ab3bdb1fe6099f285f8d05c6bd6d319"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart"},"region":{"startLine":3251}}}],"partialFingerprints":{"codehealthFindingId/v1":"a318b7b5d41865d46f8abce55800f03c7e9505cac86993ec88762a7ed8b0f1d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Recover from this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/simple_identifier_resolver.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"1251db9fc2af74027c8e52393cdeeb83ad5e9694f562eaca05dc8d0661da84d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): review and improve resolution to not rely on dynamic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":834}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a40ab4568a21799e872a5a0e15ca6438fc4267b78b7837868371f82359ac11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): review and improve resolution to not rely on dynamic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":1028}}}],"partialFingerprints":{"codehealthFindingId/v1":"06ea2785136bb48ea99a164355b56d75e790e962ab5dc7e052d3ea4c5a5e4976"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement assertInErrorRecovery \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart"},"region":{"startLine":1746}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ab527fb3e530d827b0eb2885ac8760e4f5f2f3c67abb23aa89e0bf1a721b97b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Change ExtensionResolver to set \u0060needsGetterError\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"c462ea403c2dd9b0ed8da6c3a8440355bb7fd35156e596f92ae09260c5ff3c22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report directly in TypePropertyResolver? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"b13a29e40b53d77bbd0dd5b9d7b0e3f4012421609f1c802b1d7cf15eb839ef83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report directly in TypePropertyResolver? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab8a8ac49eefdfea12a47e0484866b82df05ba523305e5cbf9ffc81fa570d3b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Unify diagnostics for Never receivers across receiver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/property_element_resolver.dart"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"12897ed65a5438971c6edae1e0a6713017f96ffbd1027dc377b12edfb3c73f2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): It would be nice to rewrite all such cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/prefixed_identifier_resolver.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"89f564943ca91f805f441d94808e631b19331459c4723b303bf99097c0c89f53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): It would be nice to rewrite all such cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":1626}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aeaf7ff38070f4a733064f167d79d8ed0085fd2a0c22defdd33c31d5c6bcb5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Update this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/named_type_resolver.dart"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"18e1180a1b872f9693829ce574da191e87a38d279e1c08758b2141cf6e3d9e8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Can we optimize this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"f078b5662d141740f3ac92e8d6453702e4680d1cd0aeafb6f8a2a7ba71480ede"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Replace with class hierarchy. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":837}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb50d46a4f4de788d33a93ff7260c9a4ff34b9a8090f29a013c1d30ff3643507"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Replace this with using FunctionType directly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":1567}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3fb3919f4ea0d68ae1bfe5108f42938f851cb0526177eaddaa9b2c43c70afd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): when we do inference in this resolver, do we need this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":1947}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebd11bc3555ae06cb6191e63f23b923741534f6a45a825dab7d10006b6feaa9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We need this for StaticTypeAnalyzer to run inference. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/method_invocation_resolver.dart"},"region":{"startLine":2016}}}],"partialFingerprints":{"codehealthFindingId/v1":"12c70c0246e4a2c75e02930bd4ddcd38a403ceaef26dfb9bf4f90904f28332c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Review why ordinary method targets replace the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/increment_or_decrement_resolver.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"f79cb47e973914b7d039458d817a5fcbc39b7d9e8c17484ca42a4009b5667184"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Review why an invalid read type stops operator lookup \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/increment_or_decrement_resolver.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"82d3e5bcfeddc83714b1d28216e319d0d50c395403e3ffa2ca4f65921ea2adeb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Review why a missing operator element produces an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/increment_or_decrement_resolver.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"d08c6208a1ff350e65ba5a7ac7eccbe7f027a3c5c173ad0ff2585680df41dc6e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Drop this cascading diagnostic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9a45819dbc169389a0c5b6984e7abe7d570498c8ab8d315078529aa6960436d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Use [InvocationTargetConstructorElement]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/function_reference_resolver.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a27b82754210b51b90116baf1e2ffc37a368ee53ade47fafac78e84afd6127d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement lookupMemberTypeInternal. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/flow_analysis_visitor.dart"},"region":{"startLine":885}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f1b39bbb6bf605ea5def44e520598344ed3592361574843b94bbd627981974"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): make this cast unnecessary by changing the type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2567eb9cf07fa4f8b898db24a37220c1aac87f407d6a2ed1993c77145f34e8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): store instantiated types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/extension_member_resolver.dart"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"02a781bf9685500d266a3297bb48af92613ce6fdec0f3b81733c91e61420ec9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): Do we want to take constant expressions into account, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"061a6e8b513ab08690b339e2e38e727f1aaf1036381a422b827b5a26ac67be10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): Do we want to take constant expressions into account, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"1060414980770120d8120ce2e893b49f47ff4a895691110abdee7cb0591e31fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): Do we want to take all constant expressions into account? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"928d4417473ca33de4e9361cc7cfea3e43998e5040a6abd6dfc4c1d4ceb12e2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): Do we want to take all constant expressions into account? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"17dbc509bd25156fcc997a136f20b9a9f9e6edb901046dc952d659d431e841a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): Do we want to take all constant expressions into account? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"1853de96d5ac5b69be86cace3f941f32975e57e745dc587558a6923ca85b56ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): Do we want to take all constant expressions into account? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"752eac56aa3391d500d16dae05edabc8e293b639aa5273cad777a76400591c2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): Do we want to take all constant expressions into account? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/exit_detector.dart"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"30f1972897f4e38f29b7a931b49a00f22a4d0aac7f664bf0eeb27f23f30c7f3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): Currently, we may re-infer types here, since we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/constructor_tear_off_resolver.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"4250d639fb2832110bb1a463ec1732230ad770f69cb36112c3d7fab213c49ad2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): should we store this earlier in resolution? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/constructor_tear_off_resolver.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"23ad3cf028c927ca43295277d2aefc20adf20605524686a8fb4b44f52f55870d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/constructor_invocation_resolver.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f84bebd73815286ca0ffc3c68e3d6bfcab81c5213a4961e786f9340174a324"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/constructor_invocation_resolver.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"19f3a8c281e6dd47c1cbf292a0d73033f7d1d8099a8f36c5f6cdb667730a54b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"7089ebcc818140a5480820acec39e228b0dc4f4b68b3dff9a5e0d4ebdb7b880a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/body_inference_context.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6877301913852fc44ceed56c977b1683de039a35f2907f661b090a6109e132"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): eliminate this cast by changing the type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/annotation_resolver.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"8381bd9e99ec122270a57f690dbe8ee4528713d8ae98f843f480f62456392778"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Lookup the name and potentially rewrite \u0060node\u0060 as a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/constructor_invocation_resolver.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4f4755ee0a3bcda106bac91b453ad55b8dd9658ef41c60e6e48cb0de8fb3305"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"04440f00a463c781dbb57d9730742b47f3f45ff45efb8f40aeaa3443be66a786"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"e46b3e1f6a9179917a2de9ea0f7ecded05282f422b93003c1b29191f9038ea21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb5e34eec1e77b44cd0c967989517853a0744d39b5bd2ea96a19a7e9d3e16dde"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"34c17e64ac537f01a28048922ca5457ae4c62d8f7f72f2f08c407a5caf08bf75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/comment_reference_resolver.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"08efd9c436b6484e7fd1d745aa3438dffcf84ac4bf3729c57c43b420e471600b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/element_resolver.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"07b1ea98d7b5bf11097168e096ec538dab90931d197817730f91b73c5b296d97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/element_resolver.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cf531788155075f5f7c862f228fc109cc840eff995d6bcb0ea8831e288a051b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/element_resolver.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3b506e1f7a81897f472764fba3a89832126070feb1850c9a9be143995ea8f49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This probably should be allowed to be rewritten to a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":511}}}],"partialFingerprints":{"codehealthFindingId/v1":"7223471709f226564bac43d35183af527e748fc83b7b98519af5ab5b8308034e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This probably should be allowed to be rewritten to a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"160dfee355db77306b0ecce780a72484cb475ee526ef7a88cc46a489b44b1601"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Tease out a \u0060null\u0060 prefixElement from others for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee87cdbceb3fb5341f3c9f19cd50568a65a932f06179fd43342cee1782a0294c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): However, take an example like \u0060Lisst\u003Cint\u003E.filled;\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5762582fd3b47bcb3e07a33b2b89b04d0008717388d5d14ab803e8dc40686e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): I think we should drop \u0022typeArguments\u0022 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":"pkg/analyzer/lib/src/dart/resolver/ast_rewrite.dart"},"region":{"startLine":1135}}}],"partialFingerprints":{"codehealthFindingId/v1":"be36e97d5c31f8ecdcaf289acafa1637329c7adddc338f0a1e1002d4155681d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): why is endOffset sometimes null? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/scanner/translate_error_token.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b6f9a62f04ac2479e9a56ca30abe6b9338f49454cc34c7a217ee2aaeb3ce4b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): would it make sense to replicate this behavior \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/scanner/translate_error_token.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18a152f723348344f29506da491b13904b8ee709460e3b96a02f5a8fd27c463"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Fasta reports the error location as the entire \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/scanner/translate_error_token.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb4e285261ead4882e271fbda97b0a66036783cfdaf8c3a2684e161b7fb74af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Fasta reports the error location as the entire \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/scanner/translate_error_token.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc0b302bf48746c3d41705f72da42a6929e5e3a6bc38024d4a5be6c7cccba081"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Fasta reports the error location as the entire \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/scanner/translate_error_token.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c305ab432bde97ba8aab8cb6bbb43924ca7fba50c165e305f776d580ccbb176"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Fasta reports the error location as the entire \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/scanner/translate_error_token.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2675f195e3debe7ae6e5610bc2364f65ee03900ef1c16242debc6e551ee937"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out how to unify the implementations in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"97c3137bb2bd627f3ae06cc6decf9dbff6ed6712b5e1f2eb702616fb9c310d13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This name is misleading, returns \u0060dart:foo/bar.dart\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"14a85fd6cea185cae1ea13d7fb393ee00d6b5cdf3a1f2cb25607763649cf76f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Ideally, all \u0060SdkLibrary\u0060 should have \u0060File\u0060, with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"12953886c1fe60e1fc8ed753ed166721d0299c4397e9b0bf117a6a6a856513cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Determine SDK version \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"dba5652d36e388b69598dfe73f46148c24720cc929e18b1db2ea216e6ce1b2be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): initialize the feature set appropriately based on the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dart/sdk/sdk.dart"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"4be196b66a1ba2702c47e1bced2f7ef42404dd7da374930174661b29038a4e7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider moving the method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/dartdoc/dartdoc_directive_info.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"a81407f61d682dc35353131479080b3b8d23017a30b4e45fb86d21f56722e181"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): consider encapsulating this logic in an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/diagnostic/diagnostic_factory.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba7a31b0f14ff690691c978b2bb0bd38ab858c67364850120a0716edc59ae17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Only if not _isPubliclyAccessible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"b096921a0db083fb8422007fcedf0d62bdbcb2b83353a20e99cac02dd0324ec0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove this compatibility behavior and report optional \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"f032cc34bfee0f826679486207d7848c1d3781a8bcb14781ff1ce8246efb3dd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove this compatibility behavior and report optional \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee78dfbd67867ad453a84cb855c73f9b21d8acfa5565f5c7efcb9ee428cfbfca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Revise the useful-read heuristic and remove the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd9592b304dd2d1410929f4dcda24b31ce396e5ee282068ae28a1cbdf634e6c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): There might be a better place for this function. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"d257e91d6c4a0dd91493920da04ab27a871a956efef4b10e795cb449caf167cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Report a wildcard catch clause exception variable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/unused_local_elements_verifier.dart"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"89bb53fc291fc0fd54ea7130a269af7ef1cb5eeb85311703fa103a6930daa2db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is not ideal. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/required_parameters_verifier.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"a77040ef01105ac92df96df962ba69785c2a0ff235246d8b1a2a17fdc95da8c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): See https://github.com/dart-lang/sdk/issues/53253); We should"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/null_safe_api_verifier.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a309706d0ca654b10571a0c60866ee143836af44e0e4f4ddca7f15561e47d43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): What about a field annotated with \u0060@mustCallSuper\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/must_call_super_verifier.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"57c2726a1ef2c9bbcc66d237226905fcb1488eda4766805051de6361d5a69b24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This code is duplicated for enums. But for classes it is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/member_duplicate_definition_verifier.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bac2a321af9cc06fb082e048f53ecd2a5415e06803e5d34fd6c2cda2f8c59f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): When clients do a better job of displaying \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/listener.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f3e46dce5e870eb972003c856282a451a2aebd6a2f7b5637064ca5857ab5a45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider extending this method to take any \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/listener.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"101c4df5740f0bd16af733157a75b10c7d9efca43f3e7e0127e700d30cd4ece7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Actual whitespace. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/language_version_override_verifier.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5d8bc3694063f72329b5ae173c3af0194961b088a47b42817da52a9094b3e4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This code catches some cases not caught in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e248402132b5540d7f79fd9dff01b0e8fed60cbf3b85c10cc2e6f42e1641fbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): In the case of methods inherited via mixins, the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"3619de02600b9b4d5bfffa4c20a4afd9a1e96aa18115948112c8721bf9d0c67e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Do it here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"02b36d2358c7589b8226c491d839db9529815c49fc57b72e6705bdc9a41f8f59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This looping may be expensive. Since the vast majority \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/inheritance_override.dart"},"region":{"startLine":1077}}}],"partialFingerprints":{"codehealthFindingId/v1":"61862a8d1bd688b7515f84770d55aa0c3c2187f6bcc2572b5917930d9b07dfdd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider another diagnostic that reports undefined codes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/ignore_validator.dart"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"82763a63965ac508f7994ff52b83513d39c73feee0be62967ce308437a508a20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/ignore_validator.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d048ecfa2942e8993816f09346ecac86413058bd4a822a359de606f7150a7d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): The comment below is wrong, given \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/error_handler_verifier.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"9256c7e9db6f6d8e0e9db7cb5a6959275ac51f951917a47e47af60bcd71dbccd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Consider \u0060node\u0060 being a \u0060ConstructorDeclaration\u0060, and use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/element_usage_detector.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e98db9f1cd825a7d1ea7f72744bb8ac9c8dde9f603c66d40d8b804a4ad51cdf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): carry across resolved units \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/duplicate_definition_verifier.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"a610b19fe6275f64b00972b6eab1cf0154544b771b44e78d8878518b121c5af6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Support combinators. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/doc_comment_verifier.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"4147777b57e02738d9d86ed68cd448c817be8111df57f4274e8012afa8efd67a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Support prefixes. This was done temporarily with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/doc_comment_verifier.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"6588c5e2c228992577012af7cd2cefaa14a01c916b1d8de2bc9095ec4fb9e04f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): We probably want to enforce that at least one argument \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/doc_comment_verifier.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"19590f8c5ef7cdbe56d09f8878d61d04af87c74f68fe1bde6ec417eded7baa7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): consider whether it be better to just treat the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/deprecated_member_use_verifier.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cec63eab35353e6354591ba9313d34721e12c2eef68bc647aff089ab9e5df7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Detect omitted parameters in a redirecting factory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/deprecated_functionality_verifier.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"788f3c8b09b45156a3aa6e5e788a12ae5e35d7f2e05ffc7b670725c5c8ef1f5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): ask the FunctionElement once implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/dead_code_verifier.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd2656b4faae40580b936e5c7874195e637d06002f5cd5f7dc78d58675f7c135"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): ask the LocalVariableElement once implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/dead_code_verifier.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e545d822e0ccf8609ee2049c5741f9308e39ac399617b8afd7475852cbd0d04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Change this code to avoid this issue. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/dead_code_verifier.dart"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c201e4a396e5c2635923a0386852a3ad3ec51a3996010fdb383ef40c03a9945"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mosum): Expand the logic to check if the individual interpolation elements are const. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/const_argument_verifier.dart"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d27e60291ebae277970bb0d912cfb457fe751cc5b097a3b35cea5d140e37a25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Move this in a separate verifier. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/bool_expression_verifier.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"e681d370b72ce430424f5a61192330847c01ced2945ec1d4945a799c62090669"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Check strict-inference return type on recursive \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"af72bf3be49a159dc68afce88f46c1aa1e8166be81ba07d608e63ad47d575515"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Account for @doNotStore, as in \u0060visitFunctionDeclaration\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":831}}}],"partialFingerprints":{"codehealthFindingId/v1":"a035ce06a6e0ce4c53d3f9e1b41e02f0f51874b3f8344f2b2ca671c63a2f1e94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Perhaps replace this with a getter on Element, like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":1209}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bb6726f437fccefea754f30cc4766a8106cdfc2e7d6b9d6a5011788ca29010a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Uncomment this and remove the compatibility test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":2028}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cd4701b40207273688a443b43d27d15d1d1a439c3bb0a6238ac53d011bf2720"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This will return the wrong answer for \u0060prefixed.double.nan\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/error/best_practices_verifier.dart"},"region":{"startLine":2358}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f449cd75dd5b0e52af881178b8154a81217e76dc069305c8179387a7b3361fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): See 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":"pkg/analyzer/lib/src/fasta/error_converter.dart"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"12f414ada4bd1acf59c563956804e91ed4b61d6a3dfb200c8626076cadc4c209"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): How can we be sure that no other \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/error_converter.dart"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb66d35e84f9c263cede1acc15a5aeff54ca3fee44ba17ea80daaeeda96da92d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Handle multiple lines. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"66792e8163969e3f13e705de43fd867f077d1856e69aa410ff789aedc3f1c524"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If we want to support this we will need to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"8420037606896164b70532216cbfea4c2b18ed458285559d7b580ca7b381177c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Rename the parameters or refactor this code to avoid the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":726}}}],"partialFingerprints":{"codehealthFindingId/v1":"792f066cdf91140895033ca19384cec04956b2f52c29210585662448072fe116"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle the case where there\u0027s a library \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":818}}}],"partialFingerprints":{"codehealthFindingId/v1":"48e9193e97d8d81b4e436d618d7717f98011a74ba2ea6e0742bbe09f0836ce6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This rule is rather arbitrary; it would probably be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/doc_comment_builder.dart"},"region":{"startLine":1187}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1b2619e41f2c407bb5ac64ff3d343a75cb16c30a0db20deaf80ee48de1e853d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Move this flag to a better location \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"06c2f7ce5efa369c8342ead34dc94ae1210638b9c697519f89d1f21e112ebc73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider generating this error in the parser \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"894c91929d028fe215d1034b8b0076211e4ff3419ec0665d766a9401ffaa55b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider generating this error in the parser \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":810}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d15e486f4609c34c1e5bee589d224a4e978f3c554afc67e5db664fedab59171"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We should not do this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d6c5b7b5c5f3ce1e545ffee828460712d14628766c28957d7c7b7731d2a100"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider specializing the error message based \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":925}}}],"partialFingerprints":{"codehealthFindingId/v1":"022297b63e48a405e47e77649250cd0a6c141c9098c2e613c4839f479c911031"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Skip the block rather than parsing it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d09270d4cf47f1ceec1121dd714881685e8cb2084f04202af4219668338000"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): consider renaming endClassOrMixinBody \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":1347}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc0eaadb3401785106953e3cfbec0521a22ba32f08dc86525ad6947adc95921"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): set up scopes properly to resolve parameters and type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":2092}}}],"partialFingerprints":{"codehealthFindingId/v1":"b97900f5e3107d85a712dd82de7405e3ca455cb7f52896aeb41c15a440c56fba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): set up scopes properly to resolve parameters and type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":3387}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf97d1bfc8e1cb711bad5e672b8fcbd470efd06507606a8ed6c46c305b753f16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): This seems kludgy.  It would be preferable if we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":2282}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a065895c9c234d6de818ee995623ad33e23d18d614e35a3867486456f1996ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove this method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":2379}}}],"partialFingerprints":{"codehealthFindingId/v1":"2816456739edc1dff51eca97f1389627c06c95d5b2c229e5c50428ae6a1e95ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): According to the specification, \u0027rethrow\u0027 is a statement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":3060}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a5a70e5f5efd24cd55393188ffb49e1ff6042f55bb7f7d234e0075a9994a56f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Implement variance behaviour for the analyzer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":3567}}}],"partialFingerprints":{"codehealthFindingId/v1":"401c640cde8eb79e2160be171776335811ff9b847f37f669a837b6f8a789ead8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Don\u0027t push initializers, instead install them. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":3613}}}],"partialFingerprints":{"codehealthFindingId/v1":"6403eb78522ea0b9d9ec8d39babd4fa2e8da4a889db5e9577b2f109d69919527"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Update the BodyBuilder to report this error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":3802}}}],"partialFingerprints":{"codehealthFindingId/v1":"9402ababd548e26a046940ce56405ceb065c0ad7e662327a5da636a58f4f7d1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider (a) extending \u0060ExtendsClause\u0060 to accept \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":3947}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c80f6e299ca47f53af718bf10bb882902361a80d07238edd5227bce0e04ae1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Removal of const factory error for const function feature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":4033}}}],"partialFingerprints":{"codehealthFindingId/v1":"1761642064fbb0d356b1320b76de216c42e7253afeb2732a0a316f609d18a54d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): The parser does not use [handleQualified] for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":4137}}}],"partialFingerprints":{"codehealthFindingId/v1":"642422677492baef4018332c3468e5cca384684dfb71a805659e89866641064a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Change the parser to not produce these modifiers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":4161}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4d4166802dc1691f8a02bed022f0d954ccb93515eb15de681cf7dfbb53c5307"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider improved recovery by adding this block \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":4747}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cf531e9289f2f4bf1927acf02531dd39e7d87e134e10d7b557d7b50bd67d56f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider improved recovery by adding this block \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":7246}}}],"partialFingerprints":{"codehealthFindingId/v1":"576a911738100a454018a50dfa33b2a5dabd95b5c971f9da52ab78ba8813d6e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): consider creating a AST node \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":4757}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f6d6e57a0058e70fb16ae7b683402c935aca5d5d5e89bf2c00936a832750df4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Change the parser to not produce these modifiers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5140}}}],"partialFingerprints":{"codehealthFindingId/v1":"7234476db2a8438ae2ab824a92a5178cb7650ded7c0fd36887cd371a04f8b04f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): report the appropriate error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5305}}}],"partialFingerprints":{"codehealthFindingId/v1":"f621bb92e8d2bca580c922bc98a9ca0671a918b96a8436d3d8de3461f543e6e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5485}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2e3daa67a3894c60cab692f679b05b94a5ea702079e9432a6d9d66968b5fd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":14439}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c0c0da5cab9af3c1877cfdc9f1bf9249c0f8d1f7aa3e31199c1b7190b8829f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":14445}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d5e3355311b9126ee1303f53c7024600dc297b17912850aca0ea248cf93e15"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":14451}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2d1d42c789837a893d039dcdad169c7a36aa4f39286aaf93cdf263769a2310a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":14457}}}],"partialFingerprints":{"codehealthFindingId/v1":"f27dcd9ab024929754a0ead0d6c0990548b1284c7ea87705c4ab37485634cc67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":14463}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b712d96d8c963b717d634d661933860160e76758a828e8d6fac39d15033b161"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Ignore this error until we deprecate \u0060native\u0060 support. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5510}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e44e124649407e6da50dd832e70869bb86632935669cce8bb512b5763e3d24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Support header recovery on extension type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5573}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfcc6bb8d21aee52bfe6ccd718877dd7247377c5e2d40ae0995903d081b5875d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This code would be easier if we used one object. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5592}}}],"partialFingerprints":{"codehealthFindingId/v1":"9881e6110cbe47d1ccd2a48916fc28facc229d1ecabf1b2fa52e79345d8525b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): is this sufficient, or do we need to hook the \u0022void\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5889}}}],"partialFingerprints":{"codehealthFindingId/v1":"999db388349b81c88b2b3944f1510ddd951947c65d47be4c23d31cdef7da9c3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): is this sufficient, or do we need to hook the \u0022void\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5902}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c9f05cb40cf6f4d094573ef41d812cd95033998029540bea36e33d2e4aea36e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Not efficient. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":5948}}}],"partialFingerprints":{"codehealthFindingId/v1":"3faaf54461395129de8fd168f035b37856c571504f465605a79efbebca0dc232"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Update OutlineBuilder to report this error message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fasta/ast_builder.dart"},"region":{"startLine":6181}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a7ad14c540fbc7f8b2d7aaa7d0aa5a0de529e92d96f91a70f9e5ad7313295c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove after adding all tracking \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/requirements.dart"},"region":{"startLine":2574}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a231ed0524f4098641117c807b7e7ae01e3034c95a72d9fe74811a8be2cdda6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): hm... maybe store it? And reverse it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/fine/library_manifest.dart"},"region":{"startLine":1740}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa56b958c58bc5cb09b2ec14ec45c48f6e06710a49bf107474d7b257e1c3aad8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(64210): Update this to use the native version for wasm. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/utilities_collection.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fdae8353ec80cee5f9f767c03d52ccc52905efb57710c9213f4bc8cbb7fc209"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Determine the conditions for which the type is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/static_type_analyzer.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"82a6ad1de348b40e4a048c8efbdbf170f5330ba4bf2311c704a22707f81ddf13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): When this check is moved into the resolution stage, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1cac1881e843fea64f831905bcf177d38f22e792b1b43bd84faf9dbe74521b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): make this type argument unnecessary by changing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"54feca4c941a9c711cc62fd46940f99e4022a054bd959c686f85f32b4db5be92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): address this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac58264b5ebfee32c3f7a86f4fd2ccaa66e4eecedd424baeeae10b57f4faf97f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove this method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":1379}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f485e8681d6805e9eeb21cffda98061c2f7fde4090a94c149e106aae373fe97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): make this type argument unnecessary by changing the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":4321}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1ebd01c9ca16d79c6aaba4a0215ac43b949cc6535072b20fca81321ac16126a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): try to remove these casts by changing \u0060node\u0060 to a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":5036}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c2711c0999220ba59b6b3d2bd25811b7afb1a28a7c29ede6ae03720b38acf67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If the loop can only be exited because the condition \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":5216}}}],"partialFingerprints":{"codehealthFindingId/v1":"abfff448a02ed56cdc2e44919e536776a18d4ceeace21a31da0ab8f50b24949f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): move this static method somewhere? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/resolver.dart"},"region":{"startLine":6430}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cf165243ed9cc72d23a00e54e197cdcdbc8405480f8c2309aa42e8ce80cb92c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dacoharkes): This results in an error message not  mentioning \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1158}}}],"partialFingerprints":{"codehealthFindingId/v1":"711cc56c6db5733af6c0932a3e7e5d25ce8db0eaa8a0d57f4eb626823f9c2c97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Validate that \u0060f\u0060 is a top-level function. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/ffi_verifier.dart"},"region":{"startLine":1954}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe6896422f8581cf68785f3e884ee42ce3e021359b48b507ed471ae0d2230a46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): What about intersection types? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/exhaustiveness.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3cfd9db015139efc06240fcc69b7ae043713d3bf336100986052490edd9c166"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): What about intersection types? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e767335b62413d01730faf17b8c5265e2da0fe43d7e8e93702bc38b1b18766d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Assert that we have a constant value. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/exhaustiveness.dart"},"region":{"startLine":709}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b6969b7bfb73e11698fd29724a05ae447b0fc88be02701d7a372f7e6d5044ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Verify for all mixin errors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":1870}}}],"partialFingerprints":{"codehealthFindingId/v1":"0570f01ea080eea73439f40215f5ee53ddf38fb4d2ec205c53e3cafa21114bee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out the right rule for when \u0027native\u0027 is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":1929}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5664230b7f029c68734643d65e145207c4fe3cbc4456c69bab3446a314d497c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): use NullableDereferenceVerifier \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5074}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3d267d4261395c4bef4d262f62b5d0a4eddcc331abacac197808af9adc80b31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Move this into mostSpecificTypeArgument()? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5089}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdb79387328600a755e72cea06f1be5f553a414d0d1e88c3b4d1c707326139ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove this method, when all inheritance / override \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":5325}}}],"partialFingerprints":{"codehealthFindingId/v1":"14681452c260d75cb7b938fde4597cb3ca161b27353236fe9500ae034bef346c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Unify this and _checkForSetElementTypeNotAssignable3 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":6447}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2198996935e3d84261aed55f757523675c599cee48528386397c20e7f4171a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This needs to be checked after constant values have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":6478}}}],"partialFingerprints":{"codehealthFindingId/v1":"63b826186fa0f1aa9078d7603f9875f01a6107266eff68f66b2d2cb66314e247"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add any tests showing this is reported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":7114}}}],"partialFingerprints":{"codehealthFindingId/v1":"95f35dbda2951d3b60fffd013dbb2064133d20f304906e242aeb2bd4e91a874d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Insert digit separators at the same \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":7442}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa70a0130da7b697397fd24265b494838e32c81f3f40e54a39002ba087cd954"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Unify this and _checkForMapTypeNotAssignable3 to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":7672}}}],"partialFingerprints":{"codehealthFindingId/v1":"77a4146acdb9bf47bb7b38876d809f98b5624a249841a92f868f1de4515978a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jwren): Report error, constructor initializer variable is a top level element \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8144}}}],"partialFingerprints":{"codehealthFindingId/v1":"290d2a4adf0ee5cfe0f9f237e49a8cbdcaa1421450d8ad08d6e2a9316041ac8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Convert this to return the element representing the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":8733}}}],"partialFingerprints":{"codehealthFindingId/v1":"5365f321003612487a40c8b427a43ce9b74d449354fc1edf7de26d0250d23054"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Don\u0027t report this if TYPE_ALIAS_CANNOT_REFERENCE_ITSELF \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_verifier.dart"},"region":{"startLine":9227}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4fbe4bba3b15d36909ec93fe71336ffae9b69d76f994cbbe07ff5b19c7f7936"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): this error should be based on the actual type of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_detection_helpers.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c7a617436e1c664f85db5dd3b014233d4de02294ddef215d57e4222a95093a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Define a hint corresponding to these errors and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/error_detection_helpers.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"6775b08c3ee9122bc211573916faf8292e9944a2c0ee48c8710eb36f105e9525"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out whether the element can ever be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/element_resolver.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"acb9be2daaa8a3d21a54b3a374388dd64d4c8a4bc960c2f35074d7746bee9a88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this error and decide what element to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/element_resolver.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"43e2d1fcabfc254c21f99e8c606847c93c337e9547f020ff319ea86ad5c5d2f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Defer this check until we know there\u0027s an error (by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/generated/element_resolver.dart"},"region":{"startLine":353}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b30885042b0bf76fdaad9688dbe18eba597ff0d8210d8de65cdcdaf3e9b4b96"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This process can result in collisions. Guard against this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/lint/registry.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"a68bf4270ed7b7f4d8919cd0ccc87b41b1c522f278aedcbed3e995f6357e9f8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Simplify [checkManifest] notion. Why call the method if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/manifest/manifest_validator.dart"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"58766c6e789cb4d50fa827a62c0094c48197c3f73d7ce1866d796804940bfff0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This method needs to take a \u0060YamlDocument\u0060 rather \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/pubspec/pubspec_validator.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb743cdc5a461c25c5a3560c1b187e096bd81a71b6ef00153211525fe195d1e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Should we report an error if \u0060flutter\u0060 contains \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/pubspec/validators/flutter_validator.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"45540ac80d56e9e9d6bbf41bd4c00bc421330602aa76eb353e29e4bb9b15f9f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add validation of package references. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/pubspec/validators/flutter_validator.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"e805222f3f601e6a78e9e0b04cb49c7d1de66b76900e30a4083f9223b88b6f45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): There should be an index on this instead of trying all entries. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/source/package_map_resolver.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cde9d92efd001fe0ef69dfe0104ca203b096b6a74086f317839cf65091f0fef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We need a solution to avoid these paths at all. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary/summary_sdk.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc1c075cbae5b26d80c752466da41dd9a26a2f88e13eda3e3b733d91562e5c24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): optimize for ASCII strings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary/flat_buffers.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"b127645049f4b4d1fa11ebe2fe8d6c40e1c02e7d415c738e629fe1bd9beff105"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): TokenType.DOUBLE_WITH_SEPARATORS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/tokens_writer.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"238e7fbf8a635238a95c247c9f6e906e78f90b9214533ea4d9d41b1e00787e97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): TokenType.DOUBLE_WITH_SEPARATORS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/tokens_context.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"13254b711375431677a907e36e43159245c01879f66a600abb9d7a0d3b3415a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): TokenType.HEXADECIMAL_WITH_SEPARATORS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/tokens_writer.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a833ee28274dfd99502af108de862f249ded0f72437ffd77221a381ecef9e42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): TokenType.HEXADECIMAL_WITH_SEPARATORS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/tokens_context.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e8ba5322fa681e072629fb08a8fecf276fc3fb28780440d316b9ebdc20d4ca8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): TokenType.INT_WITH_SEPARATORS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/tokens_writer.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"589f9a0d957a0772991e81ab28e033ecbac7c9403c62cb909b92dc4a3bb56b26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): TokenType.INT_WITH_SEPARATORS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/tokens_context.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0691721785a226d15fa58846813b3302ab21d71dab1d1624f0167cc5354b4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): TokenType.INT_WITH_SEPARATORS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1388964977e0d7e9f1f6644985eb0c650eb7abb3cc56ffe1d2479c320358f85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): TokenType.INT_WITH_SEPARATORS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":925}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f9d0e9d8ebfb0333a8542a066c75a8f4eec1a95166327aaac18917804c220b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Only when enabled both in the element, and target? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/named_type_builder.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"c35029122a4ee1067a2017dc7d406d26b1b4182b230526fec07e99e70efa2683"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Extend this visitor to visit types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/metadata_resolver.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"eabd0db8fd73d5a729a4f7b7d673373116ac6ce08dd7bf9420b56f6b04ea33a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): check that we don\u0027t set reference for parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":1758}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd21eaf0c021bcf88dd3c1402e0c7b735ec42714c2b0c6c07b26f01de6f0dc1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): check that we don\u0027t set reference for parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/element_builder.dart"},"region":{"startLine":2220}}}],"partialFingerprints":{"codehealthFindingId/v1":"929c275a2ec773731cfac9d155a5db7de27d59eb390b59359f4c4b16bdb48229"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fshcheglov): Put these separate flags into modifiers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"02414730632b2c925f7864ff0a4c6a68388abda9877243218f5294b505814009"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Deduplicate parameter writing implementation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"64d0999ac1502c9ebb86f0e8444abe0d9b79b5d4908896bfb3c10b84a71fc8ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Write raw \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":1022}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb6a147c60ea713c078f33cd6f2cd68e02d57eab6ffedccb5f009d3432423a1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Write raw \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":1026}}}],"partialFingerprints":{"codehealthFindingId/v1":"638a29dc1b29b9301e402962bf4fb88120ef77fcacaa7ecbe67275ea669745fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Just keep it null in class Member? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_writer.dart"},"region":{"startLine":1159}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f358777481b50ad776bb4b5aaf5505c40c0564c1ead696045fb664c1d7ba35b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): read resolution information \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e0293427717e7e6d279862db80a0c4bbfc9c64f9e4ae67d05f6c591a44ebccd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Deduplicate parameter reading implementation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":757}}}],"partialFingerprints":{"codehealthFindingId/v1":"86fc6a58a3e369e4f331e1acbf87c0d395d4617e588c630a0bed7e18201938bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): type casts are not good :-( \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":1242}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e01c9f311cbe44fb01b5a2f61975fb8b0ff613059181a548b8d64a36df16147"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): review later \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":1714}}}],"partialFingerprints":{"codehealthFindingId/v1":"72773a47bcf0f963f7a9747130d0d702a5ec09c3a215d619a95e00efc1106e82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Optimize for write/read of types without type parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":1756}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2fa97da9e3bc88cef60e5ab3a4e4718df4090cd4bc3ad8f9636aefccb87e37d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): reuse for formal parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":1758}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3e2c54aadac6e8254e69d8618fddb25301389c555aa130566fca280bc13061"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): why not element? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/bundle_reader.dart"},"region":{"startLine":1849}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aba3bcf4a66935e76feb0d00bc5bb84e9a462b3e0eb463ed6f1906a4cb10bb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): too complicated? Read all? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/binary_format_doc.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1399884b4d74ff326273cd6e155ecc520307fd72d02cd27febc4739666888cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): too complicated? Read all? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/binary_format_doc.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"e970cec768ce09f5a54d3c270e52c7e91ab1b45d6e768a5cf42694bfbf207ca3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Don\u0027t write type, AKA separate true \u0060int\u0060 and \u0060double\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_writer.dart"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"91e2aa0722435c4880b55ac6d13fafa08cd3e1ee41cff4f7b5e9f9e684ab0109"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): In actual prefixed identifier, the type of the identifier. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_writer.dart"},"region":{"startLine":792}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3398dac051d99f471684c2148cc3469e9e51ce50cea54b894cafcd6b8a832f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Get from the property? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_writer.dart"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0d94840fe73105b87e57350e53f5ef53aa1d8c8ff99d40806e3f0922de09969"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): add type parameters to locals \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/summary2/ast_binary_reader.dart"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce304efec2c6277b531a40168d055d8914e125e68266afb74c8585484ed75a2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Support overridding this with an env var (similar to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/test_utilities/platform.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"274f088bc98d189a7a4e556eccf2f5fc094277176718fd22ac9e381df5f3fe62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Try to minimize the number of explicit calls here from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/test_utilities/platform.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c10d1d271d65b62cd0f941556a1575e3795bf47bec2633e5beb05c30ac26e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Deprecate or remove this class after the internal uses \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/test_utilities/mock_packages.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cbdb624790c811d69f6a39d6f49e1547109f60820d4cd82835cabeb62bd2bd4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fshcheglov): rename to formalParameter() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/test_utilities/find_element.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ca3ba0c19ff4ea87b446e7a9095012f949de276c605a696e3a669d18600a239"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Generalize this mechanism. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/util/file_paths.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1c53a0d262cf9c7b0300e6eda6e0ee75d3f1eab06526bd2189288d5ddf6968e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): find a way to print the error more nicely. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/util/ast_data_extractor.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"81fa925b398961d5c82cac6dc430d31075694a07e06c82363e693c4dafe7b2c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when extension types are supported, make this an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/validator.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"21a64fe5be8b701cf8722ad423cc72283ce331460f50f1281132f33ca8a6bd62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when extension types are supported, make this an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/scope_analyzer.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ae69ff6449cbfcd5df5a58d1dbf182c42cf662f997ada9138c55b440c86a384"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when extension types are supported, make this an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"01bff0cc152954443fc952f581fa775ac6f4da2adf41f3f789f8822c77cd6326"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when extension types are supported, make this an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ce018b4b49bac1241542fd10f1950f56e7e22b2f32019793f303d7560f9ccf6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when extension types are supported, make this an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc119886d6eaae00727544709f830baf72bd0c6c723f84f573d8209c29133267"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when extension types are supported, make this an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"b169fca32bd0c9d2d972b50cc7d9e5e4364b34dfd04190b6320d50806ef7274e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when extension types are supported, make this an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a7c9b1d642db501bc8d22efdd2d79f0acd566e3adfbd284d7ae6f79b841ea8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when extension types are supported, make this an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"4294edc948f78f133f4b16911204ef3ddc452b8f28d7e506f70b2d4895042cb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): when extension types are supported, make this an extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/wolf/generate.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbbd6c3280708c84dd85a37c87ebf3c71ad487425ede7390ff0b5d79849d2f6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): is \u0060putIfAbsent\u0060 the best-performing way to do this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"d25d149c0ac2e6ad5d06e9c9e157506e46a34b1c8f5774c57033574174e9044b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): is \u0060putIfAbsent\u0060 the best-performing way to do this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ir.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7e0bda025938c479df7e0b9bd04ea0c931276fe82825968e1155cc20141256c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): is \u0060putIfAbsent\u0060 the best-performing way to do this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/coded_ir.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"b75e4e7413ae41c276a4b89b19ef76e3b1f91863de8fc7103fbf757106686e57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): is \u0060putIfAbsent\u0060 the best-performing way to do this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/coded_ir.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"db7408a1181ce8c6ebcad68bb0274acfc3a0651a4f31a5fb2a92b7b743fb887e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): is \u0060putIfAbsent\u0060 the best-performing way to do this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/coded_ir.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c11695ac61ce3a872fdc7d2595b8b7a01332aecc7d6a60171b5c83045cf9812"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): do we need to handle out of range integers? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5e3c8326fe64362045cf247a0102fbe1215ea1bc3a872c07923bef78f20b68a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): handle cascades \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/wolf/ir/ast_to_ir.dart"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"4068c4513a76d341f9071d562c2833add7a8810d162f99aafc76ae5ba2983119"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Finish switching to [packages]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/simple.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"132f027b14ecdb9d566c9d507017bd601d8bd35ab2354b4e20643fa86cee8ce0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Finish switching to [packages]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/gn.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"25295b0b5c962b51afae5f77f19c9a68ef9b9997d1414c6d3fd9e44b96d3108d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Finish switching to [Packages]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/pub.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"593c6a4c50bf7146b4705c91976970e64c19d4910f0f372234f80496b050093a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(keertip): Check to see if we can use information from package \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/pub.dart"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e77c8614676b2f383e13811df7b008f43d447fddbae7513ae576a4aa1cd2785"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider differentiating based on whether the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/pub.dart"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"d741867732d6b3baa1a7b6cb98f38edbcf3f42338a3723453242ee3274139b64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(michalt): Remove this if we really never need to shut down the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/blaze_watcher.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"b841e96c262b7025416396a1f9b8fa3b8b767d1c4c8c8f3094eaee5f8fe1f466"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Implement this by looking in the BUILD file for \u0027deps\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/blaze.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"c03bd543c2e2045b90e1db8d783954b79866abc50fb866f22625b0a823c06402"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //  lists (same TODO as in \u0060BlazeWorkspacePackage.packagesAvailableTo\u0060). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/blaze.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee83a8c584073294fd9f2dee631e2c49a94b8a0c1225c468e01e63245e1c3dac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): If [packageName] could not be derived from [uriParts], \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/blaze.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"b613d7200ebfe1487ce7268219a68b1c07a9629eae52014e4ee60b60e57d9713"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement this by looking in the BUILD file for \u0027deps\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/lib/src/workspace/blaze.dart"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"5953f5cf40751c5db849b25a7f75b1657fde47b2b80d29cd41012f742e8ef261"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/verify_docs_test.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"e22fde7f19789c0b25c891e74e94b5ba20d696f0159d4aa75e981d0f8a7ee867"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Report this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/verify_docs_test.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"741a513f1f9ad3df11d1e44d57954450db9ba9104973b678ab5a935324768460"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): When the files outside of \u0027src\u0027 contain only public \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/verify_docs_test.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"75c48afc466cd2d799ddef5a8b512460162f51c9a76b72af8722052e932a4e27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): . \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/verify_docs_test.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e99482cf9991eb7cabd850275d92029a2a99c12a2fa331dcb16a20a226ed359"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): This is always reported with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/verify_diagnostics_test.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"540ab6fab675e203e998973cb0e0110e688b4ecfa9772565d06633eadf638109"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This doesn\u0027t check to ensure that there are no \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/verify_diagnostics_test.dart"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f4207e93044483ebe6281915ccabe4649f5688cba3a2bf1f9a383579e015c2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We should consider reading the list of \u0027core\u0027 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/verify_diagnostics_test.dart"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"80882cddde7cd3a03c2e6020fc8cb24ca73beb10e596c00bc316038febb4ce21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): Make these matchers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/utils.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d41758a7ace35b7f8e0cd7244e120cff1fe327d3bb0146d3b547c1af83ec53a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Decide how to test this given that we cannot \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/file_system/overlay_file_system_test.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d8585701769de8e8e7bf9b090b03c94517d7f25e496d7e333f6756ce8916827"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): I think this should pass once the inference changes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/strong_mode_test.dart"},"region":{"startLine":1069}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1353667c78dc17a24cdfcf81013d9cda78f55ef488cd0a895cd16d08ba73fd0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/strong_mode_test.dart"},"region":{"startLine":6001}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f4cde9b508892493c47ecaaf4e4c0db03984a636a9bf1a12421fb60e34946a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/expression_parser_test.dart"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"051ea2fda6f4c7d90a56cbf891ba43e38f5b36ce65feda1979acd8ba34ed31b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/expression_parser_test.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"d04c861d77ae2ccf0ec0db4b59f4d749edc50cd40b21644b213617d90c643664"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/expression_parser_test.dart"},"region":{"startLine":6271}}}],"partialFingerprints":{"codehealthFindingId/v1":"68775e5f24e536e74d12e9ae77b21548cedef2ed86e8a678852e1e168c1ddb53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/expression_parser_test.dart"},"region":{"startLine":6311}}}],"partialFingerprints":{"codehealthFindingId/v1":"95260ff47649f70f548736e46fd74fd4201a9906958085ae4d8e66af1960ae4d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":1441}}}],"partialFingerprints":{"codehealthFindingId/v1":"56877cff7855fc223d0adb917b5cf7ac4b5fb8b58025e545e62cdec7eadbd6c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":1898}}}],"partialFingerprints":{"codehealthFindingId/v1":"538f0c8c9cd67a7cebc3b123e6e9de084cabeea258b3306e2b3378e4c06c3069"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":1908}}}],"partialFingerprints":{"codehealthFindingId/v1":"74696ef3f52563021e58b34fdc0c4e60a5a7c723f5d4ce0f147599bf9842c4eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":1918}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cbe2f2a58c356cf01c6e980aa25d24038374731f329fc7330543425b593820f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":1928}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0292b5b174da61fd7dec3650ea77198df19e59af1059087e196f8741ddc0547"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cd445c731d1d2c085e8c77aaae6c99177357841766c788f5d6c63449df583d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f04093d9d4bd4ef107e69e0c0f4afd888201196ce4602a854d0d962a241b920"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1363e23173c825ffb2f4d9af9476bd75998806f3df757404af4879a1d2ee83e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf0e71820a784f64547199672473163551cac30517b6d821ece22c95d8b8e1fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"24e60d58a125bfd2043f6986ac85cb3590e6f8ba76cee234bfeed9ec41e95d5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c0ae78c356fa7a2bc46dfcd323aa1e71f2f70da51857000cb7cbfb0f7d54ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/constant_evaluator_test.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"36843b38fd5279f1e50640fc3b8a7aee0231228ddb8bd5ba4ea8dda38f756a20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"30160c1cbabcece1b2b90d840c6d766622880555fc938c3f5fa151ed1b70a28f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"ade97a3f0e20a1ac7acdd3f22165da015ba343ec16a26a9975cdb73014bf9e1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_inference/list_literal_test.dart"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5d19bf0b08b07eb25147f184d3bb330ce90494cfec47ac83bb6905dfdc9093e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): fix it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolver/exit_detector_test.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"a74a8ed9fdf4fc041a11219acae2875b7454e621a8a823dcc55b4a94edb4330b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out what to do with the rest of these tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/static_warning_code_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"d68a0755f4b5984ff92c274c93b6e9ce237bfc266b65ab83e86a02f5bf3e3d3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Figure out what to do with the rest of these tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/static_type_warning_code_test.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffef3dae126498e50ac7e43f9bf27fbc72aef0e4de5574d07b2e452278dd9259"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement tests for this method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/simple_parser_test.dart"},"region":{"startLine":2461}}}],"partialFingerprints":{"codehealthFindingId/v1":"45a768478b87ed22bd0400b5f83b7f04446abb78efe35ce1c875a1c42169c3d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement tests for this method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/expression_parser_test.dart"},"region":{"startLine":5429}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dac83a4bcde89403681526e13ae2afcd4f03a210298d0ac14baf64f36491bb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): disabled because we don\u0027t resolve function expression \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/resolver_test.dart"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7be1b26f33d144e75dcc26fdf8a89a617c156bb0784e52abbb5881934f30ad3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): do better error recovery. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/patterns_parser_test.dart"},"region":{"startLine":8209}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e971338d55d15912466e8cf86aafa5e6094f598358c835233073c9a01f22b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): try to improve parser error recovery in this scenario. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/patterns_parser_test.dart"},"region":{"startLine":10639}}}],"partialFingerprints":{"codehealthFindingId/v1":"d03bf78864ce97571a82fbada9a133e6776db92b084b9aaa4d6a3442822ce8aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): try to improve parser error recovery in this scenario. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/patterns_parser_test.dart"},"region":{"startLine":10662}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1a98e8296ef0cbf4c4d6e8933d94ab7c99c3923c4e155e757e07bcdd63acee6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): if support for symbol literal patterns is added (see \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/patterns_parser_test.dart"},"region":{"startLine":11174}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb64f060d904fb41543daedfdd544b8780cb49069d9c9a15d51fee95a58a531d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Use null safety in test cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/invalid_code_test.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"dde8bc81ce03ea767c76ea63f3ec1576cff7ba2b9113301323965a1bfb0e9e6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): assert AST \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/formal_parameter_parser_test.dart"},"region":{"startLine":2723}}}],"partialFingerprints":{"codehealthFindingId/v1":"722996d05cde4f03c4dc5b2ad7dd85afd4beb72bd9908d62d06134fc80327997"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove codes when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1d39cf234f90d6cda35a300ec66f5c194a74e326bccb8b0b442b8805aefc381"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove codes when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"c16e4d896210a63556a366bdd2c1353a6517e691dd5ae1886605ebf98128e168"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove codes when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"9999a16a50d065b172b313b9dd4db34c147fcce3a5e58f684c7f5bbb6c582d1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove codes when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":1159}}}],"partialFingerprints":{"codehealthFindingId/v1":"166cc1aa4f0d1709b4cf5cfb78bbea3ed7fdc2057a3611de5723fa832d42bf52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove codes when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":3540}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a451b322341a8af39226048805bc19ac03ffc0e64b9f04148d773933138ea7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove codes when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":3874}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa9ff8c1620b433bcb0424116b7aecb8814f03ae3db48486851e257f83bc134"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove codes when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":3889}}}],"partialFingerprints":{"codehealthFindingId/v1":"b84cd95d6b81aba689f646d68b0b8330f048c242b28480e983b70dc2efa6610a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Remove codes when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":3904}}}],"partialFingerprints":{"codehealthFindingId/v1":"72076f1e3481f957f39bdabaed3b43466d4ea7a9d8e22a5da5674192cd5b5b19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Convert codes to errors when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":1148}}}],"partialFingerprints":{"codehealthFindingId/v1":"486ed79d6f302e10d83e361fff7b030612738e46d6e7845090c1f46bf398a3fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Convert codes to errors when highlighting is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":2054}}}],"partialFingerprints":{"codehealthFindingId/v1":"803a63f4336e02fae16d7153703b506c67f611b430acf0926e8dfa9875695470"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): ideally we\u0027d be better at parser recovery here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":2338}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2e5d4ce44f03ce00a0156f8f384350170ecc3cf82b07f878fc814d5a527e7a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Improve recovery for this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/generated/error_parser_test.dart"},"region":{"startLine":3709}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba243c835846b6ddef5bba12182b639048da3e15df66c42f96d79e7534277fd4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Add \u0060isDartCoreType\u0060 to properly recognize type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/id_tests/constant_test.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"7012e8d9c3174cbf2c4068a7dc63bff366d226bd71fce9841bab610c8cf8726e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Support object constants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/id_tests/constant_test.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c3e88fa556e7ce45c9da284bb663c040ee4de8e9cc8b42dfaf92306152ca421"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): add tests with duplicate legacy plugin names. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/analysis_options/analysis_options_parser_test.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4c6e716be4cee55b1eac07418be573ab37ea2da7617fe664eadc2fd30d36715"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove this test together with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/analysis_options/analysis_options_parser_test.dart"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0764ecc18ae8a15ebc8f846f26159189bf84bd773cd987caa099bdd81d9a312"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Enable when we deprecate strict-raw-types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/analysis_options/analysis_options_parser_test.dart"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bcfda6dc7c771303277ef514df5f7848516fcdb9204d857e719e5bd8fa207ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Test legacy plugins as a list of non-scalar values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/analysis_options/analysis_options_parser_test.dart"},"region":{"startLine":1507}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd176494cab224d1954e116986e216ead73415ebad2239be2e8c62eb7c7321c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Test legacy plugins as a map of scalar values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/analysis_options/analysis_options_parser_test.dart"},"region":{"startLine":1601}}}],"partialFingerprints":{"codehealthFindingId/v1":"b009b749b437262fd93e6c38b1474f2073d62be1b604d69a7bd90dee0f623a2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Subtypes for the aliased class should be reported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/search_test.dart"},"region":{"startLine":1888}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e799529966b30dc767fbcd100e7367df1fefca5fce93f7f3511dd88e5a0e7f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Subtypes for the aliased class should be reported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/search_test.dart"},"region":{"startLine":1909}}}],"partialFingerprints":{"codehealthFindingId/v1":"f92267ce3f242961dbcc082dbb80db8459dcfcf82b9f58c1373d91af57bdbe8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Subtypes for the aliased class should be reported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/search_test.dart"},"region":{"startLine":1930}}}],"partialFingerprints":{"codehealthFindingId/v1":"3083618e7663afad33d80a3d540697c0e6867aed87706aedfe9c38987d4a95c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/result_printer.dart"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d73901d3a9616bb3ffd7f736a80a73ac7764e5c6dbb1affd56e018b0c7d5690"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/result_printer.dart"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"be672758413f006d7e712b63b66a6f8bd556b579f77626f3900df89b24b0c021"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_element_model_tracking.dart"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"071f9641a4b14e4638b9adbf581445ca3c4bed95c33e570236a6008905233cd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Update the manifest printer output to show the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/result_printer.dart"},"region":{"startLine":1834}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7a2bfa3bf99ce943760e8f30761be2f80f1623cdb40ea9bd56d4efb8779eef9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fshcheglov): Use this in _writeInstanceItemMembers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/result_printer.dart"},"region":{"startLine":1983}}}],"partialFingerprints":{"codehealthFindingId/v1":"b81d18b7b746d430f118c889082a3ac920010c282d2ecac6d9594c286eedbebe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Resolve only the initializer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/resolve_for_completion_test.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"11b0d44fd639c39606f631c4f687e368a6db60e3b795a7db4a42f367972566a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): The parser shouldn\u0027t wrap the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/resolve_for_completion_test.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"91de1bcce0c22b88768dfd95c0a84aa374ae699891c760842f53d2892db2e880"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): The parser shouldn\u0027t wrap the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/resolve_for_completion_test.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"39746beffd46a3e06bf63d9629f92b271b3f611a1eca70ebfff07170313e1d17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Implement \u0060asLibrary\u0060 testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/file_state_test.dart"},"region":{"startLine":1081}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6463556075e3b5561a7e024d2bd0cccdec8380d35a2e96df842ec019f4a5ad3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): don\u0027t switch to analysis? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/driver_test.dart"},"region":{"startLine":4155}}}],"partialFingerprints":{"codehealthFindingId/v1":"12f839b428884e3738d39694e6c4025e28d3dba4321315b19bd74f8ef1811833"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is not quite right. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/driver_caching_test.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"60ea33c8d226692832f27f33ff0dea1105a1d72950fe0b0fef20d6fc118fff7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider moving this to AnalysisOptionsImpl.==. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/context_builder_test.dart"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d5333ea27ad87d996387f7085fc22bb8df32a33ecf95dd610c2cd919fbb8b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Print it with the cycle instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/analysis/analyzer_state_printer.dart"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"52980765a48fed775997b13b913bf61cc05c1a7de1b101d70310c8c5b93d2052"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Update these tests to use markers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/utilities_test.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2a72f658fc032051097ddede5a4baea78e155b0d16dde4fc98bd9637967c11c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): restore \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart"},"region":{"startLine":1644}}}],"partialFingerprints":{"codehealthFindingId/v1":"68ecee26209dd92bbf0e9f28c85449ca9aad4c4d72637924f40727ddb208c5ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): restore \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart"},"region":{"startLine":1654}}}],"partialFingerprints":{"codehealthFindingId/v1":"a198c2e0d267c97cbaa97a1fff040d27d81fcd00eafa9b31968ceac3f55c33e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): restore \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart"},"region":{"startLine":1666}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0e31b27068391177c43a5db9fcde7033fe8dd6044c14a85078efcae7ccafafe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): restore \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart"},"region":{"startLine":1676}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7aa5057df23e2859b59c372c9776ad6a49d0e7a27d8e7c59eeb2a9f74a49c0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Move TestCode to the analyzer package and make use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/ast/ast_test.dart"},"region":{"startLine":1952}}}],"partialFingerprints":{"codehealthFindingId/v1":"9109a1ee4f6fa170640fb8914f0f664f3ce438d73af93a6e5b3ee06536faa318"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/constant/value_test.dart"},"region":{"startLine":2292}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa4d56f593e43fd7442210095b8c7d12ac5cee2a9c32060e77bf9ad31dc99a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): This should not be reported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/constant/evaluation_test.dart"},"region":{"startLine":1972}}}],"partialFingerprints":{"codehealthFindingId/v1":"222bea21fa813b1b8851e2baacb831f1a7f9aedc5b64698cf412809a24f61e55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Fix [InvalidConstant.genericError] to handle \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/constant/evaluation_test.dart"},"region":{"startLine":7799}}}],"partialFingerprints":{"codehealthFindingId/v1":"014b7a6dcdde5d5d0b51e77d955ae823795e116ee64169977122eefddb2e5800"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/55467"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/constant/evaluation_test.dart"},"region":{"startLine":7817}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a78666a9b341574f1af5c32d26eac5822487c4c6da8015f2ec8a7fa89cdd78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): any better test case? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/element/type_constraint_gatherer_test.dart"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"32496394ad1468ef31cd65163a98b9855616f040dcc677f354270f3357452e6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): It would be nice to use \u0060_assertGetMember\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart"},"region":{"startLine":1128}}}],"partialFingerprints":{"codehealthFindingId/v1":"981b6dd6ed1ad0438d755d645f2a5c1d13c3052b21a9d87fe6f834a825260381"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): It would be nice to use \u0060_assertGetMember\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart"},"region":{"startLine":1156}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef4801e0affbd72151740694b6cd289401565fb529240adceacd05e0c2f7a8c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): It would be nice to use \u0060_assertGetMember\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart"},"region":{"startLine":1428}}}],"partialFingerprints":{"codehealthFindingId/v1":"475ade021090fb3ee850ba5ce6c4927c3c93a2ca162fad078fc8b646b5cf1a86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): It would be nice to use \u0060_assertGetMember\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/element/inheritance_manager3_test.dart"},"region":{"startLine":1456}}}],"partialFingerprints":{"codehealthFindingId/v1":"730e4a0a34443c98a860b9f92ec86b4062054db5481e4e9b8c2f0a255a45eee5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Should report CompileTimeErrorCode.URI_DOES_NOT_EXIST \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart"},"region":{"startLine":2048}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e717126932cb6c029add6fa1ea70ad9959a81966f0646d547e013f2d8cd21c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Use textual dump \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart"},"region":{"startLine":2569}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8343db1b809107366d91030387b2dd4e6376fdf96e5a84d5f0eadcb914299a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Use textual dump \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart"},"region":{"startLine":2593}}}],"partialFingerprints":{"codehealthFindingId/v1":"10f7bcaa383087098cb98812678b968bf27ee7ec3fde7b4124a03bcedd846167"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Use textual dump \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/micro/simple_file_resolver_test.dart"},"region":{"startLine":2618}}}],"partialFingerprints":{"codehealthFindingId/v1":"296cbebdce48c4ce7732bc4d46a02aa12d4d5558316e6a3d893d0fc4be97a58c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Parse code into its own node. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/parser/doc_comment_test.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3070a2e313c2ecc28e2f24bfc660dc8ada2a99553645710ffeb32f2be37bba7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): I believe we should drop support for \u0060[:\u0060 \u0060:]\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/parser/doc_comment_test.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"f80ed78d7dfebdf926dbaa65d92d9df18f4001a44fd86c8a6b05780c5ab60d67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): I think there is an intention to parse this as a comment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/parser/doc_comment_test.dart"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0f2ef8a608f261b31fd7c9ac5a43cc73016f2cb8e274229af59b6d770154362"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Ideally this should not parse \u0060[b]\u0060 as a comment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/parser/doc_comment_test.dart"},"region":{"startLine":1815}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b490bfdf6ec2d7088e69e3544259709cc46038845b1d3ce8733a89f838e4823"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): this is wrong. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/parser/class_test.dart"},"region":{"startLine":4055}}}],"partialFingerprints":{"codehealthFindingId/v1":"10350f053f2c71f1160ccf1c353b47cf2562baa8054ccf39f5aa82f2e298693b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter instead of unused imports. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f50b680a86801aa8e4c6c88bf283fb4b330b51404e2ee21e8410a5de2007565"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter instead of unused imports. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1096}}}],"partialFingerprints":{"codehealthFindingId/v1":"7be0fd30c1b7fb26af4625b95f08985669a1243924aa6d8a540266c4f450d8d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter instead of unused imports. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1585}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f729c2466f69761d25d0ba7ce637f4ba76ba56f010a5353410d3fb30d697d7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter instead of unused imports. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1919}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a4ae347b9e1c350995c3aedae515c73ec06029ad955087f84cf8c4275734b75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Also report the missing setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2297a6571d8cf97805fe7eec270bd2e3063f03978382b945945b945a1f15bfb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Also report the missing setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f2e54df425c992a75075cdee9d0c7ba5207bc5d164ad3f8ea16f5102e617a4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Also report the missing setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c09ef9c7dd407366a596e0f88a4cffe38b0eb9dd792ec165712e4cb5f4eb5d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Also report the missing setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1640}}}],"partialFingerprints":{"codehealthFindingId/v1":"e661fdc2ee057b38155aecb20dc5fc547bc8dffbaf71e85924528ce8ae007ccb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Also report the missing setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1974}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85e3d805e95f41935ced403b6bbfc2fe89ebc1202ce7c14c477fce81293f25c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"55a85e83e34ac7a1ee43f5cd72ed2f5f4ffd74f51f4c236f2180065f89bf7f5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"d24d62fd92e7fdf95e5ef83327eb08a2b4696199a39aedb39aed3a8bcc2e54a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdd1f365ce91a8c742dc03227b0360504ed70ba76c4fa1354d2664c1de1ce9d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1261}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c8683196088fc12e1564e3c72366b3794ce44169607df76b454058db6a8ce37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1323}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ced4dd3844552051d0a0be242ba65c6f486a068b2227f4fe7386777375961ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1694}}}],"partialFingerprints":{"codehealthFindingId/v1":"c28c274ad57c950e86ddfbed3f9cf5bdbf97ffb2d456f1ca713ecc25839bd4cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1752}}}],"partialFingerprints":{"codehealthFindingId/v1":"1493c4718e73891538604a98685f1a7323e8650b0ea7ef808685c26db94919c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1865}}}],"partialFingerprints":{"codehealthFindingId/v1":"a98465d1f32842c0069132e0b974e866c537725f08e7d99febf5e7f4cffd0da7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":2028}}}],"partialFingerprints":{"codehealthFindingId/v1":"15ef156a51bc7a50a8020edf9fd3b6d30c15cd113a263f8dfad7a55946b1a72e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":2086}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5dd5fcf4eeb945e5f52aad11d50d8bbc0bfc409ec429611322334a08e68f559"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous getter as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":2244}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fa2c698ec145547fd7377ba6c085cac2d1e694f74593c6161e194cc12b10bc1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the ambiguous read as well as the setter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ccd6bc5abbcafc507821fbd660f39852023c32c75aef9309563a69ef6fc3ebf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report a missing getter instead of an undefined name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"7551ad7bcf5a867a5de2f58b1734f9c6d80ea0c657945bac04361c6c059c6352"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report a missing getter instead of an undefined name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1493}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9a4f5d70e1117ba1c2a86ed0b3d8b5bd305dca175e64175a39177f5ee444891"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing setter instead of getter ambiguity. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"73fd7e7783ab2403e0aaa726d110dae6ab9f64aab4aaa2a3a87cda13df5af111"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report a missing setter instead of a final variable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/unqualified_name_assignment_target_test.dart"},"region":{"startLine":1213}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eb8fd95ef8b2c6131e97c689dd8de5d5df43476aeb71ff159356cc77bb774d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Decide the exact diagnostic for \u0060TypeLiteral\u002B\u002B\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_literal_test.dart"},"region":{"startLine":3843}}}],"partialFingerprints":{"codehealthFindingId/v1":"06e477cf38082457277a3c9250301ef2eb86c45767e8eb708b23549f2967dfd8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Decide the exact diagnostic for \u0060prefix.TypeLiteral\u002B\u002B\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_literal_test.dart"},"region":{"startLine":3867}}}],"partialFingerprints":{"codehealthFindingId/v1":"32241c63bdb58ac67d00d4eb42fd1c8bbdcba4da56f3ba97f984ad448278ae2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Decide the exact diagnostic for \u0060\u002B\u002BTypeLiteral\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_literal_test.dart"},"region":{"startLine":3943}}}],"partialFingerprints":{"codehealthFindingId/v1":"92651c8aa3cc87d00a21a160e2b3e3a64d291032eeadc5a4be81cf4d26aee4a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Decide the exact diagnostic for \u0060\u002B\u002Bprefix.TypeLiteral\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_literal_test.dart"},"region":{"startLine":3967}}}],"partialFingerprints":{"codehealthFindingId/v1":"559db7088c2c0796c2dc543d545ada8e235c78cc33b2090d5abab92e2fb4790a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Holistic coverage proposals: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_literal_test.dart"},"region":{"startLine":5600}}}],"partialFingerprints":{"codehealthFindingId/v1":"efc84dbd479b61765f4469740d529f39e36274fb8ae7626e0437542d331a7df5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Remove \u0060new\u0060 (everywhere), implement rewrite. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/object_pattern_test.dart"},"region":{"startLine":1264}}}],"partialFingerprints":{"codehealthFindingId/v1":"d524d7ee51f53823670cea9c37bfd30b1d87d5c88fd1b12e31f7e1d1c9d2549a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Use a single mechanism for intra-invocation ids. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/node_text_expectations.dart"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed7747c09b5f44692d0d1cad852041efb0ce8810ea3f5950b8418e7610ef0be6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/49101"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/index_expression_test.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f27130f986c93abc6f97a0ba91e950e2b13d0ed51b89eae7b82d2d31208744a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/49101"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/element_text.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"14dbe7727c6e89cce5ea30a36e200919f90a5d5e63fd70d6180ec4f6260d01e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing setter instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"477f61a81863c3e6f6a18ca44392aa6d4fc2e11d0e5f438f3aed7e4dff66191f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing setter instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9f45220c9c1c3ebcea350bd030f71ac5ac37db3238c244dbec948b41f399f50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing setter instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2ee018f0d1c575962aa8baa9c8a1edf65fe7fc6eda1c1442e3bfd19a3e01abe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing setter instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":1447}}}],"partialFingerprints":{"codehealthFindingId/v1":"083cc00e62c609182fbf7cdbbe5ee9342151fe644790094c1072a5912fe139ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing setter instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":1518}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8afd8ad00e1f93b503a5b01669a8d2495ee8d75e28f24e1141e6740f5c9e6cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing setter instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":2038}}}],"partialFingerprints":{"codehealthFindingId/v1":"5890a4184e32b88c3d6deb3e85896011447b9bc124c2f27e925e1ed5f0a4e906"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing setter instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":2442}}}],"partialFingerprints":{"codehealthFindingId/v1":"e511e0739132cbcbd1c3c4b3ace5aec2061169bb95fb04a541b13b948d3416d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing getter instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"21754fdb005f8c816cc00d1e5fa307cdead0d11e5e447743cc09fd872a8a294a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report the missing getter instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":1858}}}],"partialFingerprints":{"codehealthFindingId/v1":"37c7d2ba7de434e164cd4465a710d860d6285063f6798b2d0255526e28cd538e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report assignment to final instead of an undefined prefixed name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/import_prefixed_assignment_target_test.dart"},"region":{"startLine":1266}}}],"partialFingerprints":{"codehealthFindingId/v1":"277c2e70e8bb754fbdb8ac2c9fdccc06e663b4ce2d3926a8a9da468ca76d78f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Test extension on function type, like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/function_reference_test.dart"},"region":{"startLine":1862}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d03a79f117968b4c0cdc17fc51c710f5a2bb7664ed3984c4bfb67bc9d52e8c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): PropertyElementResolver does not return an element for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/function_reference_test.dart"},"region":{"startLine":3087}}}],"partialFingerprints":{"codehealthFindingId/v1":"9be4cfb688a8736ba793792e04511483a77e0ba93cf23f76bc63219f2c6c305f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): PropertyElementResolver does not return an element for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/function_reference_test.dart"},"region":{"startLine":3155}}}],"partialFingerprints":{"codehealthFindingId/v1":"20c7fa3620b042e3915f037046f4a014e3f460dcd71031adbb3390d515ebfa8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): PropertyElementResolver does not return an element for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/function_reference_test.dart"},"region":{"startLine":5694}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cf4996f8a8d66ebc33f17830b7ea6baa744cb7c859a6af19e1514d56e908811"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): PropertyElementResolver does not return an element for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/function_reference_test.dart"},"region":{"startLine":5763}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bf0b7144a329e297ab6439501ae173deaece480168b3d7e9985c11e80605adb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Move other for-in tests here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/for_statement_test.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"45ebfc75c1596193d3bf4859906d81b567b066242e0b98a39cc2edfe366b51a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): should report an error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/for_statement_test.dart"},"region":{"startLine":4505}}}],"partialFingerprints":{"codehealthFindingId/v1":"39487a49830c2a0e78bcdd070d6be9018b9bf354a8b7a0c0760544a95c2b4a05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Review both PubPackageResolutionTest classes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/context_collection_resolution.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2d5a8c8f1be3389d2dfa0fd206f458bb46b0217bece7b1c00f2ae3b8ac74500"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Test this more carefully after we can re-write the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/constructor_invocation_test.dart"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ef3d643e636ed0e4ad5fcf53419c4e3f02b1b32ff0ab2fb900338cfe62fdc30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): improve coverage regarding constructors, operators, the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/comment_test.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4064ad0aa4cecba9ae7343f23d9572b0102b30f34f1fc69f063d38cfcd666e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Set the type of named, and test it, here and 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":"pkg/analyzer/test/src/dart/resolution/comment_test.dart"},"region":{"startLine":946}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0c480a0d6fc4c8994e32a6b65d4f539a87a3e2d9022ed654f134f8fc9928422"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): add tests for references to nested formal parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/comment_test.dart"},"region":{"startLine":2166}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce85e84d0556d5165d38960c9d756a97b391cd4e095e8f2c903b040929c85c43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): add tests for references to nested formal parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/comment_test.dart"},"region":{"startLine":2206}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c034fbff8d1dc47b79b2a04b062159451d0e489b622a725650e8a679214d57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): add tests for references to nested formal parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/comment_test.dart"},"region":{"startLine":2241}}}],"partialFingerprints":{"codehealthFindingId/v1":"459a56ea210ef3592455509a9555680487bbaf5574f8e8d4de3b21fd7951fa94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add AstRewriteConstructorInvocationTest test, likely \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"8240edaccea22fde5fa187e684f5f9cca5bdb5803fcbd5d9a42b7621791bc832"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add AstRewritePropertyAccessTest test, likely \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ec2b528483a14eec9f8d7564d5af3d407c78cda2abded0fd0dc7f0641b9eae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Move type arguments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart"},"region":{"startLine":1730}}}],"partialFingerprints":{"codehealthFindingId/v1":"02fbd1409bb570ab14c1981f1cfbdd9a753234dabb5ed117122b7686cd65c649"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Move type arguments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart"},"region":{"startLine":1823}}}],"partialFingerprints":{"codehealthFindingId/v1":"87bfa2ed6f342760e9a254fe076129c70d9c05c34ad1a858ce34f2b00c0df75a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Complete tests of all cases of rewriting (or not) a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/ast_rewrite_test.dart"},"region":{"startLine":2270}}}],"partialFingerprints":{"codehealthFindingId/v1":"87540f5ade98eb78121fb72b0ffbb1a4777d50bd90b6683fdabef54f360c5075"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Should report [CompileTimeErrorCode.NOT_ITERABLE_SPREAD]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe5bd3f4beb45c49cffa0b5fdc47ced486e5c3a8ffe59ee234467caab3360be9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Should report [CompileTimeErrorCode.NOT_ITERABLE_SPREAD]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/dart/resolution/type_inference/map_literal_test.dart"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5945a07e9f7af498db388c8fc21675257262a187d2ee63aa836ec3707086c22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): review this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/yield_each_in_non_generator_test.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"631538ea39a779b01e1d54098b4b2ad3ffe89be6bd540e944d11d33111860684"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): review this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"621bf6dc322b2039bb3938b7530815d418586834c33041cb6d2387356682cf77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): review this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a6371aaec9b8b5516104adc90d19123f82a53a3f1d691335812e87baff41f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): review this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/undefined_identifier_test.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"712b40841a009d5a71314fd7cd2c0889f040ba59272eb693fb57cdc08d1d91f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mfairhurst): Get this test to pass once codebase is compliant. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/use_of_void_result_test.dart"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"467f354946ae45472ff29df583a985f4606ae428449fa8836d402d9187fd34d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Change to assertErrorsInCode when this is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/unused_element_test.dart"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"9013709e97e88791f676e8bd824616ca1f1f8310952df7ec6e926095a94af85e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Change to assertErrorsInCode when this is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/unused_element_test.dart"},"region":{"startLine":3421}}}],"partialFingerprints":{"codehealthFindingId/v1":"42131e628e026f56775c6aaabac7893af0c77692e4c64d7d6b69cbe4fb644e03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Change to assertErrorsInCode when this is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/unused_element_test.dart"},"region":{"startLine":3434}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1db231d53ab183d51e752b530763f3fca89634dfa93a95fdb9208a34d7e1efc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fshcheglov): Think why on constructor, not extension type as a whole? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/unused_element_test.dart"},"region":{"startLine":2154}}}],"partialFingerprints":{"codehealthFindingId/v1":"39539f27d6113fdfe7439c059c5929d74e3d56036b9e46bff5ce7848d17f5f41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report omitted optional parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/unused_element_test.dart"},"region":{"startLine":3458}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c4045e84c61df5317e478a4876c7da3a7b82b6b5a083bd90980b32786181efd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report omitted optional parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/unused_element_test.dart"},"region":{"startLine":3470}}}],"partialFingerprints":{"codehealthFindingId/v1":"54563aca826f483f1a4234af41cd0b1d62c5b4af23f667708d1af8a1bfdf3edc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement something else \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc94b948e0eab39e868bbf095c2447cd07232068c0044fc90b21249bc11386c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo] TODO: Implement something else \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"2359c90a0d75a91be7aaeec5cbc7634a2477ecdf11bf93851afc0999aef0a187"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"169a38775371ddc5180a49472fff8af49a2dcb466d4e2ffa8d20e76a54ff12f1"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // [diag.fixme] FIXME: Implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e2526b540293733b1e990deacd480fecd66a6a6e5a19de3fceefc9a30338c1"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // HACK: This is a hack \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe7a0d2c436e3eeb5c5c6be012068ef9b04b9147d4a56144dc6348f1b85a4d53"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // [diag.hack] HACK: This is a hack \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a3a70f3b76d9f87bf1700351ded29f81af61c351aee0434cf587861791ef7ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo] TODO: Implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"63be832d9b14be4c581b05f63176503f29f1c80d01e0c27566277b5c1aba96ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo] TODO: Implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb51c135f43fee2cf6f393550843e807ab2ce371768a6260628bde0cb799767"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo] TODO: Implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f832726fc2e03c6ee4beb1bfa69cca3a962df4c0c53e23fba6f31f1ff6a68e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 1][length 16] TODO: Implement1 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7032a5bd96e36d7b4f887042163520b3edc85df52fc6f255c3442bececb20a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 1][length 16] TODO: Implement2 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c5d15a11ff8525f3f1844934384bc1bff36b147518b674ab9cb9f247ae1e5f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 64] TODO(a): Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"97a336edf30419eaf3797c702615111c3badc09578b0579a92748f9ea4ecbd60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 64] TODO(a): Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fda41a2c1e664bc5534f967605d2fc4b74e10a98f0bef703d86fbe84a4f3a47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 61] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"96aba007ea3d02e77c72db1b2fabfe3439ffbccd9db7d4e62f161c92cb6cf61d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 61] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"611ea70a8d21ca6506be6b670f733a529055ac2a7100f034e6772d3c2a8c2052"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 61] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d8bd8985cf92e8f1f509de9fc632abea82733b3586af0755f73fc681c8319dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 61] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f8fab9b0df8fc03aa52af591cc75fd010d663fb9b37f473db6fa6ac5aef31ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 61] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f7871531a0878816ae74f36604cc1649f72ebca8b1e6f22522d59dc8233b48e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 61] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a6f2eee281e0ad8e76ab5489c176ec415daa630441b6638e6b0f7485695cc05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 61] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"f25f5174463bee94c8d4518288b8e335e45b912113fb90dd5a61e3d97ca75293"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 61] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f3c6226c76dd821a3a54e43efe80e87535e29d43cec34e18b7ddf77fb2321c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 65] TODO(a): Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd0e14001a620ef891689b7c77bd3fa02910d24e9f05e72eb87605c670b600cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 65] TODO(a): Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea5edbe32e76df78c6f892c9c4a54c84b7d2f1203315cb07bb8deaf85dbee610"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 62] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"6652cb068c4bd5a63de641bdcf6b7cfd23f35d06b725a9ad110f03011a82d395"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 6][length 62] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfb3a4a77253051b238947d85cbfbe880f808f75426de53b678e0d7e6025fecf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"95faf278728a609c099ed9f05a473e88e21b0b94c4bbc224320c4a8d72b79636"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"70c1a7a2a8000148c64335a2c7713727230755c07f39563e527161412706942c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"3270a316eb70a4eddd9bc90fe4db0ef483848a525148d3d3cf01c72f319cb376"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //      // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"f776061c032e6191a81068b9a30bcf0bce90a1cf8facb33c783b48b1e4e41deb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo][column 12][length 67] TODO: Implement something that is too long for one line \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"e139036f8306d0e2e24bfc19ade81b92f19a4bdf59f5215c6d0d8856957d42eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo] TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"b417f5e45aa12d316fe24342d943b39ad52f5efc8e17e91679a6c70534c62faf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo] TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b9cc7a67a2cdc59fcf4f9ac5ab5fceed80d3b0d39c80fbe501e4fcddb93c72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo] TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae4c2439dd767c3cabcad4d357275cdd5f0554dc8ccb005fc4f0d819dd604076"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"117273fb62e7db90d3d2db861310eb3dc56d2636b338594310bf20029ee21558"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c5ea940f73d6cefa11060e15938ceb8081d0db9289405b7fbf64559786f861d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"a658d5103417b858ce79ae85ade6714e12005d3aee09babaa5e37477279206d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"931d619973dc1d2a98b1354cfd333dd4fb5af7fffaab5c59dfec9cb95874993e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bbf7df27b30e224963f2cd01e0373b69d84a127a2958dba30e124580dbf77c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"c580d63835f0f83f34fdcaa659bd44b35604b5ec4a4bf84b87bee5a1314b007a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"243b95a9625d8a2273c517d375b6bce6e6745d730c2d281db0761c828e40711e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //  TODO: This is a separate todo that is accidentally indented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a864fe081dfed08f4d978673d871ded79d3062083e76c2f4b94256375f10d84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // [diag.todo] TODO: This is a separate todo that is accidentally indented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/todo_test.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa8baf7dba0f0702c92dab821a6cd723ffef83718cc4e9b7023891ba2c9b325"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): We should report \u0060returnOfDoNotStore\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/return_of_do_not_store_test.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"829b2464a8ac505547cb1f1b7c5f01387d487f822623379baeaad27b9bf3cd4e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): remove as part of fixing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/replaced_lint_use_test.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d9331958e47018b26999c92915b78e126cd3bdae725d541f63da998030c6a22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): remove as part of fixing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/removed_lint_use_test.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aac646fce6625542195f0535f71d3663f7fac5f861addea6bd469abb7ff2d08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We should report that \u0060B?\u0060 should be replaced with \u0060B\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/pattern_never_matches_value_type_test.dart"},"region":{"startLine":1315}}}],"partialFingerprints":{"codehealthFindingId/v1":"19c6256066df976ebb0c694fe86b35dd7803dbe83b4be87811b275e1b4724b92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Enable [withCheckingLinking] everywhere. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/parser_diagnostics.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9b6b1ccaf754cdd470129bb50fcde77cb1629b15edfec1068a93f7fbc5a8eb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Fasta is not recovering well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/non_const_map_as_expression_statement_test.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe6ed2a3fb3a08a64262d0bced23258c2eb4971bf8014ed0b421df5272c77765"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Fasta is not recovering well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/non_const_map_as_expression_statement_test.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9627be1e22ac44fb4b075f91d03fd0b9b359ebf7daaf9b421b592ef5b6c4b97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): It still seems that to be consistent, we should report \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/non_const_argument_for_const_parameter_test.dart"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1ffebf79cb93c0a3f2132b7796f91bb2ca7d6e25546b4c87036b1f59f778f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): It seems that to be consistent, we should \u0060super.i\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/non_const_argument_for_const_parameter_test.dart"},"region":{"startLine":802}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed79ac3d9ccbdbd2923d85d7558dd518ba879d95fc0d6896228f115e720f4738"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dacoharkes): Should this be an error or not? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/must_be_a_native_function_type_test.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae1c5090bca28fbdcdf3783fbcec3585508b7d0ae52f6fe509bd8f1ad08aa69"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Re-enable this test for the patterns feature. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/missing_enum_constant_in_switch_test.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"1204f297e5cfd499e14125a97a5aedd884dba257cded25cb72d464a96ec86e71"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Re-enable this test for the patterns feature. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/body_might_complete_normally_test.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c6ab883e56f402b74654eeab700674aeaae627ca4fdf582d1a70ecd8b07f01a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Report invalid access for unnamed \u0060super\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/invalid_use_of_visible_for_testing_member_test.dart"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"b885db65fad75ca31dd30f8eeb3331198df70c229cfa879b6d33a29c7d84991a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This test verifies that the analyzer **allows** \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/invalid_use_of_protected_member_test.dart"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"a51d9a61551935d9e0f7747a5df7fd066f42796535d2d106bdb38423ea35074c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This test verifies that the analyzer **allows** \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/invalid_use_of_protected_member_test.dart"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"897aa7c40c580f93a06380b55a93eb82c49858e9b6b9e0e7a311867bcf025e73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should produce a hint because the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/invalid_use_of_protected_member_test.dart"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"0800a972621c0832cef248840561d72221719d549299b31bd896188c11ab96e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Recover better from this situation (\u0060covariant\u0060 in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/invalid_use_of_covariant_test.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e92c7b5c9603f21a25b7f18e6d24d51ac870db60b99222b9c152af4b59ed947"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Recover better from this situation (\u0060covariant\u0060 in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/invalid_use_of_covariant_test.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"58614862e2abe5b6927b5e08f4c6034cbebabde5a3a5698325047dd789335c76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dacoharkes): Remove Pointer notEmpty field. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/invalid_field_type_in_struct_test.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b7f5bf39a44aa898110191e78311800c66cdabf005c5d79be3b42e447d4c00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dacoharkes): Remove Pointer notEmpty field. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/invalid_field_type_in_struct_test.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"435064f80540a476ca2a82bdf3db260b037cbfa793a5c0b21f8e013f476638ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): add tests for topLevelVariables: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/invalid_annotation_target_test.dart"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d0584f4dcf087b1405983655836d693ed922b2bb44244d8746cf55671a2787"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Clean up when adding correction messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"1841e6d64ff7fd50cd298ba6924588fd20229e4a271fa4e113b8c3fb050016e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Clean up when adding correction messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"510595b62597cfaf3b3960012996b2b01408852964a0be2f6ee14d3e562fef2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Clean up when adding correction messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"08f9132794712f6d84b51b9905c358968ce6b3dbcaaba31447b8d959c4df35d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This number should have separators that match the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/integer_literal_imprecise_as_double_test.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0a68e40d2bc4ae517f9cc5c062322df250d9ff30fc46429a9b245380621803b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): extract for-in resolution and implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4e434cd3937fb46d9ddb5774dce1b89f90c5a033d8683d5d7d068fe9236de7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): extract for-in resolution and implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/for_in_of_invalid_type_test.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5f5668eeff5c05fea030d169fefbadf3101e3edc659823fba526f4bcc35a090"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Fix the duplicate error messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/field_initializer_outside_constructor_test.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed53557851ff463af3cb03332b5c103012d8b9e90bf6dce0c38b115df03cb589"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Fix the duplicate error messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/field_initializer_outside_constructor_test.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"49d47a2372fe3789e5390f972409d32f08f2a31e5a009e29f8bb021d01e854e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Only report one error. Theoretically change Fasta to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/field_initializer_factory_constructor_test.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aefef77d6cf0e6664ea233508a7315ca73c20b7c250e69e86491efea34ac95c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We probably need a new error code for \u0022expected \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/expected_two_map_type_arguments_test.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c71fbc82310614a5a91baee449b799358d4ef57284ca1888aa3400cfc91bbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): add more tests (https://github.com/dart-lang/sdk/issues/56092)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/duplicate_field_formal_parameter_test.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dc984425210b94327d781c52541711174eefbfcffa60eff26fb216976641e2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This could be \u0022Undefined prefix \u0027unresolved\u0027.\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/creation_with_non_type_test.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"8994b68f3593a03357433281a60c2026ef7d27100a4f244581495f60797f5f0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This could be \u0022Undefined prefix \u0027unresolved\u0027.\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/creation_with_non_type_test.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"59a819f8317243e837276250aa37d9391a5f4e12d2f266e857acbde8dc749a73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This could be \u0022Undefined prefix \u0027unresolved\u0027.\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/creation_with_non_type_test.dart"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"79db117c446843c339952fec177fc3bcfd655c1831de35d82726335e0c9467c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This could be \u0022Undefined prefix \u0027unresolved\u0027.\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/creation_with_non_type_test.dart"},"region":{"startLine":810}}}],"partialFingerprints":{"codehealthFindingId/v1":"46684f26ebe272a14ff36a459451fe20d82d5afe646a3acab91d2953fe5ae3da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Add tests with non-function typedefs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/could_not_infer_test.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"68b572b42194c47dd02fae8c04ed60f3ca613bf53f7f31f8bff7b607ecb2f8a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): this error range covers the whole subexpression \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/const_eval_property_access_test.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"073aaffe63b2f57b6bbaa38c3c1cf09b79df300be8d79213c21af7225244c0e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fshcheglov): \u0060implicitSuperInitializerMissingArguments\u0060 should not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/augmentation_formal_parameter_test.dart"},"region":{"startLine":1085}}}],"partialFingerprints":{"codehealthFindingId/v1":"866c37385a1f6e266c99018c54b575b36195cdfc466eae33631603dfc2f22088"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fshcheglov): \u0060implicitSuperInitializerMissingArguments\u0060 should not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/augmentation_formal_parameter_test.dart"},"region":{"startLine":1193}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e29a3911d7191108746374c3585eaf9016f67644b891b21017fec1cac65d438"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Not yet implemented. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae6eafafe3635f9fbb7941b722a706a5d2adea9a835680adf90a580b9d7b5f82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Not yet implemented. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"a301152182e09ed035ab9a850e479cadc7aa9b3703d7370c7b694d5444a4c098"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Not yet implemented. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"727528592371fd35dd3f0ddd17558e246252981c17c4c5ceb0045392aafbf406"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Not yet implemented. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d53a8ecfad06e79bdfd55fac23bee9f1114fd674966c09b7de80f7c8423a1bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Not yet implemented. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"b54daa9009ee36f6476cfff3b8feab840218062abea448129b11f3ff4a1ddb58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out the best way to recover from this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart"},"region":{"startLine":3975}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5e44c12810b01d7784dd5261270a1b6fa24a23dc54f7b319e64f92811791de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Figure out the best way to recover from this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/fasta/recovery/missing_code_test.dart"},"region":{"startLine":4021}}}],"partialFingerprints":{"codehealthFindingId/v1":"4be7f3f9b887a88290592b1b76a3fa07c0dd0e0aa24ca288246b08164c5f73f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Rewrite this to use a memory resource provider. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/lint/pub_test.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5cd97da5fe1095cea5cf335388a0f559e6fdcb7fc51d4eb3429a1a6c9bb7556"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): Use a test package or consider passing in \u0060null\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/lint/linter/linter_context_impl_test.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7bc1044f7d9667c977df14a32457619097595639578c520ff59198ec3181a5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigurdm): Can/should we pass analysisOptions here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/pubspec/pubspec_test_support.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ab5ed35c775a418b251816afd39ec5e7f699bfa5439ea83e399f3eb240688a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider validating. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/pubspec/diagnostics/invalid_dependency_test.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"84b3076ec083738c191e96f0d5434378f25da31da5fd05e896984921671d8d00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider validating. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/pubspec/diagnostics/invalid_dependency_test.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"8951eb3e5cb557bf60ab222709a55faa663fd19755b332c930f78c4fa16fc068"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider validating. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/pubspec/diagnostics/invalid_dependency_test.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"0879cc519192f2c4d43bacc0786e0cfca01c582de7105c7ea57094d5fcbe60f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider validating. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/pubspec/diagnostics/invalid_dependency_test.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaec258474cfa52950fa2fd60a303b46e2dd2073c413b2a549fb8bbb77e3f6ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider validating. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/pubspec/diagnostics/invalid_dependency_test.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f311b42d2c1e0178c3f8b1888c6bde89c2191a4ceaef844c27dcb1cce0c528b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Support package assets. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/pubspec/diagnostics/asset_does_not_exist_test.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaa6409845fe8a990be953eaa9d23c4daca5baec87b3804680f8c54e3d88b2d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Create a package named \u0060icons\u0060 that contains the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/pubspec/diagnostics/asset_does_not_exist_test.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"d07fc9fc2d8bd83146f32be51e161d63ad347ca658ddb5b33f2f4d805f07ad74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): add more function expression tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/top_level_inference_test.dart"},"region":{"startLine":4948}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9bff7edaf4e60534dbe3d491bb7b7e0fed73bca89a819bba482a6e6cbcff29d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): I don\u0027t understand this yet \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/top_level_inference_test.dart"},"region":{"startLine":6063}}}],"partialFingerprints":{"codehealthFindingId/v1":"9985d75774944a872ad7f931e4ec01a8747c98dbb56bb939617e84def090e65c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): test for inference failure error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/top_level_inference_test.dart"},"region":{"startLine":6073}}}],"partialFingerprints":{"codehealthFindingId/v1":"0659797d0da7647703b96b6e50fc7d6b6da7e0a5c9f140f469f9d0381d42a951"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): test for inference failure error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/top_level_inference_test.dart"},"region":{"startLine":7282}}}],"partialFingerprints":{"codehealthFindingId/v1":"a334beb0d0cdb84e69078e2a9169c854d5e0e25a4095dcec9db362be0291eddd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): test for inference failure error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/top_level_inference_test.dart"},"region":{"startLine":11168}}}],"partialFingerprints":{"codehealthFindingId/v1":"a884f80da258c02d7b7b4510b2f1870b78b746be37e32343087145e91636d8f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): test for inference failure error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/top_level_inference_test.dart"},"region":{"startLine":11288}}}],"partialFingerprints":{"codehealthFindingId/v1":"782a196ca6716ef14578e9bad3baaccbffe6ad2524228760e9f48c32544de8f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): test for inference failure error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/top_level_inference_test.dart"},"region":{"startLine":11408}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c7e85b72ad2c07fd3c17375af7c6f3321077596acfcfc7c6ca810811db1724"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): test for inference failure error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/top_level_inference_test.dart"},"region":{"startLine":11989}}}],"partialFingerprints":{"codehealthFindingId/v1":"4086fe9b0d17cbaa7284da71325c2ba42ba38f16ab77f8cfadc197a2a43f8783"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): test for inference failure error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/top_level_inference_test.dart"},"region":{"startLine":13818}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfd9754ed2d7f7206ee8b7dbb500e50c384765bb28fb29b976803247a8fa311c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/63806"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/resolved_ast_printer.dart"},"region":{"startLine":2482}}}],"partialFingerprints":{"codehealthFindingId/v1":"56019947ffe098a5b742dafba028571ff8a36958c3d7e162df62c6308f76596d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/63806"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/resolved_ast_printer.dart"},"region":{"startLine":2964}}}],"partialFingerprints":{"codehealthFindingId/v1":"af56d3b30d6b829c73214576950af5b7e5e15a660e84a4b4b9f7a8a48b7f650a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): https://github.com/dart-lang/sdk/issues/63806"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/resolved_ast_printer.dart"},"region":{"startLine":2983}}}],"partialFingerprints":{"codehealthFindingId/v1":"623f51e832f4810e38c5a6c7fe1a45e9ae8f08036c868b46b93585f364654a50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Implement \u0060type\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/element_text.dart"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"da91176146c18bcd412efd8d7e3ab251a3c9a33eee3834db13d6f15c33396722"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // // TODO(brianwilkerson): Implement \u0060isAugmentation\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/element_text.dart"},"region":{"startLine":623}}}],"partialFingerprints":{"codehealthFindingId/v1":"9efc28c748e6e9f7e0b148b0a5de91b16721539c6274b05894b93c887c8c4f42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(augmentations): Remove the invocations of \u0060field.baseElement\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/element_text.dart"},"region":{"startLine":829}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee5f51de0a7b06e5afb4db0a57e1c39dda2893db66d0ec49d4fea43c50ffa31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(augmentations): Remove the invocations of \u0060field.baseElement\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/element_text.dart"},"region":{"startLine":1371}}}],"partialFingerprints":{"codehealthFindingId/v1":"00fd2c75d0637ddb7fb8c43490c508ef8cc6c6a36814e726ca0af49c911a4d54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //       // TODO(brianwilkerson): We need to define \u0060parameters2\u0060 to return \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/element_text.dart"},"region":{"startLine":1626}}}],"partialFingerprints":{"codehealthFindingId/v1":"e997917f8c88cfdef7b5c1bc1eef2ae9f03fb85abeffc47da2139df21dde71a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is duplicate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/elements/types_test.dart"},"region":{"startLine":3187}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfb7d7a7b2065177931cf419fc041cae6aa095edf6d3a9498bf9f2addb098fae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is duplicate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/elements/top_level_variable_test.dart"},"region":{"startLine":5911}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce413aa50b1d4027e94b911c6bd13ce02bfe18e7279f878a48abaed8f5df02c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is duplicate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/src/summary/elements/const_test.dart"},"region":{"startLine":13405}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e4f0ae88d8bc738909da77b5dd494bcb335baa24a6a639dc7b73fbaa4c315e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): . \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/id_testing_helper.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"1916d6c973227e8d28760d7124cdc43d1e1d55c33dc121aa97168752b482198a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): . \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/id_testing_helper.dart"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4c30e4c2ceaf591c270ee857fef3744eafd4490a8267ff10539a57beae2f0ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Use the code for extraction of test data from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/id_testing_helper.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"03e382517852e01900fcd25adbe18040238f5187eef5fc90d3ecddf79ad0c300"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): Maybe this should have access to the [ResolvedUnitResult] instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/id_testing_helper.dart"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"1818a86ad53213da1ea43e867a4be26bf510b5711c6e295e13210fb7dd0d1af7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): nameOffset2 can be \u0060null\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/element_printer.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d1f0c808e794159df7456fef8532ce764a2a7feadbd6c76a8301b0755f658cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): nameOffset2 can be \u0060null\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/element_printer.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fbaca33922c88cdfd58ef1cade23036ce9e17e88586ebd08e76684cddd65a35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): nameOffset2 can be \u0060null\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/element_printer.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"f107e02c2b846696562931bb8a9bcd6828a2a602ab8296ca681f79710ffc92ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): Make it precise again, after Windows. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/element_printer.dart"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"13f44d69abb68327bc65f31eed69b87d0ddd6a065c25021482e52ea2ebc65cdc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): remove the explicit type \u0060Matcher\u0060 once an SDK has been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/ast_type_matchers.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"27e98c0139e391543f3ddc23caca23ad5d5cb87ad0ca87e3575b27a3fbf5c48d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): remove the explicit type \u0060Matcher\u0060 once an SDK has been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/ast_type_matchers.dart"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f5a863a8c9365d75e4eaaf51206283fef95042eedbc411b5af3e6762b96640"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): remove the explicit type \u0060Matcher\u0060 once an SDK has been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/ast_type_matchers.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"a935d0e16458c85e84de62a958e0c07a4dc1300c67f4d7ad1a1e7bd5053e8747"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): remove the explicit type \u0060Matcher\u0060 once an SDK has been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/test/util/ast_type_matchers.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"a59709c2bab2b62859de30546631c4a6b61249bd53e547f1ad0fbbfbf6e05b9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fshcheglov): Remove special case after AST hierarchy is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/ast/generate.dart"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb818f8e1432c0c036aacd14f99f376632ec07fbd8cf1ab9eaddf22130b632e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Handle directly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/mini_ast.dart"},"region":{"startLine":654}}}],"partialFingerprints":{"codehealthFindingId/v1":"c71344ecf05d0c19ecd9dcd39d30532282007bb01a01177dda3c021d242576ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): come up with a better solution. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":915}}}],"partialFingerprints":{"codehealthFindingId/v1":"591044c6e8b54d797fc7414cf3c9b53db0121d0546c64de0fa38bf4f4a541127"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): it would be better to generate a const list of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer/tool/summary/generate.dart"},"region":{"startLine":1091}}}],"partialFingerprints":{"codehealthFindingId/v1":"4796b5f4713a3b7e076519aad6fa9ef53f79dc621ff4ae8da1d635740ef01c1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Decide the semantics we want in this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/options.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"05b46c43f4529535a210ab6a298e753011a95ce668609e6a69f8b44ec09cb3d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Decide the semantics we want in the case where \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/options.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cdaf45060eab64c791b8c975e552159a0aba5015d8b553ca83e55af9b1bc3b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Update DDC to support all the options defined in this method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/options.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"80c6d20adfe66de182de99fb4dbe5681a2389496fe913a29d673351e168bc80f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): This defines some hidden flags, which would be better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/options.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d90edea74518237b4e18c0df3c077e5858ff9fff477113737eff38beac02217"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): We should add \u0060LineInfo\u0060 to \u0060DiagnosticMessage\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/error_formatter.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"161d796cd51776e5ed43b2c58d739264905c66b853605870dfd65f7ba78e2282"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): Iterate on this training to make it more \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/driver.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"96cec02000c661ebb7d686855a62822a457d9c0ad7df0d587afd4e5a8309e9b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): This is never called. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/lib/src/analyzer_impl.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"bca1f008eab7051e1f295b136df5b56d39307f5e6731146a81e26772710ef6dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO: add main \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/test/data/file_with_todo.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"68604804218135ee3cfeeadc1e0c0af3b08f6cd4f1e298250cee0924042a3424"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): provide sdk folder as well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/tool/perf.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d5180d316ae983848f14c9464bbb2b11db095539b0ad2d7ce5af7846b980b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): provide sdk folder as well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/perf.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c3c8a2c3bfcc358bf1446a3478cfc856db5d596f3c3d0326d1ffabcbf9c45c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): provide sdk folder as well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/cfe_perf.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"21ea13b17060f6d0d0b9d51ef5c87bfa5c98639c9201eef29a71c93e93597cf9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider replacing the warmup with instrumented snapshots. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/tool/perf.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fdfe64491d12f29fab0e2ad7db79260ab387a054a0cdca32cc5e16ed8725758"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider replacing the warmup with instrumented snapshots. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/tool/perf.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7b814fd6f60d2350a58ea67f84997c073291033d695ae7255afd117e846ae29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): implement the remaining benchmarks. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/tool/perf.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"4de5dea4de6c078215f67788d017dd53f8bb1f0bbd6ac14dc04bed15cc7d6b7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): implement the remaining benchmarks. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/cfe_perf.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e59b77287527355d007f653c6fbdf0f6c064458dd805f0c30887bb496dea9c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): figure out the appropriate featureSet to use here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/tool/perf.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"ceb1a6d8beaf11d05b7f74615dbf2d31fe0dff39098f485f63a5d429c43dcfd0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): is there a way to scan from a random-access-file without \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_cli/tool/perf.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fe27e1a36a995f8f06626737bc45e28d865ec2b1df0a7f7fbb681538089d776"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): is there a way to scan from a random-access-file without \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/perf.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb286504accb91a652afdf73f625908d25fb947ed1ba3cae36b01aa3c2164d15"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle the event. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/plugin/plugin.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0da6b718f295ab2c25942351ad047910c78a73e9423107bec0a1bab29b04636"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Handle the event. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/plugin/plugin.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"c726a9760820c2b7633cb0694202bf5756da2410e76442eaeb18a67c36118c69"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace this with \u0060isSamePackageAs\u0060 from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/library.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"43659fef22022c5bb38eff2c31f1a0759c93cf175f69d46f014b522e15ccabdb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add support for type parameters, probably as a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd228722a7dc3d55a334f53d95d5c222202aa955f886ea2d5b035542ac2fe933"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Add support for type parameters, probably as a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4fb07617d00007c92f47e47acb8f433a5995c9d212baa7c3d43e84ea8a33928"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Verify that the name below is not in the set of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":1380}}}],"partialFingerprints":{"codehealthFindingId/v1":"219323861bd08c465c2683ba847fa2abe501380fca4543ee9c4e0643dbff09da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(FMorschel): Think of a way to identify if the current editing range \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":2829}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa69a1ec6f3f623ec090f0c461ad6379203a3027bf0d5c08d286c82437ec7851"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Add these asserts in when we can advertise this as a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"1209a5f3d62beca32eafa8fba9122bfac20f9341de04d111bd2c491e61d7e5ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Can this use FileContentCache? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7bef3c4b7ef4166adcea3baa668586b2ba1a7322ca3678b835fa1ef655e81b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Can this use FileContentCache? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"d20d36b60cb3b8515e5c297db161fa56990b4f1f18212451290baece81b1fb90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): If the selection range is not in the file at the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/change_builder/change_builder_core.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"c00fd9b7feb84168c9cf6d3cbc226e28a5457dbb490cadfdcbdb95dee90aa615"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider using this value to control whether non-const \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"e25ffe47b572fee0f84c9e8ec4abf0af5d1418de42cd7d56064c23653005f427"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider including return value suggestions and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"872f407d82568c048880ae6d994a23316abb414a108f49992ac7aa03b202c72c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Consider including return value suggestions and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e24fbfc722a5d749d57b62e8d0b305e24ae4a302046020f163f773d2aaeff91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Determine whether the return type can ever \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"331532cf0a324fb9fe71418e848a2b86a38dd2b858f3ea24b90dcf440ca4d337"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): In visitFunctionDeclaration, this is conditional. It \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":1171}}}],"partialFingerprints":{"codehealthFindingId/v1":"0576658c98af91ddc51192d91b2d67ecc505262a33616ccefdda0fb4fddfa23b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Enable this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/completion/optype.dart"},"region":{"startLine":1874}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ab17ec248f8dcd8325de90e65288f84ed87e28ef38da46a8a3232c3213a46d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): This is duplicate of the 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":"pkg/analyzer_plugin/lib/src/utilities/completion/completion_target.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd3abc7d963f774ede1f59b8adb5b91bf613896307898d2691bd7567451adbbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This code may be useful to extract to reuse for other \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/src/utilities/navigation/document_links.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"acaee7a68f6e93567ac99bcf0eb4577de3ffa6d3a76b7538f6a909aa4f81e7cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Make this class final. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/range_factory.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8db3ca85f551573936bc4f02ab62cbd5f7fc1c54b053f62ee62058668600c9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Make \u0060lineInfo\u0060 required and non-nullable, in a breaking \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"129d723d112035ed451eb8d2671b772ac17892374a9c0bcd6fcdfa13f205db1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Make \u0060options\u0060 required and non-nullable, in a breaking \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"82d981edf57d39a90537a3e955ec3a4d3026f15f773110de4a69873b6c4721e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Deprecate this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"98082819a3e5f64476e6d058dbcf4eaec1902cafb51a26d59299e5f7a3ee0af0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Move this to a better location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/analyzer_converter.dart"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"dab2e0ec1b973caf47e8ed662a5ff72812011ee205af8df898a745da49239e44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Rename to \u0060insert\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f9848a0feff6ecbb1d74b9d0fe70676d408ad6e5aeb3b25adf8ca2f63cc52f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Rename to \u0060replace\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/lib/utilities/change_builder/change_builder_dart.dart"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"275d4f0c6a6178bb6b1a5b7f30117e4c91de50390653497f1fb477a2624cf6f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Currently these tests all assume \\n and need updating. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":2714}}}],"partialFingerprints":{"codehealthFindingId/v1":"74598cc4a4dd90cbb2acc27cf7c06e8bd5a3c28c51b94f554d4af3154c8e7376"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Currently these tests all assume \\n and need updating. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/dart/dart_change_builder_mixin.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5a2167ff38d4d505b5c90f9f5a1d78ab2ac3a74af08649efde97d4f8aa4ad50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement zero \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4484}}}],"partialFingerprints":{"codehealthFindingId/v1":"48dda4cee421a7cdadadee7b72949214ed6c13b1b675db13557ad05a2d33be43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement zero \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4505}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7abf7aedb3978eeb4fcd90fe7ad8291cd48e3a25eb8117fff465be8aebd0a81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement add \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4526}}}],"partialFingerprints":{"codehealthFindingId/v1":"a95909f6e3fda1d46c1fc8a57500087233551d9203d96cd97c56bea71fc47b9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement add \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4549}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a715e27867955952ade0899683017bb774161f1f0b0ffdc8e8947e0e8b3dd31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement perform \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4572}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a7b0e830b7efef2aadc1fb4907c43bd5e445c60fd16d25078b58b72f3dac6a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement perform \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4594}}}],"partialFingerprints":{"codehealthFindingId/v1":"486b0376a251a0d59d144125ec62464fc1d4fa1f65a714851e0a040d59a30777"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement get \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4661}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa37dce55c396ecabec6dc69488bdc0282817a9b9006dbf38c19cce07a829c6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement get \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4684}}}],"partialFingerprints":{"codehealthFindingId/v1":"061158cbab8a30186d5c758653f5fd292b59921231cf85e7acf437cd1b95d54f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement get \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4706}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9d2e8f41aa16b01135bbc133e179f0c5c5e827cca51c12a4fd7178e5391a0b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement get \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4731}}}],"partialFingerprints":{"codehealthFindingId/v1":"b50e7eac4a0c2b6115fefac9fcf39585b8ec4d37b222d80b22f2ddee2a3732cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4843}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9624a0874cbc81e52fa928aaa79835e1ef0894093f96eac226bbbfdc93631fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement value \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4977}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebf712a651669f1fea3b66d596b2a3667cddec604d4c62e2c7233c8e56ddf593"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement value \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_dart_test.dart"},"region":{"startLine":4999}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e778d844f76b79a3ec261f455bf5f0aac742cef55bb85b9746c2bb5b506b180"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should also merge the deletions, but is written \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_core_test.dart"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"809d2f4c9a08415499c1d62a0be0bd73023e14da01a879b1c5ebad99f4ebb30a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should also merge the deletions, but is written \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/change_builder/change_builder_core_test.dart"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac97f39e59f56acdf8bd7709347a4d26ebabd2f8255e5ef5b3dd20532379b25c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"0040b7413be5c1df8c65c921b4bf35ad70200582f68d4672aa72d6a113eeb445"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"021a8b00d52630caa4dcc32d9d5bee616362c3494c71b3fedf18fcb6edea57b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2121}}}],"partialFingerprints":{"codehealthFindingId/v1":"e791c074c4c8ce3ae9ffe4846c0c44320a9e1eff336ad4611daa06b964759ae9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2146}}}],"partialFingerprints":{"codehealthFindingId/v1":"4884119905940f9efe62fe049b54ad963014784d6b6c4c228d9b9bc4a17387ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2199}}}],"partialFingerprints":{"codehealthFindingId/v1":"b28b8fb24fb098f5a4b2cfde7f24b1f217bcc23bae216fd5fd2e7e9ed719f51f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2555}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c4aa47eae98b8a89bca15f3d4f86f06ee0ea65a1ec9eb90117806a63070ece2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2913}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2de7a82c3d1a4cbcda16867bba6d3bc57e1b1c101af11e0e90b678865f6e043"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): When entering 1st of 2 identifiers on assignment LHS \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"508c7a7da47c12586f85949dd56e48356a70f8715954420c748df1d9034a3fe6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): When entering 1st of 2 identifiers on assignment LHS \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0f0635c1b6776b192bd9899c6bf608b250b5bf135a40558c1344beb54fa90cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): When entering 1st of 2 identifiers on assignment LHS \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa2ee937bb83a4198ad07d07b87ec8ea8f81855362adcaf7d8c6782c460f0506"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): When entering 1st of 2 identifiers on assignment LHS \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf40743c36a69838d5593951fda4fa50f4788cbef230e8f666cb33b5ac836646"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): might want to exclude methods/functions with void return \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":1629}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fd426b6027f5b92c078856867462025c3820788664ff8a4ee74406db5fc0bdf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Perhaps this should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":1791}}}],"partialFingerprints":{"codehealthFindingId/v1":"988997a0051efaec166470d9e235d617ed382e652a5bb02e8d736bc075ea481f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Perhaps this should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"3de001edbff67deaf91d76f9a4920f7ee08147932431394a830ca9c85d59720c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Perhaps this should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2313}}}],"partialFingerprints":{"codehealthFindingId/v1":"abf2a2bc9d432c5c22934083e0a9d19a5c7624519d2f19e57175d2d6383a68ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Perhaps this should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2330}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cb54b5407cec90f6355934d21f54caa86353107296d548ab912e7c9ca7ce777"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Perhaps this should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2362}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e07eb0ef31326db3ed04a7cc0a10dc6af0bee235dba8271e107f7524f66bbbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Perhaps this should have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2374}}}],"partialFingerprints":{"codehealthFindingId/v1":"325df1879d3d3dedfcd7f0035b2ec58957878248ee5fc8248784c02ae59ddb0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should probably have a location of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2492}}}],"partialFingerprints":{"codehealthFindingId/v1":"97a20abaaa9b4e01a03fb227ab17e91fdfd1ca892ade0fb7250ae7bbf4e291dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should not have a location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2784}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b05b1f1cd5773ad392fe95dc24590786b5f6116c718d80820929525ccf952d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should not have a location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2798}}}],"partialFingerprints":{"codehealthFindingId/v1":"a38f25738bbb0b0db82f86eb47a4f7313fb38a3bb3b580b6dc0d56b9e3eafbf4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should not have a location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2823}}}],"partialFingerprints":{"codehealthFindingId/v1":"21969684b22582342d98f23ba2789aedb84648157c72bf66d0cdaefd8b9eb54b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should not have a location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":2837}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9fd2f8c6c02fc83dc98c2e47a43b95318a7b1c7d2876e5b3a358f48f5804fd9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should not have a location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":3333}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f06e7fd48d86b9d744d623823c13bf4ed56f421e9ec587b44815ebc35102dbb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should not have a location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":3344}}}],"partialFingerprints":{"codehealthFindingId/v1":"0908105e0b53847afae7ec22ff8f691e24d74df8b003f470076a10b71028c996"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): This should not have a location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":3355}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1c78e7a7afbee9846bf5e78e0de58571a7c2b55dc4dc8e8d2627484d2ea451a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): We should not be adding constructors here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/src/utilities/completion/optype_test.dart"},"region":{"startLine":3083}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf55c69703447aff9a103e0a728e8df8102941b88a2d679ff48356ad6b75e5b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asashour): Use AnalysisOptionsFileConfig \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/support/abstract_context.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a505c7bf5cffa4f94aa292b3e66c114315c4e0b329f7a3083da3059530bb4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): determine why enum constant is not marked as deprecated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/analyzer_converter_test.dart"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc5e403941e67b93bb8ec88c2eec8cdac511752847b8df7545d8a27885b2560b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): suggest HtmlElement as low relevance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":597}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b1834f20d43c29d9701ce09267cdba1812d667a87706b0311acfb6f331d20a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): suggest HtmlElement as low relevance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":695}}}],"partialFingerprints":{"codehealthFindingId/v1":"39f00c3b38a43880ab446195781061771e6b0d676e81481b454644c0359d88a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): suggest HtmlElement as low relevance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"53c09979e7fcea163078d8cf7e57885e2a8e6a92de4d9d8d1044ab9ff2f0c8fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): suggest HtmlElement as low relevance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"446ae3585b1d54f0baf986f2aa3fd3c40ff86144d8e544afc3ad4259f02c137a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): suggest HtmlElement as low relevance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"707392f0b1ab248d3f653a52f2d3fa9541c5b9457cd4e44c9e89e25f1a59a4fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): prefer fields over getters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1005}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad6a4a0994ecf767857570e80f5dfcdea222ebe2ab36f9a33cf99cfb711c85d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"46ab9ae8a90551d03b759ce3c766c1ca4aec350b408bd97f35a24a0d2c6c8f97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): getter is being suggested instead of top level var \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1445}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd31f3c5e3c707b53d8450fd6cf2c558e4a4b136199d383290aac4bd4872a789"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): getter is being suggested instead of top level var \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1470}}}],"partialFingerprints":{"codehealthFindingId/v1":"11ef724f9b33d0e73301209dfd3b2f40d34ff8751cb7a1de5db06365ec982ff6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): getter is being suggested instead of top level var \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1489}}}],"partialFingerprints":{"codehealthFindingId/v1":"b57412a8aed4c7c6840da04aae3ce65b329b4c97bb901fe412b121148c5cf346"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): getter is being suggested instead of top level var \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1514}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4347168d61aa25954223628e3aa7a4c652e84f06c36973d5ecdc1cc3de40d9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): getter is being suggested instead of top level var \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1533}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae0cfc918ebf64b7b072cf20fc28f9cae1c1aada3e87aa66bd34bf0652d082f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): getter is being suggested instead of top level var \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":2186}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fabb04a0894491a4b51ee5f800910c8acde0f900925bc02799b81524925d911"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): getter is being suggested instead of top level var \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":2205}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22b51dd4d7a960a42d3e47b4a08bf4fdf14d1b2d936c5cce507f934dd9dc252"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): move this test into contributor independent suite \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1692}}}],"partialFingerprints":{"codehealthFindingId/v1":"f90c14f36543e35256b1ca74f9d3b05bc60489607b03edcb3e5b6c9f20271005"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): move this test into contributor independent suite \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1704}}}],"partialFingerprints":{"codehealthFindingId/v1":"adff112bc51f264efc858393bd002024faeb4e15bb35fe5971d1241e5900a679"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): move this test into contributor independent suite \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":1716}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4a35dfc3de9044655a42ea2a0599ae28335993bb6b31bf1ea327b2e3376491e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): modify assertSuggestSetter so that we can pass \u0027int\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":2086}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2ca35b2ae9cb891031137289781f8bc6e5b69bcb46637dfc1f018e2e2fcf625"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): should return top level var rather than getter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/type_member_contributor_test.dart"},"region":{"startLine":2268}}}],"partialFingerprints":{"codehealthFindingId/v1":"382a14f07d9079569d96ad973115c1ba40c17e3e44ffd03d46942fbb5feca899"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Determine why params are null \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e50ee9c144153938820f78fc9f7affdd539be6f78a74c31ce3ad854ffe0bd8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Determine why param info is missing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"52eac6827b4d5e23e888daa59bbcbf54a6f3d0302115730ec104737c430a9192"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): assert setter param \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"204d7966b2df11342abe10364ad5f6bf02b17a14de45c9f990abbb2ecfd21d55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): it would be better if this was always null \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/test/utilities/completion/completion_contributor_util.dart"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d2b07f971f7f1159232b63da1c0a89a02e105fb914e3c5d16bbf2ea97f2d364"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Individual refactorings are not yet hyperlinked. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_plugin/tool/spec/to_html.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d6ce13956171ca97ab42cdabc7779346fb2f9ba42080af6e2d84333b920dc17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Move this into public API. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/resource_provider_mixin.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"589a2fe4499ce4738826571c35b21eb7e15bab89e6734b149a2efcee4b79bd0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): In a major release, remove this getter, and implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/analysis_rule/analysis_rule.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"2438a8b687b02b36d392912c671a5370a1396dc8a3e0fdb666294c464d466705"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): In a major release, change this logic to just ensure that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_testing/lib/analysis_rule/analysis_rule.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"3576c9b94eedfb848c7877f2d251ccdfa5dde2dcf504a85c8cfc91505743726c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): clean this up once all generated code is using Dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/lib/tools.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"380e3c805f817daa2e3792d231ec7f8e2f9d2e6e3d87969096e52c5a7b269144"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): migrate all pseudo-shared error codes to shared error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/lib/messages.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"af96f8fa8a80ba972fb5807ac40bce8d5b223e74810cfe8cad3f0e5fbfa785f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): finish supporting the literate API in all analyzer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/lib/analyzer_messages.dart"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"9992dabc80e7e75f0578558023e89580097146839c8da07db0e5cb0463a179fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): finish supporting the literate API in all analyzer messages \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/analyzer_utilities/lib/analyzer_message_constant_style.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"793e0953c5347b0e526e382ba345f5dac8b6f77e5cfd4a3a79723662112e1348"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated(\u0027Use this library directly from package:expect instead\u0027) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/async_helper/lib/async_helper.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"37258c8e2b0ba19a904defa69532152daf217d254d845d3d5f680d46a205489c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated(\u0027Use this library directly from package:expect instead\u0027) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/static_type_helper.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"e715f761bcee97586c6cab28ba6977524e3ff111b3d053da59697d71c9543986"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): support other combinations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/recognized_methods.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba8f95d7b35c13b35d0cb5e9272641b4eb35c85b7c6607dee5346ca7fcf272d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: always use ThisVariable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6e68e9e5e51ede2df917d84ae986d7f7a2ffbce1a26ccaf1047a1adfbfb479d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement separate contexts for each iteration and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1213}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6348e378b8ddc51718843f4074cf4330c9e8ae948c470b71dfb2e1ea9ef6195"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): use proper devirtualization to specialize ==. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1289}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce69db9ab7b4e9a4faf7d1e54bb04af0892c8feddf73e11f44987316f6a2936e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use node.receiver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1801}}}],"partialFingerprints":{"codehealthFindingId/v1":"1097041f18bc22a3ffdfc9d5f4fcd392c9553505a1215b56dafb96248d063502"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use node.receiver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1814}}}],"partialFingerprints":{"codehealthFindingId/v1":"d239ccc0d7cb399ca1ee158955844186f252db390947058ac4e2850d5fe9833a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use node.receiver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1832}}}],"partialFingerprints":{"codehealthFindingId/v1":"c25788c12e3c7460a9c97e641312e79b4760096f98cf9affd70572aed6b3b6a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: cache and reuse ClosureField objects. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":1942}}}],"partialFingerprints":{"codehealthFindingId/v1":"313816a2eee8184ab4d5af7097ae69c6c1f9efb83e76bcbbc4b120a79b0725f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: canonicalize record fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":2207}}}],"partialFingerprints":{"codehealthFindingId/v1":"455303b9b94c38394dd8d5c3834ba8f103b5a9eab200334da15dcd4a87971de0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: canonicalize record fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":2217}}}],"partialFingerprints":{"codehealthFindingId/v1":"5394966d115ff1a369634136af35bf76282c0e764921c9699443417b5592315b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: canonicalize record fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/lowering.dart"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ef740f8f53503e7d03ee3d39decf9ecb40e4bf72539da39cd459f19d6eca689"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: share context fields between functions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/front_end/ast_to_ir.dart"},"region":{"startLine":2353}}}],"partialFingerprints":{"codehealthFindingId/v1":"5369d723109b0fd35755ccd2fb1b697437de013569468848552aa0ab6d417602"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): add implicit uses if instr.canThrow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/ssa_computation.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5af40a49293e6e233dcdd09a2f24b7198cea9eb9a6950d84945598a2a23f5c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): also account for implicit uses. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/cfg/lib/ir/liveness_analysis.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"5921f6af543bd7ad4a7c0b90e04673f786ecd089806c127c5fc8c184c8c2200c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replace [name] and [extension] with something like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/compiler_api.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"85a81ce8f45012c93dbbdb15afdc8487004791c74b5d9d3af7d5ff6a096a79a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve semantic precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/world.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c06ab419710f272940356371a52a9e42d5277ab89958398ce57f0764a6406b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve semantic precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"adf6df1b02c98ec727901cc3e952df5d8546d744207556e536a7028e5330d7a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve semantic precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f095752fb36dbca8a446377446d8f8bf74f95773ef1ad6a1f5a5822751ba557"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve semantic precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6edabf571b864428670a59abccdef3b1e92c1fd920f95014a4384862fef8323"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Clean up these getters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/world.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"7007b89fbab915bddb2fdfdf3ba772b645b40f08704d4f3fa78988c8e6940676"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Unify handle of [name] and [extension] to prepare \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/source_file_provider.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac5054f302cc86fc149d3b97a83c8a58ad98824c04f0f1756e8b8eb969633093"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(sigmund): Remove the [BazelInputProvider] in favor of this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/source_file_provider.dart"},"region":{"startLine":571}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0f1a6526de2189cceed9af4cffe78cf40a2bd1f7a70b340cbdbf6323f464556"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(sigmund): Remove this and use the common \u0060MultiRootFileSystem\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/source_file_provider.dart"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"150ab702775f4cc7baa59893d966e9d671703a5214aa02cf1e539276895803d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make the deserialized type sets share their \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ordered_typeset.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"58992145f67a0d446b1cadbaf28afec24fc0ace675a31c83e8c6018329f29027"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): checking \u0060isNotEmpty\u0060 should be unnecessary, remove when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ordered_typeset.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bca9e280374aa3c09f5f27e7b8f491b0530759bb49656bbc0bb75acd420cbea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): checking \u0060isNotEmpty\u0060 should be unnecessary, remove when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ordered_typeset.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a8e9dbb58d7dedb4a0976401834de0418d91a8f6a186c9d862f3a60796ed140"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Add AST metadata to ensure transformations aren\u0027t rerun \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"9041a48091e7367bf0b141262bbe7c15eca9f7772f3eb67af52e41da913c4031"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebiggs): Delete this once Flutter is using the stage flag. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c7999837960082efb1f85bbd15539f007a59aeacb26c5700b8419c03d1c14b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): negate, so all flags are positive \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"829e6205c85a2024794117e6c72150f0adbf957aca6e68671b71e99cb6f676e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): rename to minify \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ccf1e06260c156c61497af6dae897e908e83bc81f9e2bee642347437b607f5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add command-line filtering of metrics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1b9f93d0156e39987842fa4b850ff67ed1665fca8735e412621f17f457e2cdf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add command-line filtering of metrics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":633}}}],"partialFingerprints":{"codehealthFindingId/v1":"e81f41b4842fd8a592c5fea528347c79c4df6f85d8a8bd68936c8595e8ac2540"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(53993): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/options.dart"},"region":{"startLine":1081}}}],"partialFingerprints":{"codehealthFindingId/v1":"330d316fdfc4f31a7610a1da739e3f476d9b20da83517ac74e75ea876134e87f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): [checkEnqueuerConsistency] should not have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/enqueue.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eb5dd1eb82e9cd1ee5a4ce14f286983adb4a183e06045b861c2f744555c4680"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add dependencies on other constants \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"b17290dc20288681e255a6a271500640bbe659ca4f861576b9b42270b5bba9e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add dependencies on other constants \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1195}}}],"partialFingerprints":{"codehealthFindingId/v1":"6335e745c97d6f2dbd1478e0fdf538f17b302260032d149b24ff26fb37f17f97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): Why doesn\u0027t \u0060size\u0060 account for the code size already? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"c61eb01c92bede97bbf8bc161d4b7329621aa8004bd14e239d4c38df202d015a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): Why doesn\u0027t \u0060size\u0060 account for the code size already? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1298}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d4acd7bd9a4dfa255966ee4a2613c88f54c0ab9248c75e294df0743b7989dce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Get accurate size information for class types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8aa65e5a8e652113c415e20b918b761592c6b7e4c2752db43a863cdb4583be5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Get accurate size information for class types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1333}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea5bf0f3b0aa115004e59cd4ec62f2e6d54bbb58607328671f5a01e254650407"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider adding a small info to represent unreachable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"a063ca2809903b083ff0e13bd2b8d37154d7995c71e84383575779d7a2bc13e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): use \u0027toString\u0027 instead of \u0027text\u0027? It will add \u0027=\u0027 for setters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"8706156f045fcbb97b830f3a1b2d6b1764787f86b059b2c61d5ebc7d59a5bf43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Add CFE constants to \u0060state.info.constants\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"a87d6bd46ae358fe7b0083189844794e87954d03429c73e5543b8e1adba44b73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Determine if it\u0027s safe to default to nonNullable here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1065}}}],"partialFingerprints":{"codehealthFindingId/v1":"7de97245f9cf102627673578d26cfac1f65bd40b633fcf9d0972aea01fe43e6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Ensure call methods never have children. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1089}}}],"partialFingerprints":{"codehealthFindingId/v1":"5de6518c5b5610a1a3cae3e93288e33bc1ddbe82b681c3d20c246f996c1429f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): [parentName] is used for disambiguation, but this might \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1269}}}],"partialFingerprints":{"codehealthFindingId/v1":"571592585702819b424fd08bdec590a76f05c1c7890362761a19288858c6c0d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): [parentName] is used for disambiguation, but this might \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1320}}}],"partialFingerprints":{"codehealthFindingId/v1":"90ee20de1fac4a3b3b14ccc92be1a9b8e54cb8a1e338bc9842b191e5edbec3f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): [parentName] is used for disambiguation, but this might \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1346}}}],"partialFingerprints":{"codehealthFindingId/v1":"762f67eec988b3b422103ff73298b5fef6b64c8073a55f46ac9caf3c2a35034e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): [parentName] is used for disambiguation, but this might \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1461}}}],"partialFingerprints":{"codehealthFindingId/v1":"5169a2d5ba1877eb897c738ad9bee701b2c40013c332b8047791ed53a810f021"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund,het): move more features here. Ideally the dump-info task \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1620}}}],"partialFingerprints":{"codehealthFindingId/v1":"14c5c72cc69a9a3a573d5afd5ca7f2869d6843a1e4117e2d0ac07756cec55878"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): Handle \u0060call\u0060 on \u0060Closure\u0060 through \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":1684}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d8388803993eb67f1786b8dd802f2192f687e36b00c8da19c9e3bab56a981c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): delete once we no longer emit text by default. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":2026}}}],"partialFingerprints":{"codehealthFindingId/v1":"89807b97d55b8c919da6fca1ccfc6b93fde96493db2bf89b9bf06f40ff1b38e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): \u0027dependencies\u0027 is always empty. Revisit this if/when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dump_info.dart"},"region":{"startLine":2164}}}],"partialFingerprints":{"codehealthFindingId/v1":"c995466960d8a3c18dab90539fce6104633233bb39a9794e47671de4d02a6a9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Use ../../args/args.dart for parsing options instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dart2js.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"34f5f3bb6c5319ca352976a973ccc82fef8405e3472eb17afbe16c79c8a73513"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): remove entirely after Dart 1.20 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dart2js.dart"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"feeae513dbe55f9e38361c173e00846236803338b24639af49046980fe703d71"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): remove conditional directives flag. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dart2js.dart"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e16c6d34933cc6f4b70c4e8d1d0bf0700e44ddc26242076b0613f653a4ced74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29574): provide documentation when this feature is supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dart2js.dart"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"93895ca02d43ab9d3a5367645762fbed457921b878e5cd7a0458c7f837b536ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29574): provide a warning/hint/error, when profile-based data is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dart2js.dart"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"e76aeb9841ee7c2d4168dd55efa1e3de034cbfe361d686c10749d9454c131ada"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Measure time for reading files. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dart2js.dart"},"region":{"startLine":722}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f1e160d5a5b5fa3e4b30b41feacdd5d29da21a2321c0f2a293c565a36dba294"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Remove when internal tooling targets bazelMain instead of this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/dart2js.dart"},"region":{"startLine":1306}}}],"partialFingerprints":{"codehealthFindingId/v1":"b86aff4b575bc86f1e536f6e61d55ffda91d4a2bcd54f3fed321eae026c4eaae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): implement a better mechanism where we can store \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/compiler.dart"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcb53820e342c23deb58d82825b5cead82cf5e08edad91c11c912c137f5557e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebiggs): Add when kernel offsets are consistent across \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/compiler.dart"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2309fc4f67608047d8336e436aad93a03e0f99da87a2c450c284fa10f1e549e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(efortuna): Make interface simpler in subsequent refactorings. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/closure.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"4690f5f889576730cd6b846e599418a157638404d7f96a6686f017648e0bca8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. The old system was using \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/closure.dart"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"21c25806455667adec22d04bf7c2e6e8b32c8281e4b8749ec882f5fb7b67dd92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): rename to MeasurableTask \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/tasks.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"0344d21cc97e51cbf59bc95ed2511893b5a13549439b45cea86c7ceff68ccc6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Make these late final fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/metrics.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ad66e09d9100b5f46d7cabfb88db6f7765c934b28524ec9a0a5a5c0b114816c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Kernel does not include redirecting factories \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc6e5329dda08680d509e9dccc52942062162db0a16ac451e76738a242098fb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51534): Use CONST_CANONICAL_TYPE(T_i) for arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8b6424bb6a5473bf1fd5c95f54db4b3a55ece621484158cdf808695ec5a6f2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51534): Use CONST_CANONICAL_TYPE(T_i) for arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"c518e106938909e7b10a4414acda4af773d0c92051b1142b005bdadb29f09d3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51534): Use CONST_CANONICAL_TYPE(T_i) for arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ae37b7eeb3fdea65c4a97c346f89865e2f47876ae7bfcf3483fe9a91cb6f7a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the need for this (from [CheckedModeHelper]). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":706}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d10202cfe216a6af8a498239c95714413af7bbebc84ecd4ff18d0aa76013e8d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,sra): Support arbitrary type argument count. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5a24631457704e4d0e8101c3fb6aa50b726017c41086df14cbe3d5919099c86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Split this into an element environment and a type query \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":1433}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9cb5d7ae615c4796a2f5a4c478b583678ae918ec52061273017b74c97ba05a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): This should not include static members of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/elements.dart"},"region":{"startLine":1520}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdf487eb04925dfef467bf44709dd1ac4d2d2515596c38eb20fc79ef10af66af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Split this class into interface and implementation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/codegen.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"9650642db22dd17a56828e35c116052001150e1c055d8e39359ed3d90f8160bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move this implementation to the JS backend. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/common/codegen.dart"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a71823d64bef9c821ac67d9ebb33a45c04848e19c36bba69c9db6a67838ac21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replace with a \u0027type\u0027 getter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a21d817582ab3ca7a28cd115ad34fd0a50643e4f5b29d103d757cbec3a397f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should the type be derived from [element]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"1938418c999a39e327e6b0eefb10585dee729e0045e424ded9c06a8349bb1fc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): cache StringConstants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8358f81a533b2ca197bf7753a9e35de350f4633cdcba0ea050c01091cddd51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure correct escaping. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f0b248daeb95b74ddc50893d733ae8876aa526fa9bca2be4d5132a41ab99fc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make [fields] private to avoid misuse of the map \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":919}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb7ea2c9d179b67acb840b47dbe217b228d86dbaae605de8eb5a228bcdf53c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Lookup JavaScriptObject. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":1153}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b75f08a84c3871a88ff098492df5473584477dfaf027f6ffa594129c408f758"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this should eventually not be a constant value. In particular, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/values.dart"},"region":{"startLine":1194}}}],"partialFingerprints":{"codehealthFindingId/v1":"038e954cf894d93973d0777b132672447dbc1a147aa8075ff2f14b9f14a19a0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): find a better way to guard against excessive shifts to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/constant_system.dart"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"adba081818da582e544b55f317c6139cac805543a17c5611d26302d93ab92e21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(11551): Keep constant-folding consistent with \u0060identical\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/constant_system.dart"},"region":{"startLine":805}}}],"partialFingerprints":{"codehealthFindingId/v1":"21df06b21aa2535a3466d55967467cf91d8164bc7a5700b9c68e3d6bc7eb9fc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(42224): Keep constant-folding consistent with \u0060identical\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/constant_system.dart"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"d67e9d1df6e2235c60432cb588eafc7200563af5f6b457aea2234d5f564c6b62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): IntConstantValue should wrap a \u0060double\u0060 since we consider \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/constant_system.dart"},"region":{"startLine":915}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a5864877a17b4234a690869017b661c842b6e965a3f3b6a486c4be07a79d675"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Handle doubles. Note that integral-valued doubles are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/constant_system.dart"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c2270418dcd94bd5030e3cdc5aaabb5974874071c750790fe01625d587f58ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(25230): If we use \u0060valueList\u0060 instead of \u0060...values\u0060, that creates \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/constants/constant_system.dart"},"region":{"startLine":1028}}}],"partialFingerprints":{"codehealthFindingId/v1":"71d7830f998476401cd98d84033613cc445f1c79a9dae79dafa250b0519e3436"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): make compare stable.  If we hit this point, all imported \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/output_unit.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeb29a53d9cd64903893bcd1d14aa8e5825288a7d980c65c4ed11b1f39ac9e44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider moving here every piece of data used as a result of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/output_unit.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb75dc56c5eb068c89b3a55faccec3fc9be39d5e2e53c058927c62700051336d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove the need for [allowNull]. Dump-info currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/output_unit.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"326b8f0ad90bfecda52b0d9490f9896188e6582c356e4970d3c0ce70f56150cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): see above TODO regarding allowNull. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/output_unit.dart"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"04aca7b119d2ac60dc6f9145acc961e914ec68c0d6fa1948b939750dc30c4afa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): enforce unit is not null: it is sometimes null on some \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/output_unit.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"46fc2ef0a64ecae065c534ac35eabcd3a21671579ae96e0c8546bf9c7a0538b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigurdm): We want to be more specific about this - need a better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"dff101325a8d11507fe2583de86b34558ccb0f19f3357c19cef8eb8e7f55b478"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consult KClosedWorld to see if signature is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"34decbdc85a0adfe0a31d47941ddbbc5dfea5ff187dd16d418d468c0c4862115"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use rti need data to skip unneeded type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"b42698b04f4256db3c5c24872c7122f3b0df796d502261708c2f13846a77c317"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use rti need data to skip unneeded type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ea40b84888ca02d373fc5736a4259095b6492994563debbea573ae90bcd0195"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use rti need data to skip unneeded type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"3509ba7db643d3bb79d7e26042d1118ea73a7671432d21384e25dd9f3efd71f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51016): Track shapes of RecordConstantValue constants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"f076e3c28101df66d99a460d8ea3ba9662057fed8f7cca1fc5fd750f1782e125"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Deferred loading could track record types to ensure that the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb897beaa2db8f62a1a66fc174cf4fc6919d23787dfe0cf00f182e7f79bd7a63"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need to collect the bound? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":456}}}],"partialFingerprints":{"codehealthFindingId/v1":"6982b0987ed0242cf8502e11d86768ea9b8c35b8b36ec3a6dba4bd1737ccfb3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): replace this pattern when the kernel-ast provides a better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dad57380cdf646a2b01a4330a3db510b9be6c495b4910c8ccdbc87c5f4042a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The CFE should mark constant instantiations as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/entity_data_info.dart"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"88961177d0fc7e15abeec541795abe08c471663c4dc55d12fb12314738dfa467"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): update doc above when main is represented by a set \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/deferred_load.dart"},"region":{"startLine":264}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecc36f0bf718edb2fc0a7f3755b09b015e7337afa5c902e715c699df4eec7b03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): investigate different heuristics for how to select the next \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/deferred_load/deferred_load.dart"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"627e52eaf5091705a977168140c332bb1c553d959963008a9907afee1584ebda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): For Infos, consider adding a reference to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/diagnostics/messages.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"456a0a8c15ad9f4a7c0591e29d90f346498a7fb7e8159532778273e2279a8a26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Provide a testing version of [DiagnosticOptions] to allow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/diagnostics/messages.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f440af339ed91fc53f20a799780f75b464c92ef306230e8d31204e077460c36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Review uses of [containsTypeVariables] for update with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"121831f0c2856c9d5a270c93161c194d30ccf6fa789c5aa65f38c314f7d3ef72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid free variables. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eae736c5260c2cb66526cecd0cd55e6f8ec0f69729bc4bda2900c39fd0b9075"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Normalize \u0060T extends Never\u0060 to \u0060Never\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1792}}}],"partialFingerprints":{"codehealthFindingId/v1":"0685db817638819173783bd456142a0c4933b181ee311ecc923815033ca12ed0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Should we instead check if each type argument is at its \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1907}}}],"partialFingerprints":{"codehealthFindingId/v1":"11895087caada52e19593861e04e133255fab1f3f3f7b52d4af46cdb705d5325"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Add constraint solving for potential subtypes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":1957}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c27f9d321be7e78f54871823a2278a2642e30b473d9c5957e1e32c33943bfe4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Disallow JavaScriptFunction as a subtype of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":2056}}}],"partialFingerprints":{"codehealthFindingId/v1":"62675582b0b4ab17a332e52fb86b5af692e3250ea34d75a246e3b16bca777ce2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): Reference rules to updated specification \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":2210}}}],"partialFingerprints":{"codehealthFindingId/v1":"742cdbb3d8e44bc2f910836d19572ca941f77481e82f2cef75fb6d370287dcd0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should include \u0060Function\u0060 if [cls] declares \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/types.dart"},"region":{"startLine":2258}}}],"partialFingerprints":{"codehealthFindingId/v1":"caf1f7640de9e3c34edacc0e1ea6198b417800126774bd3cdc6fdd85da6639dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Try to share logic with [Selector]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/names.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"c957a6b788fca3db51cdca260b9b1318eddeb464e75e3fa92a8598a5a7815fc1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Should this rather throw for public names? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/names.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"f07ed91b82d593d9b999b8b5f91ad224767c6bfcf4b1d42b9a50af5c6414ccfb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The namer uses another, different, version of this function. Make \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/entity_utils.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd691ce1395462492d752ea3d7d7ab2d8f98de265ba5b2c5331ef6e3488396bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove factory constructors from the set of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/entities.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e4e7395d0205879e31d1b3e2b420fbc7e6aca21e443837b521ebca7527d0ba7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when modelx is removed. Constructor bodies \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/elements/entities.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"29448679235d89983739acbbaacd2cf188babe2316722d691988317ce7bdfa14"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. Maybe split by access/invoke. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/types.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bcde4e1f44523f70f31791cbcd2da69fffed795e085f03a5b3a0ce66f87c276"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): rename at the same time as our benchmarking tools. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/types.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"38d1a441b82bcca6cb31f2371a824929b9416e856a28d39d7ee4c7c51d9a1188"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund,johnniwinther): Make it an error to query for results that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/types.dart"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e543c3d268337876f9a86f07122a668d07e68c851c90abc6c076d085246acc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund,johnniwinther): Make it an error to query for results that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/types.dart"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca0413bd8b72992c60078d338873a49abcc9e8c446151a1e2ea98e282820cc48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): change to \u0060mask == internalTopType\u0060 so we can continue \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_system.dart"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e2340482c8dff637d84840a6900f5ae7051eed319b916bcbea9cdf014da69a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Cleanup into one conditional. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d751ecee9a1d3c2046c86b54584c19cf60a86e1c9d4a95e26749ea208174412"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(14566): synthesize a call instead to get the exact \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/type_graph_nodes.dart"},"region":{"startLine":947}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f8c0c99686d2c6b728d68d3975cd6a251941a7dd18006ad6e777e109dbc807a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Extract type argument from type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/set_tracer.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"4561f7ea3243b68202a98bc71b9d283268ef21f7876dcf75872a12e36c33c983"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebiggs): We allow null here to maintain current functionality \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcf8b0102a77ff35f224f6a48fc042d5e41d7c966d7c1246d0644309cff2abe6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29344): The enclosing sync*/async/async* method could have a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"11ad9ae81d896f608c5e1cfe8e9e6aa5dd98eb4ec4c4b214ec81d63d507a0bc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It would be more precise to specifically match the \u0060value\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"adaf9fa263a1997f127d46aae6bfeedfc0bc3a7a1b40f76b46cb4632f79547a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Handle creation of closures from instances of Function. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/node_tracer.dart"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"1480846213c52b9f5167c66142c884da32cdb1b69d00712adac6406184e879f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): implement selection on [TypeInformation]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/map_tracer.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b027f9bafe6d181acc3e333f1d5dd26db979d4a4acbfa5e1584392915e58dbb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut,16507): Use return type of closure in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/map_tracer.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"e138f9c46d2c3b32db2f52cc2449e4bb20357d429f20cffc905c372896b7c042"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): add support for Map.keys and Map.values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/map_tracer.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f06759adfef571004bb2c1ca7d3b9d3c2d23650892e8a80535f060318e358f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(natebiggs): This value is needed right now because some types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"61b85fecfe00c4be6206325016239fd6ca203d693ffb98ef0d9a2f423d26f70b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this private again. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ebae3b7c36199fbb84686d63b24ec69a1ca05241c8240a596dabd35417daaec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(13429): We could do better here by using the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7463ca976a5b1fc584349c5983a6c0c607c033171c6cb9b3e9827cf1d8f32a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement the ad-hoc check in ast inferrer? This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":777}}}],"partialFingerprints":{"codehealthFindingId/v1":"702761ff6b93b91ac9857272add56edc88f6412913c4a4393f75b891b88c219b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Clean up. We do this check because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":1349}}}],"partialFingerprints":{"codehealthFindingId/v1":"0379f08882664f0b25e3dffdc1e12f5774429b39474268ac7869cc565679dfc3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebiggs): Can we remove nulls from these maps. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/engine.dart"},"region":{"startLine":1821}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d17494f1fcc1f2706ac7a54c136e3dc1f460d88d5c64e8a483f454020482783"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should side effects also be tracked for field \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ece7fd51f0871d9013a24a60521830926dfe8d41c0252a08ac6c1b22ffdb23f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): We could do better here if we knew what we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd480427460d21d89641c19de49e0d2d62cae9f7180a388204e207a3102e69aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): We could do better here if we knew what we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"6401d4c3580a9a0999472c2e868d10a8bdaaab51adbf78d3be44cbbbb9fabc87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): We could do better here if we knew what we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1001}}}],"partialFingerprints":{"codehealthFindingId/v1":"02068bac7de6aca4270cece403a9057081bb5227224944fa759b2f905496ccda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): We could do better here if we knew what we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"3722d8c26e0e2e8ab8fc6e57f18d6c6db06fe641035a11d7350a9b398fa1b879"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(52582): Make optional nonnullable parameters nullable until \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"575bb5b103d00eca99a6976d29054856fa771074068d710bf1de8d0035b9db29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid analyzing [_analyzedMember] in this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"dafba000a9990691b6cb86714a9a7111bf2448e0aa3f298a7c80c5b5583ddf73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asgerf): Maybe make a ContainerTypeMask for these? The type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9906ed4e13be1848268f1e866b77f55812fb08be8796c4cebcd009f563c62aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add a TypeInformation for Instantiations.  Instantiated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a254b4fabeb08012ff39abbfd3a477624b48ba12fb50d9c2eef744a83539770"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should assert be used with --trust-type-annotations? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b3e63d9b6d603212d7c3e55d643d7c8d14166a8f5411dcbc3d1c2f21d9b7b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Track reachable for assertions known to fail. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":551}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bff8ad1e964122b63f636578ce429cfb700a59f6e4f11cd5c3bf914028c6340"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): This could be modelled by a call to toString() but with a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8cead95bced67784e3d56b5b51068964fd30a327a7a67145701baa811a3f8cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): ensure that this is only called once per node. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1026}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd0f8fdec144416ab798bec1718e39585f1781dbd24011d3f7b20741a0b5f80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider also extracting the bound of type parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1042}}}],"partialFingerprints":{"codehealthFindingId/v1":"d176d99c855df66b5dec3ca405efff1bd82250444e3fc983f97ee9607f35a04c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther). This triggers the computation of the mask for the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1090}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e4478dd216adf23b96e94069a6aab4a2e6f4e58a75586d9a0c0d73949a110bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther). This triggers the computation of the mask for the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"14ab6922185bc748034a35ad5b0ea95d2d6dbfc4267f37467b9fcdedbb4aad47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use static type to bound the element type, preferably as a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":1713}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3c1c620e48b645b7a4cd238ba2439740ba454b95dae0281df6d9e858b5b1366"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Improve precision on constant and bool-conversion-to-constant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2260}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bdbe29d4c2184d265846efc41ec7dd271b974d9dcc9af6329d7ca5ea44c4777"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add a selector/mux node to improve precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2296}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d745a4dfe94765ee7347fe7fb9356dae38c7fd7e174d36514ff528f0accdc3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add a selector/mux node to improve precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2327}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a4f59fdad88e94f6057f6cc9ef17425d7ae68ac6794d68fea835a2dd7a36aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Analyze whether closure exposes this. Possibly using \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2364}}}],"partialFingerprints":{"codehealthFindingId/v1":"a31b423ecf7e972abe80fe78b3116d427bd94a79ccc556804a400af86741a963"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29309): This condition appears to strengthen both the back-edge \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2457}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcb2d548c9e675fc59caee84b3028d73609cdbce3f96f3315be5f0cf9d62c0ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use a mask based on [StackTrace]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2585}}}],"partialFingerprints":{"codehealthFindingId/v1":"2726848c49414795766298f14c017aa2348be0cfe131d63f3b1c5b8e67aaa619"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): We could do better here if we knew what we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2615}}}],"partialFingerprints":{"codehealthFindingId/v1":"54be44ec4fedb2b735d3fb3103ef4d43107aea9d87e6f3f9e2da4bce65328d79"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): We could do better here if we knew what we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2644}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6121e4551c6cced168df74993c2594e7750ebf0713e2c865f9bf970a49423d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): We could do better here if we knew what we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2659}}}],"partialFingerprints":{"codehealthFindingId/v1":"e49405a1239e305fac7e96ce63bb1c445e461963c78c77b5cb99d4f9e22befac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Maybe this should be [empty] instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/builder.dart"},"region":{"startLine":2717}}}],"partialFingerprints":{"codehealthFindingId/v1":"b833184eaedeca5a5793eb377b444f225429ffd7361d0919e17dcdbe6de00077"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(coam): Assert arguments a and b are consistent \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/abstract_value_domain.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"e89fd076b313e01b1ed9626ba7fb5e00bb20eabdad69708c7211247c18c372d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Impose an order on the mask to ensure subclass masks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"7649d043cddb81d150b8fd0b541ffda288dd5b111a6be44f584b8a839a83dd7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move this computation to [ClosedWorld] and use the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d72682f0d94c985c267da80439457786d9b28f8d8cdaa0a7f25f20924bb67f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund, johnniwinther): computing length here (and below) is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"8aea540c0ea07b1c4f28fa933994a28b73bfe37e10ec9a44c6309fcd5e5a6709"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): once we split out the backend common elements, depend \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"2315af9294d7c30c4b271d9076608367ee7a3a33e24151449ad487027e2bff61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50701): Use: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"d25c3b2c3dad50e1087632f2a9226eeb515fc02761680cdd9a1d95b1f285765d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Maybe cache the TypeMask for typedDataClass and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce4404dddc58941a0fd1601cbbfa9f05bcedc113f60bd61ded2ab96f00efd8a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Check arguments against bounds. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"825ac923b4504c1a91e6928c0c42f3c1733f4825668a526c3d04ced2155f2026"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Handle other variances. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"43507ae42dd5f85551d7bd86b3d19adede813795aa5b38be27168b5045099007"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Track types instantiated in recursion to handle \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36d20e1823959276a801247ae16976cbf0df663d2f316a950c87b997cf25919"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It should be possible to test only jsNumNotIntClass and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d66be9e4cfd61ed287f779e6590dbf6563d2379ce95d1b6ef6cd92c57321f64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Non-intercepted types are generally JavaScript falsy values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba3cfbb706d995ea0ddb781fe89b9454f69b1fb3bfa966415668af84f75e492e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the need for this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":874}}}],"partialFingerprints":{"codehealthFindingId/v1":"e453e5462d40785efeba1c74a635235c20c1623738e9a2626d041885b0a3d6f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Recognize any combination of fixed length indexables. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":948}}}],"partialFingerprints":{"codehealthFindingId/v1":"d435d6a1e263d198222661a1496570a95ac32d36986fd7260e09a10650a670d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Recognize any combination of fixed length indexables. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"60c7f6e0157cbde83d5807cff7463e307b08f2e88ee829c35798f2e83498e1bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider using a strengthened type check to avoid passing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":1126}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d5570b77faeeb29a3a4f817c188c0d3134910875fb5323cfff71db07cee8c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Convert other [DartType]s to [AbstractValue]s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":1132}}}],"partialFingerprints":{"codehealthFindingId/v1":"94cdf443692dc1df92453da5292dce9808b25481fe0f9f18118e345b51ab2cf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asgerf): Disambiguate classes whose name is not unique. Using the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/masks.dart"},"region":{"startLine":1225}}}],"partialFingerprints":{"codehealthFindingId/v1":"07e3cca685cfd78c85ff83d4bb73f1276125de31ce4ab6b6edd69a81337c1e27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find another way to check this invariant that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22c14b015e36d945cd9f1f599fb6914a72959a80ee6539a980061517e7c6e8e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): Get rid of these. They should not be a visible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"f501a8ff62fcd1ea2fd96cc2c62777233118a1ea1148e028729f2318da3dee64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Get rid of _isSingleImplementationOf. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb03f904e76c3291eebc6c9dca7cf2745c258ff7491f5dc81e8740b1dd03ed57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Add check whether other.base is superclass of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bfafd1398af33d580df634cc31d82e1bc3e0f267bc5f6e4ae554030448f72ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): A type mask cannot be abstract. Remove the need \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc92ee73fbf8fd3e57fc91fae93141dd8d84c44abcb7afed0ed6f49e9f2ce737"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Set any other [TypeMaskArrayProperty] bits. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"895ab2606c1869c88551e6eb6c8b0975e9f54cc39d28ba1e281d25244638d7cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Change to plain JavaScript object. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/inferrer/typemasks/constants.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3a156438cb56ea646e8756ae7d5776e2ef97698c074baef6bfff78b51b4d56c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48820): [sourceUri] is nullable due to \u0060NoSourceLocationMarker\u0060. We \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/source_information.dart"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6fe7dcbad5fd59e167e0c09bf52b7ddf102c0fa7f23cc0784e618f348b2d808"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge this with \u0060computeKernelElementNameForSourceMaps\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/source_information.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"506b9839b4bdd82886484622bbf091313eb5a0623f6fb1f29d862bce340c8f6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(redemption): Create element names from kernel locals and closures. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/source_information.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d9f85ac93f07f32830efd665b83769b42a773ebe5b1e75619bcf81f2cb80554"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Instead of creating a new Source object, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/source_file.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"059b270d3b519adc839fe651d412bf87c2694e45dd2528af99eded4683c44c2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Scanning is now done entirely by the CFE. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/source_file.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"039db9f54762a4cebfd3a919e9b27f1b26ff729539ad42602a56eeb8c6d5854d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lry): to make this faster, the scanner could record the UTF-8 slack"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/source_file.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e6837952697ef322747450409968fe994fd616080987eb5066524fb33b7c509"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): enable this assertion. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e4a6b2a485b19d2bd41a9000ba72a10e2d4c3159916be26a20cd21d58c30029"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): enable this assertion \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaba1f864bfd9791edd04baeff2ab35d85ee5654f3a9d86d8bc3bff0c2847097"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when fully transitioned to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":637}}}],"partialFingerprints":{"codehealthFindingId/v1":"b599c2da74ff5b0b6cb293dab54ae256a83f6ebd245b02ea77daec2b5bc76eee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Maybe remove this assertion. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"183d0adb0075c7cff99c7e3c496eab0a84c0fdf5499859a4629905d48209eaf6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Any or all of the values can be \u0060null\u0060. Investigate why this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"83c540753f75441fe9970ad95642f4de9aaeee92039338211a9562904549a93f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This isn\u0027t being used, determine if it has any future value. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/position_information.dart"},"region":{"startLine":880}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1af01802176f4f2e7286acbedc3991b5d3c2e451cbf27516b96c47ca1d2e29d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48820): Pass file Uri in to Constructor. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/location_provider.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"912abba23d0c14c534730d239fdaabf31d1b77f2dff553ab9fafc76fe8837bd6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make the closure call names available to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/kernel_source_information.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a7a2aa6dd7c7cfd54c74dec417dacb151bdb12437014c1ee550099d6076755"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Should we target the generator itself for generatorBody? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/kernel_source_information.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"acf147dd1c99f6a1e5bc36980b29c31a51307bd22b56d3c777a31ba6e4ebb2c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51310): Remove nullable return type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/kernel_source_information.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1a308e5820431728bfa1c15df10dfcaf5e2a42ccd1638bcfa846662c9a44b8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51310): Perhaps we should not end up in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/kernel_source_information.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"514f5490950691c9b6081651d1e2bfa3b3bf06b4b071dbdffabfb15180eafd94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): investigate whether we have any more cases where context \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/kernel_source_information.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"19073888a76f6994aa2ffd7742f7600d7dba7c189802ec1c7a3013e55d1dc80d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48820): We might have a [pushPosition]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/io/code_output.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"9477884056786b436c6f8afc3457dcad889755f829703698fc4ce7856f5cb9a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when named parameters are sorted in dill. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/util.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ff2c13adc1d901b5f5a160b47508b6d87c413852cc354ca5193fd9c1d8e037e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use [ir.Location] directly as a [SourceSpan]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/util.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"b37a22dfed0df302033f0dd84a3567056a44e08e1d23cb2443c73ec542cb05a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): remove when CFE generates the correct tree (#35320). For"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/util.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"a90573762a40f5936ace780ff10ce077ed1d02976b36912b5b4dfc6fd046455a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45681): Refine heuristic to count operations in the whole \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":917}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c45b1442b7ca5d57491aa8605d34fadb6490c6e35f847e76d6409958976bdc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45681): Refine heuristic to count operations in whole initializer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0c98027b31b84e93a22add92e6baf0ac43d0b1945dab6048887494ba3eb64e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45681): Refine heuristic to count operations in whole initializer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":958}}}],"partialFingerprints":{"codehealthFindingId/v1":"3979279ae3e871816df0418d0df55238719077c36185801845c89b4bcca2a33a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45681): Improve the analysis. (1) Use static type of the [key] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":974}}}],"partialFingerprints":{"codehealthFindingId/v1":"944c7b0180e66023e4957c63c4b25cad11b02c54fc9708346af17dc6b7ce7bef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45681): Investigate if other initializers should be made eager. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"acc9f1b6ca429a04c420d47f113c36c94a022bb2e97bd5f146e6975558e93f83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use this to collect data on the size of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/scope_visitor.dart"},"region":{"startLine":1585}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c780f2ef8bf9d8cc23d8b8bf05409113c3f634a58022c33566f011055c02768"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Special-case \u0060this.runtimeType\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/runtime_type_analysis.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"547c09ce793dd417997f9f417c5b174144b01fdf8d5413b74be86017afd5415f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Clean up this logic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"6de11a3aeb836af035943c1d8c40bedb0a9e2b0f6eca5b42e48a90fb59b5fe26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): only save relevant fields (e.g. those for jsinterop \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"184064ef039c4d4533f6fa300f3f9bf7069b24cc6ba3a90056d3b37bdff35873"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Does the CFE check this for us? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"02330bde0df6cd54deeb45875652572eaa65ae2fa607a22853b3816204b8500d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): Get the actual span for the Symbol constructor argument \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb936bcaae4b6233ed87585b156cc7bfaa396b245845b3022cf4ba6c5515c1bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should not mark the type as instantiated but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2fabd8d3778cf90361a3f5a7e0690ec4ae7080df4d07be942b3110ede7bd762"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider using \u0060_elementMap.getForeignKind\u0060 here. We \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b02fb77c3f22b0c6634434c15f3f402c781b8fe8705dec8fe425c2185539331"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove these when CFE provides constants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":1429}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e737f1266804936123d696499cb70119a93935eaf124bb14313dae0a6813fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove these when CFE provides constants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact_data.dart"},"region":{"startLine":1770}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d7af04b6b44f2548138902bb4be0b064f8e74ba9f4d2736600dcde2f9878c91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle the library reference. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/impact.dart"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"d58ea184d28c385cea4b566d06b6044804143da99913b48bfab607932503718b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Use exhaustive pattern switch. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/closure.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4228207bde3da0076d9d4be8e126f1cfe9ab135c11e18d2ea9a1bb01293574b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Use exhaustive pattern switch. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1318}}}],"partialFingerprints":{"codehealthFindingId/v1":"35974291ef52db1bd327d29ccb94e2d2002abaa9248cfdbe874a7eac00c141b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Use exhaustive pattern switch. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/sink.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9a080533e5d6ca1ff56a305d1b75ff6f31c756fca79112b76be0c92cb5a11bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle constructor/factory type variables as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/closure.dart"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2479d6f149f39dfb04f697764817aae93ec3a18b8a1432ec782a5505f5886a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add an IrCommonElements for these queries; i.e. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/annotations.dart"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f2be844244611947925cdc0395084b98874d226e6e8df5327dfe60613ad37b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support non \u0027dart2js:\u0027 pragma names if necessary. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/annotations.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"deab80fcc53a552e05a6843fe6ed754707d6d29f2c858586a1ff86f7307e2e8d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support options objects when necessary. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ir/annotations.dart"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"9103782c18bce6b94d211eb350b9d28f8f96c0961dc29750c45ad19ec8057e6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): allow more characters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"afdc9d0f62a0a1460042ed5b9cb05dffacc0aeedbda204c1cb6fdfe2ffafc192"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): allow more characters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1164}}}],"partialFingerprints":{"codehealthFindingId/v1":"f12d6c379909ac13704209dd13555e9dc615adb8a7f3a67dca40ba013b416438"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): allow more characters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":1293}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a451eb96b1120042110e80683eb865f594cbec0fcbd1c89568fd3b7932aa68e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): normally we should also check that the field is not a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":916}}}],"partialFingerprints":{"codehealthFindingId/v1":"c08bc64f3a71d340eff499907bb652c3a4f6373ab562a638f9afcc20e7fa4f12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): normally we should also check that the field is not a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"c85df0116edc0fb510f9bd43d7273bd44a71398cff1398f0a1a4c2047a5cf3a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): normally we should also check that the field is not a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"d80980abe02dad044c645dcb1f10a562f6dae7c9f40cfc8bfa18d9b354bd2b2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support static, get/set, async, and generators. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":990}}}],"partialFingerprints":{"codehealthFindingId/v1":"10854d5c38c94e1942fd1cab536c059fb1e6daa1f6ace564ca19a06717a9a4d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support static, get/set, async, and generators. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/size_estimator.dart"},"region":{"startLine":1206}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e292332fcdb8719564fc8bc7ca4b2bd1b28b5b25e708b6e26a20dd96bad8d2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support static, get/set, async, and generators. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":1415}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1cfe8e89896229b41ba8fc4f7037620a59d7612310bc344477377e8874acab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support static, get/set, async, and generators. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":1658}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f597fa61076af028f161b5d5029dd5ca3143b0ff7b628074b13210fcd24c00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(28763): Remove \u0060\u003Cdynamic\u003E\u0060 when issue 28763 is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"88daea38aa231ed5e78f84ecbc1c0fc91c70d507f65327a4c005b7dc09981df4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(28763): Remove \u0060\u003Cdynamic\u003E\u0060 when issue 28763 is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"0addb4ee1a7919fef0f21093b2e2b3cb96ea5ba027a524f5c72460c92ba16d3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Many calls to this method use \u0060store: false\u0060, and could be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7dc61d257ee4f77822788937ef054e8291926c57dc70708f2cdef36c0501d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Many calls to this method use \u0060store: false\u0060, and could be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc95c2f1097f6502da725ed623dfb98d3fead928ea83ba4e92b95dd1ef74005"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If only the key has an await, translation can be simplified. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1574}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fe1a2569e8f29acee0bfbed1940b4d21c393c3e774baddb0aefaf2456127c50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If only the key has an await, translation can be simplified. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"895e41ed6308f71d2636316c181b61999e7e6394eee4c1bf75eb7157f917f4a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add short form error handler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":1691}}}],"partialFingerprints":{"codehealthFindingId/v1":"451c10ae7c4a3d8841813e11f97f6e99a0c03578b286cbb730fa21e74e6e0eba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add short form error handler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":2411}}}],"partialFingerprints":{"codehealthFindingId/v1":"777af2c6745e520c8cffcd74b1dbaf87b0c38573691da28ac486f800cec09f34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add short form error handler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":1741}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4fe6b0e857c31997113908f7a75707c7a8783a6847fab3f11423a3ae551f975"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add short form error handler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":2597}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0097b195b4508355b1032b14425ac0d6d0764e157bfdfe7c70c464c30c5cc07"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigurdm): We only need to do this copying for parameters that are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":2306}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f21fa9613f5b00210bfc31d36879dabcbddbe0547a5c336a18f28d3d78d8d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If just the key has an \u0060await\u0060 expression, do not transform \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/rewrite_async.dart"},"region":{"startLine":3237}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae343a9de5567bc92feb913e1e1586b0fb2d784b57c5b9dffd7f440835c620f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If just the key has an \u0060await\u0060 expression, do not transform \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/rewrite_async.dart"},"region":{"startLine":3323}}}],"partialFingerprints":{"codehealthFindingId/v1":"09cd29b22501bf4faa6b018036111584da735a152c3990ef08adccb84b5b7c41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If the JS is annotated as never throwing, we can avoid this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/placeholder_safety.dart"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"c18d52d9e4307dc0f61f3d8e1529efd5f5e5ba907d12af4ecea2155e976626b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Recognize JavaScript built-ins like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/placeholder_safety.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d832514494676cb6ebdbc88462216ea8c41995866b6f185510941ab0fd34fc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Might be safe, e.g.  \u0022x || 0\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/placeholder_safety.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa82ba68b7450d0d2e5b3d0d114dbdd0b14354e0b0025a397acb401518947dd7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Might be safe, e.g.  \u0022# ? 1 : 2\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/placeholder_safety.dart"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"e733375fcc0acdecf2c76cd3b5bdfb0fb0c693be648bb78d1c396ee652f8cc66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need all the options here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js/js.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cd3497ed7bf7a9002e9a181540b65190c8c645d5f96a2ca5635b0076354a4d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Refine the concept of reference context and replace the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/type_reference.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"860dfe17f7171e138046f5226a3ed3fbab9b09dff93381f06c8d3af91b2219e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): There are other contexts that would be beneficial, e.g. a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/type_reference.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fe5e90ea9a377630b75c083a8e69240661747b49f7dd0cf9c9dc6e77adee313"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Some of these names are long. We could truncate the names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/type_reference.dart"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ce954e4442523829d850e899a8b1d4a249ecfc12d67a772015a3c26e24333af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Split this into different settings depending on code contexts \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/string_reference.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"4525d76f7da392f855d32177a4a75ba2d3fd50bea588cf6e663a28f7e2f1897f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add policy for huge non-shared strings, strings occurring in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/string_reference.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdb69c93e272b0fed14eea5cef9792b39648de48619a2f8af9c2937ff7e07185"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We might want to always extract very large strings, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/string_reference.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"3487b4c17abd08b2107a4bacafa786a2987db77a03f53a53f824778b93617642"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Assess the dispersal of this hash function in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/string_reference.dart"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"4155eac199dbe4d4d5f218c93af33aa31f0ba4718498b587af049982c2171e0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider a cheaper but stable hash. We are generally hashing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/string_reference.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"b08b08f60699d81e23447f8f71367dc996912f7fefc78500608a607c07be1d9b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Merge with TypeReferenceCollectorVisitor. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/string_reference.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"66ed84a010e022020c3b2e515e4a2961633b5c095b6e0b4d294032c99a60c524"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this dependency visible from code, possibly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"e46c63a7d2fd8787f6e15bb91a019b6d36d44ecb264bb9974cff9843124163b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra,johnniwinther): Use more information from the instantiation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"04ad554e9ca141e8168e7c343460b70e14678f3b894c3f1125668d87fe7666f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use [functionType]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"61292c9bdb60c9d5c450ce69a589d5ec5214c93b9f4236d7247ec74f68cf568c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Align handling of type arguments passed to factory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9b6f9d61996fe52e5b9915c2d2b0ee1977fcf64ad5567304ace8b1badf09dd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): This should use subclasses, not subtypes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1111}}}],"partialFingerprints":{"codehealthFindingId/v1":"26455a43709b78c3e2cdf9d2bc299d9989800cbd0421abc169d24d85d094f62d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use register generic instantiations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f706656eb151791aa2238d079a90ceadbc6a7a2216b662b7a2df24daf378d00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support @pragma on local functions and use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1269}}}],"partialFingerprints":{"codehealthFindingId/v1":"3547c77c9d65b0802eefc5d5c417d1f180f282d1836c8926bceefb4b1803739e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Include only potential function type subtypes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1303}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b8fd0b688e03e194dce3db83e15d7bea4ad65ad101dc8875fd5615e5e0e605b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we do better? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"716f7a027da836d971d0ba6de19cf1516779a2fcfad27265012ad08c8f35a02a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Special case use of \u0060this.runtimeType\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1353}}}],"partialFingerprints":{"codehealthFindingId/v1":"282f91cd48c945363bf728e846d7c381e1e3b3541eadec01cc80bac074e938ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support this operation directly in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart"},"region":{"startLine":1399}}}],"partialFingerprints":{"codehealthFindingId/v1":"98c70a6268b2a41cdf9ff78dc752a9f0c2738fae110d3338490b11673dc4181b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The separator can be omitted when the parser will have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_new.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4a1d32d3c4d81d1dc34df6a0165616e0f51004f3e6726f3fac1268190a61751"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We should permit codes with short escapes (like \u0027\\n\u0027) for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_new.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"e56c59a5e23340dc0554e25595bd7a51c816a4464ac8f9d12239be92d5f38fc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): codes need some escaping. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_new.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1d5e1b46c85a6c49a8a17884e812d464093a8787077b2a6734c964dd311a3ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Handle missing cases. This just emits some readable junk. The \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_new.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ecb9dfe05794f0d5f1504b0f067d25fddb1b9d99edbaa86cac0dc6137c47e05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Common substring elimination. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_new.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"22a80045b62cace95e93ad5a4d8f9ab781b8a3f27a219e1c29f55932563d7476"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We might be in a context where the class type variable has an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_new.dart"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff445c9b3e31be4fc555d1cea0e67685fd3616f9d41dca1cf49c2034f3e5cecb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(floitsch): Remove support for non-function substitutions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types_codegen.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9eec77d33528012676e62faa1342c4053272156edf8d1617a90a6b2b0d16fd3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Unify type checks and substitutions once old RTI is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"c04a187ae0181eca58f072e0283b5cf70600affd53f1fb24923f94fa1140066b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): This computation misses substitutions for reading type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"697af94870e4e581396f2b33ebc2687f3eda59ef04e8e433cc8f1b6d3822127e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(karlklose): maybe precompute this value and store it in typeChecks? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"5410e69fdf3f03fa8d682499b54a8889f3d831836e0608d02dd0f44fb4da8677"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(karlklose): handle closures. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"960355ab63ec20f1fc5e9769efe742316f485d1ebabd8bf6c15723034ccbdab0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider using the existing required checks returned by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/runtime_types.dart"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"52c84bdc232f48eab15c9a971af18536d35998019881b08319b91c471b568a1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the need for this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c3acdbaa5c3bd459bd1f15c7ad548d73ddda3911f2ede4214d6fc357bcb5c9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the need for this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":1448}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a72975a6a6bcb806d86ca814be3884d1f87390684c0ee6f7edcddc30c44d9c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the need for this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":9374}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebcd2ab89ec10c3d57be3cc234b67eb415dac267e855796120351f1aeba25726"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Record precise dependency here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf36339f9d14cac873a6ac90815cef3c3ce6055e970bbe8d08601527462a3198"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Extract an \u0060implementationClassesOf(...)\u0060 function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9655b686ee93def342bccf7c869feb574b6ba20469aeb146226a39c419d91a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Not enqueuing those two classes currently make \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"17fffbbc283ef7667aed8dc9a47853547fae099709e0a40908c257b54813630e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39733): Move registration of boolConversionCheck. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"b306b7a998f24908fd201fd9e8e3d3f22cd23497683934f28179b9adf1c5a2f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(13155): Find a way to register fewer _commonElements. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/resolution_listener.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"f542be1f9454e12cc7079a701a0eccb8177cbcd20575910f71df187ab5fbf2ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): Do we need to see any \u0027registerXXX\u0027 events here or is the list \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/records_codegen.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"137b6261f07e9f0508cedfe8e87992fb63c08432f95514e70a97a8ea890d678e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): If there is a use of the type \u0060()\u0060, the constant empty \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/records_codegen.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab494c0fdb3c4cbd883da843fc1c196b5ce3b3544848ff48ac785a5cd96b1bb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50701): Split the table across deferred-loaded units to allow the main \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/records_codegen.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed8ab3b337e7cd10b4901e54fcc688b31bd4f30efc93bf345f9f51c643df2151"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51040): Filter representations to only those we know are tested \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/records_codegen.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"022d722e156b799a9f19db4af7b78125a16d06d7e39abfacebced5b45bc34cfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50701): Is the class loaded? If it is not loaded we need to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/records_codegen.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b21f18000b5943bdd6b89f6725b86b8e27a6065a9e3a2dcdad69920de98656d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Assert that this is only called once. The memory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/native_data.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e1bf392ba618b1beb8bd8ed2f40e9468ded0352cb4a08a68a366ec01a5614f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49428): Are there other members that we should ignore here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/native_data.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc060853902488a7e3a72d88ad8606a3b7ec1753429f530c75fb04516d78e30b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Share this with [NativeData.isJsInteropMember]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/native_data.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"44aac3cd7410a26b77bbce73352a9074486190fa06b36ef6243fe7aa97be3f21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid setting this more than once. The enqueuer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/native_data.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"95db275475cc4ba3c7ed3688bb126c650a444032c20ae642e473878ece31135d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove fields that overlap with [NativeBasicData], like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/native_data.dart"},"region":{"startLine":587}}}],"partialFingerprints":{"codehealthFindingId/v1":"989e7f72786082b3f4b64c533d89f0efa62bb40245d44966c4d7c86b5eea2cdb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): See if this functionality can be moved into js_ast. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer_names.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"65c8c9523728f4734915b1054f1c7920e5fe3e2686fd98a3e5946e85cc974d91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): reverse the operator names back to the original Dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"2582173f8b5fc12140a7c9c847d5654673a97d30c005cc0b27176ddf08a4b9c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Except for methods declared in mixins, we can use a compact \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"492dcd8ab43e32abc6b4a69f4582ff8adaf87dd64bbe9e284478971cfbb1d998"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If the generator is for a closure\u0027s \u0027call\u0027 method, we don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"3dd249f071a41a93e415ae36e3082d4815093c4949555ce513b5c96ba7975740"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the use of [ConstructorBodyEntity] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1c4d982c9071880ae8c9b9f9835c92d33a0321a732cba6c3a27a5e7dc8619be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asgerf): Avoid clashes when named parameters contain $ symbols. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae664665d4e7e8677f5a40fde2cecefab000cc503b4c19f6bf321e44d274aff1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Better minified naming. Type variable names are used in type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"26eba15402f9a851d26a14317e13b4a29ff6454739cefafabf2139a43f03e26d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asgerf): We can reuse more short names if we disambiguate with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"d931b86caf4455e9a15a050209f5b28a4292a0196f87c2b408f4f4518667d7f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider plumbing the original name instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":760}}}],"partialFingerprints":{"codehealthFindingId/v1":"915fcf6a04445ed7e30509a79937a930256b7bd879167babb7a252705b43481a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change factory name encoding as to not include \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":966}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f062a68ca579d259c0e2abbdffc35c9c9c4771119c9841ab46cd77f983d0f4e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Pre-process libraries to assign [libraryLongNames] in a way that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":974}}}],"partialFingerprints":{"codehealthFindingId/v1":"499c16a60d1121b698dab9338c59ceb21ab68e0898d768ba2686b17b79bba1b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,sra): If [classes] is empty it should either have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"d76bf30d488e47a40b4672b2d5a8464c15054504c1e14458ef5197a53cce72d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Find a way to get the simple name when Object is not in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1025}}}],"partialFingerprints":{"codehealthFindingId/v1":"54b91b7e3b1023cdea7d5c0e93dfc5092e4a00751a0ff7147d13e76c487e06df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51473): Move the library naming to be as-needed in the context of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1109}}}],"partialFingerprints":{"codehealthFindingId/v1":"96d91f5d7cb4784e74b034794015e7e69b483740eafe0b060f2aa8834c0de628"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(erikcorry): Reduce from $isx to ix when we are minifying. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c5cdd4b86021791319d52ed7ef4ca312110a5fa31bd98497648a31110a55cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51473): Add naming scheme for function type literals. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fddcfb81f997891325ea8c2dbb624505f24ae96170b419ee325b24ba3cc94fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51473): Use the structure of the type rather than assuming all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1203}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce69d0c979694adea7e41dbedef343d046ef0cd471d9236916e9ea23c0f0df1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51473): Use full type, but only to the extent it distinguishes from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"f50671fa1fa1aed1fe00ad2b1f2803ff9aeb290c97b76849537e22a3006d3bb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(9476): Incorporate type parameters into name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1369}}}],"partialFingerprints":{"codehealthFindingId/v1":"28734809190ff0edfcdbc5520ba84659365359040872acc9c482998d6facf8bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(9476): Incorporate type parameters into name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1386}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c73065aeb11cb50a315fa35c750b5923d54c32d95dbed73ffe20eec23bc75a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(9476): Incorporate type parameters into name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1397}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0867e35d44d576b453eaa59262d44bdb325433ad362a3dd57d9bb5dc6818062"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be accessed from a codegen closed world. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":1452}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82fdf0bb0c9083f5e46bcf11f74b5f30cefaeb4f3ec5650d8fa38cd42f9b07c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should implement [FixedNames] and minify all fixed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/namer.dart"},"region":{"startLine":2331}}}],"partialFingerprints":{"codehealthFindingId/v1":"8571b2eb2f5def48d77bb748887513d1c042a1ded48198a10bad527a9f423e6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(7554): Refresh periodically. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/minify_namer.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"92cc774cb26438e7d315c36c8ee55bd8b7aea54c8a45592bd38058a8d7a93e96"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): support named arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/js_interop_analysis.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e3e33d7e385256ddc4d91fdef2d3a6fd1d811f56b45b91c166988fa45cb6f68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): consider using codegenWorldBuilder.isChecks to determine the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/js_interop_analysis.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"1459aa090c4b5ca098cad7d05c1a6cbb5fc13aa20cb1bc7a20753ffc4dacdbea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this hack. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/interceptor_data.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"57739e67c4d6ac3efc978527d16fc96c585a0f087e5092d3b0a0e1e8e2e56a70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Is this \u0027potentially called\u0027 or \u0027known to be called\u0027? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"96dba8b887631d956fc56f54a31627cc79efb4093a84bb5c3c069c13488e6b24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Is this \u0027potentially called\u0027 or \u0027known to be called\u0027? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"5942e2e3b33491514f8b54034a597448c9ebdda4421f9dac8c19488754025af9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change [MemberEntity] to [FunctionEntity]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3eae82d7b7bb10c601ec00f99d362003dd4082c43312256752fd8a969b5064e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Is this \u0027passed invocation target\u0060 or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"22ecdbc3887bd24c4ff23961a31ad8f94894d6058924b141f3d2a70b3e1a06f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Is this \u0027passed invocation target\u0060 or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e5d984aef5cfbc112295cc33a3bd524901dcb2f1824b346197b0c5bb35d858a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Check that [_makeSideEffects] is only called if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c5f9813281db100bcad055ecfd8510f3859460b2112a37d946defe6fef485bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We should reverse the sense of this set and register functions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d3f61976c4333cea7ee280bb6748c9e3f7cc62a5832227a5411cefd91d94491"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We should also infer whether the function cannot throw. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d6a81728fbdd690d3f4c8dd02a56a78483bf028f90dd1e68ced2f3509906fa5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Optimize this algorithm. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/inferred_data.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"57431ab00e497574d31903f6f827c3d87c5bede95b09fd2662e746a48403967a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid these workarounds. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/impact_transformer.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f623a064cf6490488053a9077dc82c1421f4b4a5a65668f5a77e942a2f2c9a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove eager registration. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/impact_transformer.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"8407e15ac9ed963433acea5901dd6d42be2b0c51736e70006df9e9c68e726b64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If the next several cohorts all fit in the current pool, the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/frequency_assignment.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"76dd3deb2c67f773e1ecffafe51473fff9ef5467a1455b56aebfe1ce36ceea47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Don\u0027t add elided names. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_naming_mixin.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be2fd9dd219027d19158644c364d2dfd9b9f60fb3d10897bf0c897a2ad24b14"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Analysis to determine field order. Current field order is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d0e9fc984cd3abdd533a109d66911ae3d4c45e4e2bf82a4b6663d8c482a7e6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support initializers with side-effects? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"deffdf3289617aaa6d11957e069ec4469cf4983bf0a45675112f566c17d5ea30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove evaluation of constant when [complexity] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"f89baaad56e126ac3a43f823bb331d5c51453c347814a3d7be28418308560828"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should elided static fields be removed from the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0cc9bf568d66691afc8e90da55b1f97d076a314213859a0a4e12702d53e13a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Because we skip the logic below for fields annotated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1e9cb61ef37eeae751d85a9b259fb840adb74e26880c7259c8c06a56e746f60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,sra): Support non-primitive constants in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"d821ba0e8d21274594ffe9dabf8ad03789e7ac999ffa790f046b93a6c1cc6643"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we assert that [jField] exists? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d97b373016cbfecd92c8952ceda6678b3755a07420a062896fd69cab1e12315"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add way to let injected fields be initialized to a constant in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":609}}}],"partialFingerprints":{"codehealthFindingId/v1":"e20c4528a8ccaf80490905ac96948ddb03e3bef40618ad4f3a43c768a1adafa6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge this into [FieldData]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f44fdcb8fa40678437abf7e932304c4c97e383cb182afb1e6fc5ab1b52cd028"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It might be possible to infer other fields have this property, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/field_analysis.dart"},"region":{"startLine":629}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b144a31fd36583580e2dbd4f7f0f7d67d443b442b4e2f4a06965ae866ee73a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should this be tracked with _MemberUsage ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"c63937ab8bc4ea2f82e7dea220c251e67cc8fd3d1bc59134bf97ea582a06e834"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Collect record types for conversion to classes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e61625e92e9a7c66a2b64ccedb55fc5beef4da046e526db0035a23b38418fe3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find an optimal process order. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a2f7efdfbf1f0da47635d1377cebb208f1d942b36186306a07487c97185b489"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find an optimal process order. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/resolution/enqueuer.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9cccef4ed92722c1b94a1f9ccd9bf6e986e021814a35311092bc58d7d7e842f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Register the processed element here. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/enqueuer.dart"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"28db3a0885bac00409ba273ed17f3bf699191961a8811ff4fe60f17e029907ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Figure out how to subsume more of the modular naming \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bb9f6784926273bfe8b07b5661f7cd7662d375c6be4318492899c5fdb0d0c5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(joshualitt): Today this exists just for the static state holder. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0f3519d636a28f859b96fffd6ca20fbf6be4505ab182586eb5188db67b92e56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(60939): Have multiple holders. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"98137e3ff3450c7f5b84161f238447b764a4751036ea2c4566888310492ef241"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Make sure this method\u0027s documentation is always true and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"451b71641a90f86b8a5d5d9e1e9d3f459b202aa7f11c4ae752de898215c881d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46009): There is a bug where constants are referenced without being \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c17f33c37a2a4f688ad8010dc956204849e4156ff790e6fadea0c694e89480d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Change declaration followed by assignments to declarations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"319ee83f73056eaf57b338bee35cdff9c2052417c4fcffc9c3e4145ebd65fae0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Remove this workaround.  We should mark allClassesSelected in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6011a79f9b95d59b3cca8a862be4b62f03edfe3d496d4e3224d110791cf6d55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Remove this workaround.  We should mark allClassesSelected in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc7f4d653d91d58f820baafcdcc1c53e915fa1a4c8b86abc79aace629ab2385e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(12607): Match on [ClassMirror.reflectedType] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"94c264846ac98d1f455825f4e69023930b9bd77e95d81295b83d28927a27ff5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(12607): Match on [ClassMirror.reflectedType] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"c01b23b38402057702607e2f7ce4bfbea495c00b78e846b5f00889a05aa20e66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If we had a flow query from the type literal expression to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0508f4e03deb39f36c60b08f7c2c7baa31a0ef61c9f300e2d2a8cbbdbf0e94b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Is there a way to determine which types are bound to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"55a11686cc826ee54c4e7f4506def31974f07ae7625b7d61d0fc00bd6ae95282"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): \u0060typeLiteral(r)\u0060 calls \u0060createRuntimeType(findType(r))\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/constant_emitter.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3cf7287bf37242849f5e2eef2d07776657397e764410c9d72791a1d86540b4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): We just trust that the field order is correct. It would be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/constant_emitter.dart"},"region":{"startLine":505}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5f380891217292e208146789a0ef8592c941111944657e90f2794be86a25a62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Avoid registering unnecessary impacts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/codegen_listener.dart"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"4707eadf1c551dfce1f8e4313cd5cfa0e43b4e7eecd33d8149514f83a59c9843"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Register these using \u0060BackendImpact\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/codegen_listener.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"062abb2f0157ce2dcdc1a1e85d7212ec880886be07394c583d299c4e5432e010"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove the need for these. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_usage.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9a78b1958ba9043577eba0dded4d5b0676b19f7c6490c7699cb9240f388cd64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove the need for these. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_usage.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"01baac02b267961eedb99fb62466328eb3757da51e0e037cf1275c87125bf6a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replace this with a more precise modelling; type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_usage.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f86ad4fdb5d74ef0c189978e11f891450de22fea9baa01e6beacd63563537f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replace this with a more precise modelling; type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_usage.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a87cdbead007ce23793bab55cd3a2572404064284c2ed1e2eaa3da84c513590"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should be more precise about these. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_usage.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac496ec15889ef07b8e20069ebb0084909b4badc906e4d00a8ae7f20f3ce17dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): These are valid but we could be more precise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_usage.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cacb0cf668d2a9c54f0eb527f9950d58972105cab420bfac38e6c26c45b765b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): These are valid but we could be more precise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_usage.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"69ad9f0a767265f6f9ecf4d9808bf5a1cb019e2b35db81871083c79a89352432"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid these. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_usage.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9c8d96cf031eac98953c369c73af6dd36be9d8cbeee86aa966c6bedfc1912cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Register [reason] for use in dump-info. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_impact.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4cbdcddd47271a382c879b53ce8435b98bed296bb20a578e66b0c1ba4727266"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Register [reason] for use in dump-info. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_impact.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"0432d898fa3bbb329bea3884e9d64be9f3f905c5c9cf7f17fcec6ec109033508"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Investigate why this is needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_impact.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"14056b0582c543c108507355e2b0e2a5e6ca04c83fec80f0b76644c26a23a60e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Split into refined impacts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_impact.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"da09666eef8c36f0c8b4fc9039c67761e7187be6c59a622a6bcf9346f6b01493"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Split into refined impacts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend_impact.dart"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd61780694a1e441c89913ae224d85508f04790dc83af034e0c2859868ad7ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Have annotations for mustInline / noInline for constructor \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/backend.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"d51c05f700351600feaa6cc929c8c16ed32f95daea31debbc57da846e97a8c5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45682): Make this annotation apply to local and static late variables. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"f16ac33ed60764de09cf719b1437e2ff40c06fa56f6fae3c1bd9af41b9f9d082"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45682): Make this annotation apply to local and static late variables. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa983b8f63c1a477f2c436c6129ebe15462ecec5c84726c4e9910c68356bfa91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Review [forFunctionsOnly]. Fields have implied getters and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f4769c83f6c0033b22d794b5ed0ec556d1d80b52694519d979e263f33526d7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49475): This should be a property of call site, but ssa/builder.dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"143b27889b57bebd1cba5a36dad982d927e421705f4bd1b5284eba977f2a19fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49475): Need this be nullable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a2cf5edad1f9503bef5575c0c39a589f44591be559d1ad8db009f350d65c0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49475): Need this be nullable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"945f1db13940e1691b1e360ba51f9e1e410b39e69f8239eb9774cd0c7a79389e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49475): Need this be nullable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d23e379c8a9e20af91f7d4a65e30f1a3cf72dac4e704bbe9e63b85dd3ee069"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49475): Need this be nullable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f6b713ba1a5e725f9aa9e18ce1288530f525fee6f7e7a91b34093455d4150c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49475): Need this be nullable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a1d18d6e682ed6f7fb722e7e41e49cc6b26414ce04c1d9316ef6da58fc361c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49475): Change the queries that use [pragmaAnnotation] to use the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"1512ee9ab586f23feb28a5ebdaedae02e1c9a7375d7c69843d5cccb03cde513d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49475): Periodically clear this map to release references to tree \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_backend/annotations.dart"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d47c2cc2d8b4450d8702503c8d41dcc29c063bf93814b43917c60431a0c375"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Include function signatures in [ClassChecks]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"e997d8bc4772dc259e93984003b03e679dc808a69837cdc201ae29a4763f2c25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid unneeded function type indices or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"8af2257d2d82ee57c6e8b091ed12441795c0a761de8371cff31ae3f6e7ebe1cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): use output unit of [method] when the classes mentioned \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccadae136b7e4be9874c2d4d39e1b5732d8a439d6d5d4082b26bb9e20b187391"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support sharing deferred signatures with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/runtime_type_generator.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ef3be73e7077f56d68e41adc1a25d00f4eeddf60d7e7fbddf7349e79b8c4669"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): MD5 of contributing source code or URIs? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/native_generator.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f72156032e68a4af6b42a9c1f758f94cf81db1dbfc63d72ac040d940446e048"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): we don\u0027t need all interop classes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/native_emitter.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbd0a1d90b8def9be66b54a186d0e2f9610370e30094b367158eee273108fdb0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Issue #13731- this is commented out as part of custom"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/native_emitter.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cf7afb8b2f4515883bcbede1768ad9f51983e4bab24a40fabf05e2acc61b942"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): we should store the metadata directly instead of storing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/model.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce901d467bd5b99fd23f6c000303f491e618fe040ca6af8ac3cc96e4c5da045a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): should we move static fields into libraries or classes? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/model.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"c330e78d7df62beb17ceb20aec8d835fed951a225ca64f414e8fe392afb89c01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): lazy fields should be in their library or even class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/model.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c8f006f4e9d5d154a8cfb0d33f2bae8b8155e4923f617dea485648aa905069"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): We should collect a list of stub objects in the model to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/model.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed7163c57757af4d02078f00cf95b1e202e2f3bd4c9fc72c92e20192e7b23ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): the holder for static fields is the isolate object. We \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/model.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d50b96593cffa32413fe0446ca7f03597318ce9f9f66bcd72223db72345ba8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): There are a lot of fields here that apply in limited cases \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/model.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaea9f8e7128bdc2b1135bf5d3097b0550a0b8a83e3def8c08114eb7c23cc467"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Now that we collect all rti needed classes and handle \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/model.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"b05d125dafad54d858fee7c01f16b2f6fffb1b78c093e24fb475028599c27473"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): support renamed fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/model.dart"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"afba5d059d275ac00e01dc917dc539f5311012721f97e54bd5b16eae43ae35b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider instead having an alias per stub, creating tear-off \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/model.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"85d3786376a6568bb82242b614166a4463a349653ba34bfac65228a2cdb7172b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Bucket entries by index length and use a stable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/metadata_collector.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa11f2e275bf20787fc67376b379d7961349edb1c897915a8a2521df22a40fdd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/language/issues/1120#issuecomment-670802088):"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/main_call_stub_generator.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d00850d023191c3995a4b9e18319983aa4e636b30363c9a88ca14b35ee4f6ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): It might be faster to check for Array before \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0f1d8ff54714fc4cb128088ff2d965172822a88ac8581be2eec59399e20bfeb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support annotations on the possible targets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"6439e3d1a9717c4f0e86c1f33b2aee6951493fc9185306b3ea2f03623180b424"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support annotations on the possible targets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"8416a1c4568ff8c4666cc4ed383a5eed85ddefc5ca2c2a3038a154668f24482c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support annotations on the possible targets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f90abe96c450415c74dfcd43058931627a58e6f1bd88eaa4cfeb3cc6a3adc58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support annotations on the possible targets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"bafa310c6bb6841a949039266aec795669aa2377d4cc3e4dedc67d0321c01ddc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Perhaps inject a constant instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/interceptor_stub_generator.dart"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"d957a1874073f76eaebcdec53496ba46ee49ead87d754489b4a73ecabf6db1e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Generate source information for stub that has no member. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"25aa5eccda912a050d52869b63f1fa572f32ec8ace1a92406f1c1522d458d0d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Generate source information for stub that has no member. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"bab060ae7ab0f2b884d09515a7224945ecb12c396e5f3cd7bb9c19b5a3e1eab9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): .withSourceInformation(sourceInformation); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"9027ce4b272fb50a6c8f55f4f377c2c0be116d8caf066c62f9d59a969d71e494"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): .withSourceInformation(sourceInformation); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/instantiation_stub_generator.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"0df9ab68ce22264bd69b493d699bf29bf5769d8d624718448934b2a124f6f010"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Avoid all these tear-offs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/constant_ordering.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7f78ca3c8bfdd334539a1736d540ba8f1986b7c1e3d6b7881cefe2eec153c90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: ///     type. TODO(floitsch): point to where this is specified. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/class_stub_generator.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"6534fa37fb1b248b7c118bfe196ffc9c39d4521ceee2c46d285bd2425be11f5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): we shouldn\u0027t update the registry in the middle of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"00ffcf2e6a172308fcdc7c5ebdbe9ceb4cf921ac512cd20407343f6dd7b8808e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): we shouldn\u0027t update the registry in the middle of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":427}}}],"partialFingerprints":{"codehealthFindingId/v1":"e33cb06ca563805a9e3c75c644b14c428dffe8809d68012b0c9302d2780fe908"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): register toString as used so that it is always accessible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ab3cba2d93306c366ba7d35c2b94e19961e02e93370a15a360f20f887ab7e1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): handle field elements. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"77118eea07cc36b996fc116b47edb1f9d537d14a88138083ced655038a57f0f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Can we just emit JSInteropClasses as types? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"4026960fffcaddde6ab6a0188d5918177ffb24793bc17c35dd2a5abaf4e4919a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): check whether the class has any active static fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":663}}}],"partialFingerprints":{"codehealthFindingId/v1":"5abcb61c29cac7ebe1de5a0bc961c8c022ab69ff1c5754a0c20d40cf65c69d06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Instead of generating all stubs for each \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"e203d0d3598abf94165c35d65d9ac0f9713f77b781af04bf6c8e93a9cb4729c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): Figure out under which conditions code is null. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":969}}}],"partialFingerprints":{"codehealthFindingId/v1":"27acfe50744a8110711edf64a6aee751070132f0da40afb04b33953a4bada4bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): \u0027isInterceptedClass\u0027 might not be the correct test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart"},"region":{"startLine":1195}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b117012fbfd060fc61af615bcd72579ebdaebafd7bbc6de967ef303e327c65c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Figure out why native classes are different. It would seem \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c693fba808dfce75116d1abc792b3953e209fcef1e106287317edf967ab200e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49536): The only mixins-that-have-fields used on native classes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"aad47c0c2c8a3dc48280cdcb3a2f2d1c8976a270b28149c56df1e5c55f9b651d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Return \u0060true\u0060 JClosureField. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"02f473012e47dc2947565de9b5b6f2fdcff015be1e159166c78e65e0450552af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Mark this as a backend type helper: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/collector.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"4140e74f8f85e82b4aa2978d09088287f40ccec872e8a3f9f5c42602fb94088b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigurdm): We should track those constants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/collector.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"22088ae94ccda44d76eb44f8b9a738b5afa3888c25cea046353523d8615e0d72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be accessed from a codegen closed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/program_builder/collector.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"22469153a6057c0a935540ed7b8fcc7732780e33f2137eb99f1323cd8f0ebbea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): remove hard-coded name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f96e7be3eb8f27852f63c7badd9e9fb2394c62913d15a2db10b6a8d3eefc43e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): copied from OldEmitter. Adjust or share. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"840ba442c1e555ac532aefadd46e7c27c38760428c43c92683587ddba525c292"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): This is where we know if the types (and potentially other \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/model_emitter.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"dba76c24a5ddf3d7ed6e9dd443c350036eefafcf4d129dce3b6f6e501b21fae4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): interleave dynamically when it makes sense. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_merger.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc0baf8663fcbd8cc7f9c65e1fc8d36d879990b07695dfe0ea008fd7f27cd53a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): How do we tell if [deferredTypes] is empty? It is filled-in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_merger.dart"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a52f0639200452813234a719ebb62534a8fd62ba772e2d1010b52ab352cde5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): How do we tell if [deferredTypes] is empty? It is filled-in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab44c0b96204243076bf1923dcf8d5e57613222a5d89bde561e381a30bbfb4fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Currently, we ignore [typeRules] when determining \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_merger.dart"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe4c42dc1a6108c94b512894d8da05ca8aee63024747c097ab6fddd5c97fb880"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Refactor this to more clearly disambiguate between \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_merger.dart"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"c62ad07e8b0c0d4e2c0bfed071dee4779d8d6dad6cedd885ce70cb204bfdcd20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(joshualitt): the library name is unused and should be removed. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_merger.dart"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe9ce8ba85c9c1e169b0cb2eff91b1e672ce7b67c06d74f7f00bf5d0ec957b68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): When the JavaScript local renamer is more intelligent, we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"d620e541d17f6330c17ab0d15f4a9cd1c9041284be3fc0fa64179833e7710092"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Does the value need to be stored in the holder at all? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"1923ea2ea08179d6a87947ca1d54e1ccf08e3c242f4464d4810bd06d24b52929"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It might be more readable to manually inline and simplify at the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc7a516640386de01ab183b50b6ee383fe0b927cdf30ba4bae55ab7b743318da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Specialize for very common simple cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac5ed9225ee637d2c14247720417862928a1d973a2828adfe728abfc60c8545f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Returning [getterFunction] would be more versatile. We might \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"6202ff6da18027f0cc567eb1261843d463230674b6df209254db2236bdde6804"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Minify properties of \u0027hunkHelpers\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d5eaf276b5b710ec4a15c8212d3fc3a68c15cc092262ba8b5e94c9a158ef457"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): extend natives. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf5f32187a398fb4644b61809cec756c926ba71264af11d7b3a2d0c218390cc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): we should build this object as a literal. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"279ede8c68fb1497458cff011330b048c7fd64129809a98dc0f4aba058b1672c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): This should be generated by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff413c5e49e7a767fec94a54f735c651f823bdd77938a45a4b49fd2aa3f04c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): stop recoding associations twice, dump-info already \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef9b572035c5c7ad840d9b32aa151d71efa435025a08bbbbc51420b12311ef5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): only call emitNativeSupport if we need native. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"c57ac99cf5b7bf2d716f39bc637cd911896843444fc94d6ad48e36ac7d052c2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29455): \u0027hunkHelpers\u0027 displaces other names, so don\u0027t minify it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"156190fe9704cf50e33e9a433630d0407be15cd8be94beed33a90eacae9a507a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): don\u0027t just reference \u0027init\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":804}}}],"partialFingerprints":{"codehealthFindingId/v1":"88492da51975f69e03bcdd9fe92774847114812ee35acca0115247b21cbf14b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): we could avoid that property if we knew that it wasn\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1072}}}],"partialFingerprints":{"codehealthFindingId/v1":"69870fafc76d0f3ad60e9271924155fdf5137b7ea2f2a53344f6157176bef361"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Adding properties here appears to be redundant with the call \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1096}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e61acbc47b61b360e536f7b48e3df5e9935395729519351a0e38dddce0c4c96"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Compare methods with those of \u0060cls.mixinClass\u0060 to see if the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1332}}}],"partialFingerprints":{"codehealthFindingId/v1":"7de15a0d8a64bf5fa79b2108c8996b24398375e78f442ed6bf0afac265bdd27c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Replace [js.LiteralNull] with [js.ArrayHole]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1379}}}],"partialFingerprints":{"codehealthFindingId/v1":"86a352cbd0d10e645bd91b01be9df605195a14f9aae82066429d8b53c6fc00e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Should this be conditional? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1415}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ec36a5f4d62da49b95552689c1d2191699a155e139acdd61c033450c32a6f7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): can there be anything else than a StaticDartMethod? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1610}}}],"partialFingerprints":{"codehealthFindingId/v1":"d80d0d0249bb9f114ca28221efae879d95d8fe5ffcc82e8ecb02b23ee34762ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(25230): We only need to name constants that are used from function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1664}}}],"partialFingerprints":{"codehealthFindingId/v1":"32750c86da759ecc59c6fa30638bcfa3ae3cdfca64b5895c93a9a7ab4463796f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Chain assignments that have the same value, i.e. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1690}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ebf230a0547f3b5cecda9f1127aa7ace8bded1afd888828faaace1eff024073"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Distribute fields into per-unit holders and use a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1697}}}],"partialFingerprints":{"codehealthFindingId/v1":"79af58257754cb4fdd61956e90c952de9eeb791ed16808e1cdd29dab2a6edc56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Use a string table to avoid duplicating part file \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1913}}}],"partialFingerprints":{"codehealthFindingId/v1":"79f4cec8e6149a1aebef520b33f6e9780b4904cfc80d2bb47fe41984a0a5883f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): this should probably be on a per-fragment basis. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":1976}}}],"partialFingerprints":{"codehealthFindingId/v1":"729ac413e24dd9ad6cf19b030bccde2871435e15ae1dd08a2255b9788a67e22a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove the need for adding an empty list of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":2048}}}],"partialFingerprints":{"codehealthFindingId/v1":"c45506d7dafa9ae9fc6d7e75a5a0f4aff4694edc42478c185bceb7295e8a6832"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Prune uninstantiated classes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":2140}}}],"partialFingerprints":{"codehealthFindingId/v1":"c83ed4169d2bfd8fe1e086daa1d3e64e37b40b6ae2dad0da3ff5790005db3597"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use Symbol on non-IE11 browsers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":2290}}}],"partialFingerprints":{"codehealthFindingId/v1":"52472ae4c2fce3242c36e32a9310625ff21f7dcbbea962bc3c2ab48f5321c166"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Refine the impacts to accurately predict whether we need this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart"},"region":{"startLine":2337}}}],"partialFingerprints":{"codehealthFindingId/v1":"59e806d9434c01d13a119755d2087d7e054acae89713a88642b41a9f49b237e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): don\u0027t use \u0027init\u0027 as global embedder storage. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fe0400e0f334eb9846162dbbd41ae1a6d8231c251c1625721e29df3bee50b69"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Use a single shared function. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_emitter/startup_emitter/emitter.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd1c1549492d3dbbf919d705d8fcdcc0f599aa5327fb1615cfe032920456533c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider extending TypeEnvironmentStructure to encode when the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/type_recipe.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"800a393c6904fca41584a37b2660ac0150040c244eb0adc90cb9497d16249066"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Type recipes that are different but equal modulo naming also \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/type_recipe.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc8141918e9aa8dc0c4f2e380c9a9394f1ff49c888f4230d2461c2df31289b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Lookup type variable of supertype (e.g. ListMixin.E of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/type_recipe.dart"},"region":{"startLine":630}}}],"partialFingerprints":{"codehealthFindingId/v1":"8971fab6708a957ac6ab96f6c31b65dc47b658ef723418e79162786806fab679"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Fix exponential terms by encoding a DAG in recipes to avoid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/type_recipe.dart"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5008643db92436574686dd847c4a0b3b22266c94b0dece07a611c11790c6950"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Implement specialization when fields have types that allow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/records.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5faee895edb21edf574a596539b63f9dc58e2e0411c1faa582c0a236f5d94a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): Ensure the specialization is correctly identified the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/records.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b92a6be1699e77e56ed24e67b2e88e83560a757630352c7920070ae829c31a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Cache lookup. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/records.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"f848805464300cf7ecf06fd5e5fce64957507dc1ce33005695732f2ed3e0cf4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): This is a placeholder for the specialization key. We might do \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/records.dart"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"622627e1de48104218c13e4736bcf348ef13f1a61656a1db1f92a7106c1bb53e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use a regular JClass with a different Definition? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/records.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"da3b69ea6eb91c0adb028cca28fe388e275a8d2a21a55a940ff481df2c0ad0dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Compute this eagerly from the root of the member. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/locals.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee384e426898dd34c4b5a58d1ae48e4b4209c8d680a87f71b5767da69995d84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna, johnniwinther): We\u0027re not registering the type variables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/locals.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc481f8cf8a8ab6aa9fe130274e4afdb0cf46b622ec97dfa138ded7069a22dcb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/51777): Avoid this issue by implementing the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/locals.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"85e08ecac66e395aa286e02556937941ba7ee3ec56c01340fa614ed21456a54d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Coordinate with CFE-team to avoid such arbitrary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/locals.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e87770df5ed5094c2cc9e0d4d6754b356a735c1881682c3e72a7c955823c199"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Include the call method when we can also \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_world_builder.dart"},"region":{"startLine":284}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd6a57d921766137a748efe398853312f724d280ac6e45e0b80fc95cbc10a3c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51016): Determine which record classes can go in deferred units. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_world_builder.dart"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"343a7576bab73516e2252b2203d2b306090a95764d9c52bc3a8644c4774a05d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can this be derived from [ClassSet]s? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_world.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b97ce1b3543d34d3c0938f51afe1c95ed188a0e8b47b379f44443ca3fc4a87b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can this be derived from [ClassSet]s? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_world.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"821c9cb01e126a8c763ec759fabd4a13c484cbe2bd3f068a4ccea1758a655034"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Refine the effect classification so that native effects are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_world.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"e05bbe648ecddee0643c2b7217fd8cc64cda55ac86b8ec05be0561921d346ce8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): An alternative is to lower the record to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_to_frontend_map.dart"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"e11325da1d5bd1db74ca7deb66c61023e69a7543447c61aaf3827c5d9f5f6256"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the need for a [ComponentLookup]. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_strategy.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7acea778fa506f65c1c09fdc77aa4aeb5be27e120b49f186e376a42e5ff376f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Share the impact object created in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_strategy.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"67c70d0e60438d612f4c6e4d5d0e6d67747a249275e7b03185bcc9049cf4e038"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Investigate why mask is sometimes null. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/js_strategy.dart"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ee4a82ef202eec8d8b2d9271fee7bada438e394b157157a03510ea7a528a6fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Handle arbitrary load order if needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9c8129dfc4244a862970371aed3604542ba65f12aeff3fbd1d732e13e0ebfc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Handle arbitrary load order if needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/env.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2377db8c366c402aa26959dae1a939a6351cdfcf28e9bdd04afb089404e07e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid direct access to [imports]. It might be null if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d139ddb25b891cae8e6ce5d054fa24445cb008439b09fe4bd8f0ce91f6bcc1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Share the original base data on deserialization. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":1003}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c828d6cf84775850619ff4a90e701fd10efc9e82080b6c732db9e1567bc28c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,sra): Constructor bodies should access type variables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/env.dart"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"988f33a95b291c024b13d99158717e0faccfde38cd880e1b0e791f76cf78daca"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack stabilize sort order. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/elements.dart"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea83049e43acd5ae1f1b210859e096810af807de6085b8152b86a378fa288dae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Filter unused classes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"a71a6c8ba5ffb807377cf476222d3743709c69bceb22f1baa96414d76a43e7b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(redemption): This should be a JFunction. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b62232330822672294f43acc6dd07f27b3313ad7a848c3d03c1c0644fc52513"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Skip type variables of unused classes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"55cacdd84e0f967e84171cf3accd86406a4278dec9dcab4eff411a196f14804e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should close the environment in the beginning of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb04b2dfb9b5b4fe4f21a09612ba59436968f86bd755920f564ffc043c7a64af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebiggs): Defer reading these type variables as they trigger \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb20723b4a36c165c579eded316f050adde2caaf830e99409560b3054d8e23be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): This is screaming for a common interface between \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1214}}}],"partialFingerprints":{"codehealthFindingId/v1":"65fdf376dbc76d550b75edc4055798f372f450ab94d6219a3c1f6bde360eea7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use this in [native.NativeBehavior] instead of calling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1285}}}],"partialFingerprints":{"codehealthFindingId/v1":"14f201b474055c633072833e237e6f3bcae38de381d56bb60142dfa81b6f0f49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Align semantics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1304}}}],"partialFingerprints":{"codehealthFindingId/v1":"beac7fa9201a6d228f58c7071c5bb5bc04f9f19452bca6cd11913c5f9bf968f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Align semantics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6895356ac3760261aa4be5902f2b2ab931bf159a86464f3ceb8cbed12558ec1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Narrow the set of lookups based on the depending \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1317}}}],"partialFingerprints":{"codehealthFindingId/v1":"efc044e18d77a4213a9389e21b5cf9a2725c31b3fb6ae04d5e1ad638eca5a07b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Narrow the set of lookups based on the depending \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1000}}}],"partialFingerprints":{"codehealthFindingId/v1":"9df4f0b74308c965aee5e67ead86148452ec3cd7fb23b9ed4174df46efe4e4a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Cache more results to avoid redundant lookups? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1319}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b55aee18ff7cb6f19742704c5de98f4cef7ecc431e78ed823b3f78bfd9541c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Cache more results to avoid redundant lookups? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1002}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5200072017fbf2385c58b9626b4ba8f9717411bba81eb009d88bd354973dbd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Cache this for later use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1360}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8879fb791ac88a7c6d99a0f2c5ac7c067e14140a743a3c9b036333c1cedb355"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Cache this for later use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1399}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c60ea201b8a8f5e5f37e21c0bc7054b718b286a1b9fc4e8c58a54c9b4e56a88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Cache this for later use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1430}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb457a22f838364cdfb0e32cb1cd57fa8cce95290c788632e09a57b60d0ed2e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove parameters that are not used in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1608}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d065c674de4ce53770b557a8c2714a7e4089375db9a6c2c010c9128709c8e35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this by only including live members in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1634}}}],"partialFingerprints":{"codehealthFindingId/v1":"26b6b4aabb19881a017fac3e2d7f0d0eff67dd9a6e3f5555d3c39771bc026114"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Limit field number usage to when we need to distinguish \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1931}}}],"partialFingerprints":{"codehealthFindingId/v1":"a544118a58453324eda9afd49d60a9cb5116114087a6a25f02989fde93dd2560"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(redemption): Merge this loop and the following. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":1939}}}],"partialFingerprints":{"codehealthFindingId/v1":"fedb3884b6f944b5c39a66f36bfb876c4c65e2371f38194b5e4f1e1068641dce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Simplify computed names. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2149}}}],"partialFingerprints":{"codehealthFindingId/v1":"23e9393c82e2fb3b5d5852eea8ce9b4c94281aa5a6aae017112c9dab9c9d7d08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Do something with abstracted mixin type names like \u0027^#U0\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2164}}}],"partialFingerprints":{"codehealthFindingId/v1":"28b0afa1fcf23d3b78d0094000b26e6d71eab0ec458d427adcace103df1e854c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Integrate this with ClassEnvImpl.addConstructorBody ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2300}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a6b5a314f3919c5b2cbe014f5d17b97ffe934b410598a8fc85617fbb851c518"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): What to use? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2339}}}],"partialFingerprints":{"codehealthFindingId/v1":"76682a31b0903bb34940761dab9bb0175d725f8d7ef6a6aa4f994f126d758b2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Implement \u0060==\u0060 specialized to the shape. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2386}}}],"partialFingerprints":{"codehealthFindingId/v1":"b540b8f1810ffe4c13f540537158125b80cd9855bb000b9e55d780a69d91700a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add ElementEnvironment.forEachDirectInstanceField or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map_impl.dart"},"region":{"startLine":2758}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9c208cbf89b3710e7c07f8a34c884680ece35a57cb6e3743edde2ff22f15e99"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve the type of the [invocation] once the new \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"723378777d88abfc1c42c36ddffe75386b7a78c11f0174408c0162f65b721297"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve the type of the [invocation] once the new \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"00923efa29accb6c3ae6e778cef3a406d24f8c6189f0e54ef21b9d444c29e489"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve the type of the [invocation] once the new \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfc0b3432ed654d68fc05f01ce309f5acec5290a19f02671be8dfe9c3d04c99d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,efortuna): Add more when needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map.dart"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7e83e9bc462208ce385c8b5a8faf03d1e721b64c7fb711393406c3bb3c5ee9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we split regular into method, field, etc.? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2c3094bfe6456a1d3c8baa06b5603daa7ea839d764105f8cc22016557e3b1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna, johnniwinther): Context is not a class, but is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/element_map.dart"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"d41370c3d5009a67d6f43140ae50cc40dbf493d3040f9291f1fd8a9c2433f3c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support shared [ScopeInfo]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"c83f80e32b2c84a7ee63705be30fd1588cbb1447064cbf789e51ac6e745105ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this check when constructor bodies a created \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f1a9d545e4aa9ab285b428bad0318e838d718c64156d15f284e0d55cde7bf7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Eventually capturedScopesMap[node] should always \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"88e6c20c97e5140073fd77b6f342838722ea808a965655f8ff8b8d9d2cdb7dc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Eventually capturedScopesMap[node] should always \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3b0b4efb82c9941350f93de39a370b0617807ce67594c4493bcf6f0cc113907"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should be able to track direct local \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"67e30fc62e74add025a1d101e1df5b67c2bf953d9d277c57b5ede2810b6237a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the static type of the expression. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"e793e6ad1c1b88afc05ef4a54e7e8605099270fc44d327be43189917a76cf1e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add unittest for the computed [ClosureClass]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd9674415915d7e5dd4377e7ab5e5b1b1bb45535cd7d8cbf6e63550dd921a96f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Don\u0027t implement JClass. This isn\u0027t actually a class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbd233cb387bb411decbfd0d5f83d3192babf4e7f98f5d68d34fda21539f045b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove these anomalies. Maybe by separating the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/closure.dart"},"region":{"startLine":1078}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f45fd18792daac172f70a648d513a4417bf48edc165f859f9bf15fd348304d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the need for this by adding a field-setter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/js_model/class_type_variable_access.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"948ee6352720ac542c9fe4fb359ffcba4502597b6e01c46006300f1d364c934a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be an error, not a crash. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"667fafa294bb4481c8972ed5d07556b1cb020ddab84a998d702dc6a39122f0c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34174): Disallow js-interop fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"4daf9048e03fb56a3941c45642d256e1084ec6084a9140c6a6c7bac22bb42f81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34174): Disallow js-interop fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"87da325e115862842d55870e45536d2d39ee07d352ee876a190eaf122bd56e1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34174): Disallow js-interop fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/jsinterop/declaration_test.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd758485adf4f528ef9423932dc2ac39fe7b815b2a36edc8b7091175c6176c42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54968): We should handle the lowering for object literal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"248d15e809fe1bce208073c6771c334be9f95af66ef653f06d0c5400a372ec2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54968): We should handle the lowering for object literal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"9553e2ce9353fdacd7d596ebe3b8169599c3c03448ef45a4bbe2647bc84ddfbd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54968): We should handle the lowering for object literal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4915}}}],"partialFingerprints":{"codehealthFindingId/v1":"50b4ae5e3bef196a2d1dde5feb2a30a9731627516d9675a0cd3c9f6305b89236"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Disallow non-external js-interop members. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eaad5135ee6e5f34e304e247fd1e1166873c84bced88f8f55523d5acb110a12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): It is unclear whether library can be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"1381b83e68caa2cd96cbcda6d2c941ef3afc7ccf5e48805577ba47d14ff72661"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report an error if the class is anonymous but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05d49676f090f2e25d850db192693ee02c46bcb9d0f2bb124cc656826aab443"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): It is unclear whether library can be implicitly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f32a79f33b60122a6681d4aa576f9e31e718963bbba1c6494ea9ba02dde8fd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): It is unclear whether library can be implicitly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"8513738e75db1831d413919b64063bf714199d4db405edfaf63b75dd5b703b6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The documentation states that explicit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c9c892c403926b3fd76f3ec1f42010ade0ce70a6eeee128e8aa4833ad2c10a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The documentation states that explicit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"4781cd87954019459810e3f6cd57b424803241cc8d8592ff6f094defe0b2339e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): It should probably be an error to have a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/native_basic_data.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"452890ecfb46e60aa4f713839946d91dd4226ce07975784893db65394f728365"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the compiler.elementEnvironment.getThisType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_strategy.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce9e1f0ee029c138d987665d429cbb3a77e3f49601e7a0444c5a380a2363852d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This is a hack. The annotation data is built while \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_strategy.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda20ddb8b62f356d922aef7953eedc25d3e1535184b0f782908bae79d589b68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Replace the above three statements with a single call to a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_strategy.dart"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b5906c5000cdaa972007a93344ebc3b424fcbed11e54bd8d182616f78b007e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Maybe split this into [onAssertType] and [onTestType]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad058d25c4b5b03252c170602dc8c7760a7c73cd605bec860b33256c05090992"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): NativeDataBuilder already has the native behavior \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d00e78e0c6bb6368f7ea342ecfe7b9c6947fd7304240c638cf893479e7a1da8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): NativeDataBuilder already has the native behavior \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"c655fd2e1f00821a9d7b455db01e531211169c10ecdafa24d4078ff0c0b8dd39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): NativeDataBuilder already has the native behavior \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3863cc7ea285c381e094ff07a7dff613476512d69fa82fe1d7ac23e28e0c9df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the [isConstant] and [isEmpty] property when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f5c9bca40a1387e5ffd3682bdd665ab0f7da492dd4e1a1f36435eb9531866f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the [isEmpty] property when factory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcd4427adb218e29f2d4fe8a28867286a2589a96aee759e545369cd704c170ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the [isEmpty] property when factory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7c3887c35dfd8b36ff7973d1045f9fe06711a008f2197b93a6198f41906fe3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Maybe rewrite \u0060node.target\u0060 to point to a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"63bf33202e7914d4b56fae7cb100b18ceca7ea8fe1402691bb77ef80cea6abff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Yet, alas, we need the dynamic use for now. Remove \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7b14f577404a819c10009dd58509fd42b1d14b2e0a5f48808e1391a4c5afee3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Track which arities are used in instantiation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/kernel_impact.dart"},"region":{"startLine":836}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b4ff1408f5acec827938649210a1fc303ca3823ea636f7d984d101dc6fd91a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): technically someone could provide dart2js with an input \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/front_end_adapter.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"da228046b9dd3feb48a0366bf157c21fc9ac6f3e31fd9a75784768486e5e1271"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid direct access to [imports]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/env.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"6770465ae478234db30c5a7563ec6ab19d22162a83127a4d105777d72aa9295c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Why isn\u0027t [imports] ensured to be non-null here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/env.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"79d97169243d1324ca1e4a59327161fd3481f06a5689acb498e93e5e8976b3a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(natebiggs): Align J- and K- names here. We only have J- entities now \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"e86661b4dbadef927fc5f0261ecd96c874fd287c8a76e77baa7801b272e8a8f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replace this by a \u0060getAppliedMixins\u0060 function that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d38201b4643a6a9f96e5b6f41bb8057e53619222f5846d4d81e00cdc316cb2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when type arguments are passed to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d68921fce6c79dc8890ad6891f174091f9cb9378224aab4bf4370d4d690bb93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when type arguments are passed to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4977}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba641ffaac94691c0ae6cb55b79a6b289596854f6664ee56c22b2bcfa43cd724"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when type arguments are passed to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5236}}}],"partialFingerprints":{"codehealthFindingId/v1":"3960f5d3aaf4b0d824fc45c148074b13d97e32f58b877ff4a3159fc6cb2647f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when type arguments are passed to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5309}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd8e0f40370b94d650f5acb2bcdea72f87f726bc3e98a117a65528134358171f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when type arguments are passed to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5345}}}],"partialFingerprints":{"codehealthFindingId/v1":"18984999d4846105dc0e342bd1062664c7ae2b8b192a5ea95a9879f73609a97a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when type arguments are passed to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7565}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a21f41d3677e55e41170e38a60409ead696bd0c49a896815b4f1fa08670faf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when type arguments are passed to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7603}}}],"partialFingerprints":{"codehealthFindingId/v1":"a67fb8a6bff6962a536bd4e4f85e32ba71baa2fdbfc46fcc6d054f179e431863"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Cache the computed function type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"a05c4b7a13116e026e42f87ae15eda395e01ed3a15d1e0b91268827f7446ab7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use this in [NativeBehavior] instead of calling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"78d8eb026063767aa5c68d99776ed5727fcbe30c47ad25f86a6ede4716b4fc1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Cache this for later use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aebcb6774fecea805e6d7cade4ea67940c52f911392023680c7783500750447"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Cache this for later use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa079e8b71c028dd274e3e00f13864063fc1c51cc28a88f20dba4efbe20eadf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Cache this for later use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"d486ef072f33bcca4345d6e4bf3f1267629d596827f322a76a1efeffb38ab2ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Cache this for later use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1716}}}],"partialFingerprints":{"codehealthFindingId/v1":"57aa2c433b605a248ac4710588bda0e6885e636033388d9ba66bd04738be863a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Cache this for later use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1734}}}],"partialFingerprints":{"codehealthFindingId/v1":"31fee5ca10861b915b0e3a86114a441cc19df73ec0b31685d88ea4922e2a2e6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Cache this for later use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1742}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c22888a259f1d1e4c775ae5a8aa8e868802c4ef1d1b356dba440f3187cc180e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): Check more strictly than just the class name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1371}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fa990b4dcb293d2e25eaba4dc9386dcd174d5c629ba015311b4a9f40098b4b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Convert \u0060node.location\u0060 to a [SourceSpan]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0eab8c30b8fea4f45bd1fcb39725da5ed5c76f2f2ad60debcc0e1ea910b2330"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Pull the static type context from the cached \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1584}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ac2859441e1e6a1e19d2bb66591e7bfe8c890658f6e1310e64d29165e3a5f81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dart2js-team): Rename isFromEnvironmentConstructor to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":1802}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebcb3461e2423021005e219dce940bec2645bd760e39981876d1376afc687855"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(redemption): Support includeParameterMetadata. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":2168}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ac88116f2c4deca2fc835a4eae1ae655ea8e70ca91012590f023696d9649941"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rileyporter): Move this check on non-native external usage to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":2405}}}],"partialFingerprints":{"codehealthFindingId/v1":"d19a851178623afca4997c0e777482b15651134abfdbeb786f17080bcb36419e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we change dart:html and friends to use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map_impl.dart"},"region":{"startLine":2411}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe710c4d67f51f61ba59f1a0ccff16a0526c367bd58d59cf7a366f46f35de09e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Merge the contents of element_map_impl.dart into this file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/element_map.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"855bb6bdd30e2deab695d0416913108034ce8ba8867b40685d80ae6613722496"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add a test that ensure that this library doesn\u0027t depend \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/dart2js_target.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"b256c4a218ba0d6ed7190e1820fa5b10cc630ce7c670ff83bf3ffcb3443ac46f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,sigmund): Remove this when js-interop handles getter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/dart2js_target.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b8775c98ec5b72090e23abe7fb167d2bd2157ab7385f15676f9e2de7ed17f2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,sigmund): Remove this when js-interop handles getter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/target.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad709a083c80795cb7616b9d23d2a6782255e22a9811676ddbf2aee7e1f7faa1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (rileyporter): Merge js_util optimizations with other lowerings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/dart2js_target.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"766bd47783e58171d6fdaa6716020dda6750fddc37bd0a2ec69facdc278d2636"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this \u0022extraRequiredLibraries\u0022 needs to be removed... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/dart2js_target.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9f3792cc5af5ceffa8233ce5acbfc5b11a7a72565bcda77a9d92bb9f38647ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Provide a \u0022referenceFrom\u0022 if we need to support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/global/clone_mixin_methods_with_super.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"550b0b7c8f1f7f538de83a477ccfaab5fa353c2a6b7df0f7a321f3c346a6537b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Provide a \u0022referenceFrom\u0022 if we need to support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/global/clone_mixin_methods_with_super.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"502a114e258ac075fdceb5e0889caf0aaf0529d359c435e375283fbb42a53c27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We can accept more complex closures but, with diminishing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/modular/list_factory_specializer.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c23643152b6668b4f97745482f4469a885725f3a5949892b128f370a19e746"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Currently this inliner accepts only arrow functions (a single \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/modular/list_factory_specializer.dart"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f3c5e5f806b4e7bc85c5accd8c4c6fabcfda574cda5779fdd14d43ae9e3b431"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Indicate that this indexed setter is safe. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/modular/list_factory_specializer.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"226c1ae3122c83a7a48997ca49d0b79aa87cd2e620f694f429a2e12840cc86ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish,srujzs,johnniwinther): Also mark the getter/setter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/kernel/transformations/modular/late_lowering.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"c787b9ba2c91d50b4e0288136b1c3ca46f5feea5c957f674b2e6f0b194421c56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Better validation of the constant. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/resolver.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"80a4c23296d0270bb485246f76c027c697880c7e095148a13111ca02b5a57638"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Better validation of the constant. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":972}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f9bb3d61af3f3dab739a09aaca4070bdf0dd82c44c3d7e7d4c9840ea1ff803e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Incorporate a mayThrow flag in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/js.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"efcb191ad1fbcfe172064cade6bfdae5a794ce755df09fe0d2e7958e48abb1e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Can we make \u0022#.p = #\u0022 be null(1)? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/js.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"3910f1df1ec0a38cc12f4b1f0ef2ca4d7ebbeea2200104cd558889196c4dce39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): \u0060new Array(x)\u0060 where \u0060x\u0060 is a small number. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/js.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"48b85a653508ed1bac8817acd66f96dd42e869007de97eb8d87f47885703c9fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve spec string precision to handle type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/enqueue.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"3841afb6b8dd05397c81a7ac5188860a72b698ded2cd0f8dbc55e685438328d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,sra): Find and replace uses of \u0060List\u0060 with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/enqueue.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"b24bc1cf99967ede121b15d96864a73025785ad96f872c9a3c94fead975dd03e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Annotate exception classes in dart:html. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/enqueue.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"f816f53d11ddd224f884e2d94ee2d98651d0942c68d4824dbbb3bd790e2bf9e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: this code is a bit of a hack to add all the resolved classes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/enqueue.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"c65fe6c5a16056eac7d5dabe5fa9502f0f8228be245dd41e2310fa71bd78aadf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Make NativeBehavior immutable so PURE and PURE_ALLOCATION can be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff85f2db631daf0bab4a6d46fbf465a981ede9d0a460d92fc46cff48a2d80e3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(25544): Have a distinct effect instead of using static properties to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"17102839bee6fe8c1f14bde41427faa081a89460b963590e739fc442bdb3eb67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(25544): Have a distinct effect instead of using static properties to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"96fd488fcd4eb03a9a8b9a682f8ba7d2e0ea6d7bc6041a806ed3d4954644986e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Simplify [throwBehavior] using [sideEffects]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6ed2ab01773db247adbef308339faf8e86b13a59361f89b1b2106b0763fb73d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Allow the use site to override these defaults. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"afd1eebeb32bcbe3df627ad30aa6f4734ed970596503da8d2297870c2c9f3409"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Parse type parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"27b7b189949915d4789c5a626134f34561d127d0803d812e75e654ff99df426c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid free variables in types. If the type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":745}}}],"partialFingerprints":{"codehealthFindingId/v1":"2121f7b0c36386b1ef82359f42c874e3a2c14a3afe804429334280c99610749e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We can probably assume DOM getters are idempotent. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"47078df070634948e34947cda6da99cb7ee2a0f6ed0d0be7c42ffb233d45d7c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add an annotation that includes other attributes, for example, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"7289996ffd8e3fa3dde0633c969ad100feb213c068f0c6700c8887b087afdef0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund,sra): consider doing something better for numeric types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"37d24c439648078e02be57170a2002e8a3c76dcf69a52af605294c6e50b76eb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund,sra): consider doing something better for numeric types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/native/behavior.dart"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a3d6b79b8e085bf15185e744910f964581ab90a9969c4034403ba8110d8a5aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when #34942 is fixed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/phase/load_kernel.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"e16401a16312dcda04d14e9400b915d1dd3e2f24f8e5762005eef85546996f29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when #34942 is fixed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/phase/load_kernel.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"b56894a42950cefc8a9f2a3e2e450e750fa1f62be40c5d5282501ad22daaa920"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Change how we detect this case so it is less \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/phase/load_kernel.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"768d67ff753005f338d33e28f6e6099319ed2a1a6a58ff7b32423629388e27fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): move this so that we use the same error template \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/phase/load_kernel.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b94da68d3580e6eed4564fa87a80e37b87a5d70cba39b7e8d14b88968d4614"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add \u0060ResolutionWorldBuilder.registerConstructorUse\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/resolution/enqueuer.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e74a55613b5ee0245c471ee5f6c300d08afc662b939b221cf85900eb426c8de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(36983): This code is extracted because there appeared to be a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/task.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"286daaf7e3da35157c77b35708b1f4303abbd29d1515da9d96008e8850eb3edc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need to serialize non-deferred imports? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/sink.dart"},"region":{"startLine":1103}}}],"partialFingerprints":{"codehealthFindingId/v1":"041bd58f9f330cc367fad2d2dd4c177674bd5229c7bea5e4c0b6f3b55c32ca94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support tags in binary serialization? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/binary_sink.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a19b77919165fd72b8f28aea0539af936a5cb9a5204b586227f4a131d1c94d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support tags in binary serialization? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/serialization/binary_sink.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d7c21e0390462c6197fb3f884e7d1bba7dfa092c9839837674e23d998820107"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): Maybe find a way of reusing the hash code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/value_set.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"87f9306c2863707ea81a2f333d8a0f47e5a1950373c9c9e1d360cba674042866"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Find a cleaner way to pass around ranges. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"a602b181c4ebaf2b5be884a930aad7a99f24d8a5af8f08622542135fd21d4d02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Handle complex conditions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/value_range_analyzer.dart"},"region":{"startLine":1263}}}],"partialFingerprints":{"codehealthFindingId/v1":"17145b67f8f3e08ed7005762bfe7c214f00d53d4ee6fc7c24abe0fcb6fef49b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): this is, of course, not true for back-branches. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/validate.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"951d88a7e70a27d177e89f703d1becf826c11fa2b184ed99f7518675c60a4af1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): there is currently no way to sort HInstructions before \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/validate.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3bda9f1232b87cc32703616f936b6d3a8d5e593a9af7b6f1ea1f9c31ea428f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The InvokeDynamicSpecializer should be consulted for better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/types_propagation.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f7b00d056007ed7977a1015d9e7e342fb620657d6d8003e79ee35f7d5e72f57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Can narrow to non-negative type for integers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/types_propagation.dart"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"989831242a87dcd95335ac1bf235f80b3a778f6e65f9c316d4a1ca6410a8a290"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Some number operations don\u0027t have a builtin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/types_propagation.dart"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3dd6674c647880a3266a872e4d85c7c70aacde786dc6905501912a3a7abc2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This operation on \u0060registry\u0060 may be inconsistent. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/type_builder.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c2d0b76515dbe5ea458d9d66406d4e289fef955e45bd20274a63081dbe919f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Locate type environment. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/type_builder.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"e938284ea2192f2b9f58859b4bc5e53a51892d1556948a34edc1d1cb2cc44d30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): HInstanceEnvironment should probably take an interceptor to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/type_builder.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3b0c86d48fdb04510d33ce7b9d9999fa132ef2500607c3a0e6641386e20885a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Visit parameters in source-order. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/type_builder.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"12b042cd0ff42c196d8371fbf2d065a300d41c9eaca04004b63f0819207f28cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // via \u0027bind\u0027. i.e. generate \u0060env1._eval(\u0022@\u003C0\u003E\u0022)._bind(env2)\u0060 TODO(sra): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/type_builder.dart"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e8ec65c3d96b7beacbf745a041529972316835d7c43d4e457af473b65a298a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add a \u0027Rti._bind1\u0027 method to shorten and accelerate this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/type_builder.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c32df3e6093575506880d1f4d019a0629134ff95e37150467296188d5898f78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Check what the target of this continue statement actually \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/switch_continue_analysis.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"60366476cf2cbd392fa4fc8caeee756eb970e376f28e6c23e52be27c6adb4037"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): If we decide to do inlining before finishing constructing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/string_builder.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"d36461a2b5b3f0edbb7fd3d114068e331c268dc6f8b151524a5e3caed36fa18e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We could also return an empty list if the generator takes no \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/ssa.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aa86e387c251248678637e7530ad45406a043e1f78a36c4f6ac19322e8e8396"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Generate these other fragments via SSA, then this phase \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f2cf3afaec62de8d8d33bd911504b5f9883c33280fe93ee73b80b4c4f3c8508"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// length indexables (see TODO) as not fixed length. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"c76fcd894f19825e89815112b1a07180c51a6c5f8730430b92433232f5d55a10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Match other signs of unreachability, e.g. a call to a method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"689b81f9af22c5837cd5a934a21d6d89af8d337f6a446991fc1dab6661eaada3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider other simple diamonds, e.g. with the addition of a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"e65f01a1a49d01953c68b7527ee74653e7ce2c375ae801d88000bc742567cccb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): consider supporting other values (short strings?) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"13397564cc277945d0f3f01881aa375333e4c956804ea7c783113ddf348c9d25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Do this via [node.specializer]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4eec19ae9f8957b839823a9feb6ab5afdba7c35b88904923e503c1628ad4ed6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): There is a strong dependency between codegen \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"e13433eb9b5a415c4f7040fd802050f3cd3bfb72521321cbea08788c66a5c1d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Fix comment - SsaCheckInserter is deleted. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ce28ef0fdec4b73a59e791e41a6b9d3cf368f38aa64ec8e42d9f37a76c3aa3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Build this knowledge into alias analysis. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1022}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca00870e2e092add76c7b2c127eedbba82ff30933aca4206225a3d8acf7d9fe4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Also fold if it\u0027s a getter or variable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cbf47f7f100871ae86c1626ce1c6b337270658371d554f3ff29344cf1a6c477"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): If the method has optional parameters, we should pass \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1056}}}],"partialFingerprints":{"codehealthFindingId/v1":"262185d2d33fc5335df1824a5b376ecba1e675ea0bdae4b212ded6139afcac10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): [native.BehaviorBuilder.buildMethodBehavior] should do this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf388fdf9885e1425cf9bb4c91d6e0647738e0cb240ae34f49a1baa364fd6b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Refactor this code so that we can decide to inline the method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1272}}}],"partialFingerprints":{"codehealthFindingId/v1":"e89b2a0824dde2c50951b931d503f5c794db2a23749fb084d3402000f6493d35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): JS-interop *instance* methods don\u0027t check their arguments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1280}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d0900f740e6188208b70f1345de5244e1a5966caa788bfa213b242896a8cf84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The above is probably no longer true. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1438}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed6a7611608e9f023764f74a135adfd45969c83736234b536b2c1eb9824eec06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The ConstantValue has the index value, so we can still reduce \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1549}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e66f5737de12cc1dd4972b1dde141123eac2402d716e3b99ba43e2d896f21ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/26775): dart2js has a bug"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1840}}}],"partialFingerprints":{"codehealthFindingId/v1":"807d30e2ba60c95d3f3d62776382452b955c87c7cbf5aab1e35ee3097f852d4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): How do we keep this working if we lower/inline the receiver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1911}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2dc14bb4a54eb42f121f81e7ab8059e1048daf98e566ba0110f9bc71463581e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra). HGetLength may have a better type than [lengthInput] as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":1921}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e344f2b9e71e1acaa46300d8cc674e4bfa87df1cda680ba96634f1dcb75aecc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider properties of the target set. If all potential \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2035}}}],"partialFingerprints":{"codehealthFindingId/v1":"76925c0cae0468185bc9c1cea622dd75b27cae45d31549a22125038df0d57fc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the potentially more precise type of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2115}}}],"partialFingerprints":{"codehealthFindingId/v1":"83d0ad724244cae555a8b043021eb88b9e492707884eff503c460e63071d898a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Implement inlining of setters with checks for new rti. The \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2194}}}],"partialFingerprints":{"codehealthFindingId/v1":"062080d7bfae08cc71c3761770951d90c93c53b352a263ad8f3a7c5fb386f4a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Handle adding optional arguments default values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2226}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b618e6c2e7e2891ac4fd1ad8947fb849ea22fb5f6941749ec8493cac764a4f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): [element] could be a native or js-interop method, in which \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2310}}}],"partialFingerprints":{"codehealthFindingId/v1":"143ddc8ef84bb34e72677f35f4736799892fc964e6b8ff78bc55ad6cdc600351"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Implement a more general algorithm - many methods don\u0027t use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2346}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac8fb36447a7b7da9e63132711705832d5b5cfd1b69c60ed1f11c0c68296cfbe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(18103): We should be able to remove this workaround when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2423}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd00b4e68183d378ac52f1e4fe41af00ae5c7c3c0e23e476d484cb808790c8cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It seems unlikely that all dart2js host implementations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2435}}}],"partialFingerprints":{"codehealthFindingId/v1":"7121bf77f0bd1753856eeaa49615cfcc2e9a58af711bfd5270b639a85ab75ad7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra):  LoadType(T).bind(E).eval(...1...) --\u003E E.eval(...0...) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2540}}}],"partialFingerprints":{"codehealthFindingId/v1":"a13cb21a16fce66fae88ba0f57475791f5b1ebafb553d182621c88415a10a7b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Correctly constant fold \u0060null as T\u0060 (also in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2625}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd73706e4922d1123e629c2c422c9b9c1ad1bea3ca1bd8fb3893a69da4b77953"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Prune now-unneeded is-tests from the metadata. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2721}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bcc758687dc0530477170db55119c7908f519f9cc681e4dd009a65fb5269a6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It would be cleaner to track on HLoadType, HTypeEval, etc \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2753}}}],"partialFingerprints":{"codehealthFindingId/v1":"dad5e15e75d0b86297ea212da9a1ede5c8688e1ffced1c8984ccd2589fd2a0b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): What is the \u0027instantiated type\u0027 we should be registering as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2788}}}],"partialFingerprints":{"codehealthFindingId/v1":"5911c6ff7fbd1b2c73838e24ec12f1b9ae29cf4be5f3c68c894320995ec6c5e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): A more advanced version of this would be to see if the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2816}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf7ccdf34eb94dfde3875c34cea531dc8eefd9d200f9b86cb1c0ab92e6fc48da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We don\u0027t rewrite (a \u0026 c1) \u0026 b --\u003E (a \u0026 b) \u0026 c1. I suspect \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2840}}}],"partialFingerprints":{"codehealthFindingId/v1":"c04421d57ea29e3ce813e1fe548a890f3cf901c00ee7b69d0d3d2fe217d4e5c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Restart simplification at \u0027or1\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2890}}}],"partialFingerprints":{"codehealthFindingId/v1":"575c48c3ff0e250671e5bd8f798f8e248b3e05576350024b4f53f692d45a9a0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2915}}}],"partialFingerprints":{"codehealthFindingId/v1":"171b82c23575662cc9339c3f2942466d475fa51ef8b2f9f29adbfecc14e444aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"43dc3b647d3058b6d478db6537dcca9bfce0e764fb664f59fbd979aa70c995c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use a common definition of primitive operations in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2930}}}],"partialFingerprints":{"codehealthFindingId/v1":"46ae82f8953da0ea92ca22ebcb0226abd9b22416309fa614575f49cdfb0e1a99"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Should this be postponed to after GVN? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2955}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c14e28804fa50e347796c9daa473859a781f3d422bc645b4361ff42e45755c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The shift type should be available from the abstract \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":2968}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9aef1cbf3f58facd264a6f894243196b90675547e38f29a49df5d5520d5a82d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Implement removal on basis of type, an \u0027isRedundant\u0027 check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3032}}}],"partialFingerprints":{"codehealthFindingId/v1":"40f8e85f9475a828df5a6492ca9327b125584550d8303bddc57ee31b38f7c4c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If a stronger check dominates a weaker check (e.g. check \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3046}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8e98d15a2a3b151ec49d1c03ca8f9d5398c82631ed90e0e32c5f73c3e3a255"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If the input is directly in the only live predecessor, it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3300}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fadceba26411eff4a60efaab31ea824cdf8b983ffbfb378d7e5cf36a700eb7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Implement version of this test that works for a subgraph of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3331}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d939b63b47dbd9f4214a417c51371841a02acd3ab2273ea701e4ad2f1a55606"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/29475): Remove empty blocks so that recognizing"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3365}}}],"partialFingerprints":{"codehealthFindingId/v1":"71f461c3c74d57deed5d0372d71d1253ea647e6cb490604845c513f3d23a93f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29475): Delete dead blocks instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":3454}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a70de7b808ce9f30bad574f710c256980751b5494d07f9c824e097bef10da6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): There are some non-gvn-able instructions that we could move, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4025}}}],"partialFingerprints":{"codehealthFindingId/v1":"84b7736d190ab694e336942adf775dfbdd6f4c5e6dd6b5c65f5e622dac62d7da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We could move throwing instructions provided we keep the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4047}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd80c95088a64eb5f635001cc61fb3e58c35845824df9844c38c83221bf6d60b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We could move trees of instructions provided we move the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4058}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfb4271e2b59ab020a5cd6e669c2719bf53610ff09d69b7a47423ed7dab916c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Also strengthen uses for when the condition is precise and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4143}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab28c95fcfeef450f984a7ad89ba63e782a7c19773076f5d89bec0af2eea634"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Also strengthen uses for when the condition is precise and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4158}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee5f3afb516a1f8db29ce811e73c15cd4fb740a0d62b9526db3348ca512ca9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Can we avoid calling HGraph.addConstant? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4612}}}],"partialFingerprints":{"codehealthFindingId/v1":"2acb4cc96206f131e16a9a1828ab31f009ecbd99522c9cbd40128db95aeca97a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We can measure this depth by looking at load chains. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4640}}}],"partialFingerprints":{"codehealthFindingId/v1":"a02611f163c13470380f154eb7fc2a1836fcf875083c04cac981ad2e24b38efa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Handle library functions that we know do not modify or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4653}}}],"partialFingerprints":{"codehealthFindingId/v1":"5415d11bd20ecc76476d51fcbe5573f5a9592c21d340eb0b12d8bbbff931782a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Set initial keyed values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4714}}}],"partialFingerprints":{"codehealthFindingId/v1":"85cbe7b06a5c567dd835cff5aec6c17321e3354956bc9c06700087aa8b5c6fb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Set initial length. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4715}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b6c80754046569dca9777d8c7a167baefc17a6b4a5240b9829260c027c36ec6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(25544): Split length effects from other effects and model lengths \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4795}}}],"partialFingerprints":{"codehealthFindingId/v1":"0466ed821138b9ca464cce64bb264f316d2df9dd75afb177d36c5079c1eedb6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): A more precise accounting of the effects in the try region \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4868}}}],"partialFingerprints":{"codehealthFindingId/v1":"2be8bf90ecc0d4bb0dd623992fc52ebef22ef7bb2d8e5c8e78d8a3dc7b7e5f0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(14955): Remove this restriction? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4897}}}],"partialFingerprints":{"codehealthFindingId/v1":"da172dc3bff2de6c78fa285bde7b21e5fc071972b86a0b2142b06ca35d42a10a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(14955): Remove this restriction? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4923}}}],"partialFingerprints":{"codehealthFindingId/v1":"8be7cb5aa3ea1edcb757f48fb0b49c98e32e6d8217c1b7056f28db5134417c2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Be more precise about removing only instance or static \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":4954}}}],"partialFingerprints":{"codehealthFindingId/v1":"2412e0dc0ff1ddad1162d2bc45b972de75e99e9d448a2e1cc4274344889a06ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Figure out a better way ensure \u0027nice\u0027 loop code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":5058}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b2eb813053d14b63434b1b97ab4c13a4018cc82779592ad217c136b456b66cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): The phi would not be so bad if it did not confuse bounds \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":5059}}}],"partialFingerprints":{"codehealthFindingId/v1":"053aa47747e3e86dbf670f20152a8c6681d240078ccf0f929f6b831b24462025"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(25437): We could add a phi if we undid the harmful cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":5061}}}],"partialFingerprints":{"codehealthFindingId/v1":"30cc8d3af2c3ce69cd8cff04e24cd732947647df9b709b78206ef08b59bed9b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We should do a proper dataflow to find the maximal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/optimize.dart"},"region":{"startLine":5110}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b85f9274abe58fb2c6ed52a643a279ca19644d81b6d0dd1fc93c4e3fc36781"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund,sra): consider not storing this explicitly here (e.g. maybe \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"7afe0986e2ce4b1f9ef8588e8ac1c83b743cbc376f8e5adc537127e4423edf67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support source information per constant reference. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"332a432eb96b7100ee860ed56697221bd34ddf8214c8785ec25060feec245742"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider whether to reduce instruction size by collecting all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1181}}}],"partialFingerprints":{"codehealthFindingId/v1":"87a09cb57e0a71f67b2616af376983701c1a3e953465abf007ca7e9c0d82f1ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It would be easier to use a mostly-shared Map-like structure that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":1542}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f5062a42bc84653ff1a4a70a3250c2956e7ed8a4f03daeb887c7977bb861747"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Test against LegacyJavaScriptObject explicitly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2071}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cfb3df632a57af3d32ab5f1fa8dc92c02e3980f460218f8f64a110fa941e18c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Ensure that regular closures are not conflated with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2072}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b45cc78919174917322d0ff677547847bf43911485ac0274e9bf7d77c8729dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The result type for a setter should be \u0027void\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":2215}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba192b15307465786cf552f761a223d01c7f22ec1debeae38ec137be7252b89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The builder knows that most parameters are not variables to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3325}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8ce6f95dceec23a09c9bc11530cc5695face8e6779c8a557f98b8eece937137"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change this to a \u0022HStaticLoad\u0022 of a field when we use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3557}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd350bd38f522ffcec7768ed5be19fd8675e3dbd866842e8e70c9d08cea877e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(4931): The first access has side-effects, but we afterwards we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3674}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f31ca4b37cf1292608cc4ca5f2b6a78b3a907e79942a80ff5864d5c3046fc3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(4931): We should be able to GVN some lazy static loads. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3686}}}],"partialFingerprints":{"codehealthFindingId/v1":"00632316a1e9ce805f06f7744ec1cb395213e95000d84f5f3f5b66d202a6b403"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(27272): Make HIndex dependent on positions of eliminated bounds \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3748}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a33e1f050219c87f321e971797ea37a9bce62b28fb2cdbd75c5f9139315027"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(27272): Make HIndex dependent on eliminated bounds checks. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3788}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b89c6fcf5ea601093e7264a4890b62a9938fe680aaddc0f0aa41d06f15f2ee0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(27272): Make HCharCodeAt dependent on positions of eliminated bounds \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":3813}}}],"partialFingerprints":{"codehealthFindingId/v1":"e014dd4160c86e723937ae12221661c454957a796e6e9b82d1667527c8387b2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39287): Let the abstract value domain fully handle this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":4666}}}],"partialFingerprints":{"codehealthFindingId/v1":"c80142c0555fc40f6a1b0e69e0c5563978a834ed166147829bad6dafc1c210ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Depending on the checked flags, the output is fixed-length or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/nodes.dart"},"region":{"startLine":5016}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7d081aa32f6bc3ea90358a364a1070fde04d1c420a52b94c4e69950d3667d1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): Since kernel simplifies loop breaks and continues, we should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/loop_handler.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd14b652551de78e1ba526baded61ef07e04d4eeea681214447e5debf54e713"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): This should be useful but causes some crashes. Figure out why: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"c40eb1406c31ffd7b2dbc104cc115ff32a23b5533cbeebe2d242123284c2cfac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge this and the following if statement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"e013dddcc9fc51f834ad64fdac14396c497e6f6f4d77442d349012cb548db143"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add a better encoding for \u0060Array.pop\u0060, perhaps a HInstruction. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"6640b007835cc50d3404f604a8631b435dbf1c3a84bfe3e25181f8b815c1584c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We could avoid problems with -0.0 if we generate x % y as (x \u002B \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":892}}}],"partialFingerprints":{"codehealthFindingId/v1":"898b5d5d641ef4b81a7b5bc8c0452947bc936b4ce43aa7bfc91ddf13a859ba86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We could replace $mod with HRemainder when we don\u0027t care about \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"df896db618693de3d7e461fb4a0e43636fa1977347530b5b666e9c071a19ce1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Integrate with the bit-width analysis in codegen.dart. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"5277d4d83011e9fc834797a13a78a65a96cecd92b62fdd7349d2493175a866ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We should use the value range analysis. Currently, ranges \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/invoke_dynamic_specializers.dart"},"region":{"startLine":1194}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8e9531ab1ac00ec7a7c9c965189aa00ee49e50e5bcef03dfc525af9250a0cbd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Move this per-call code to visitInterceptor. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_simplifier.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"c344fedebb02e48049d48f99c009b66278304fe50d46785670481fae4bbeec25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Key DOM classes like Node, Element and Event are not leaf \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_simplifier.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"35cd3a044edf867d15954124fa9bfa4565277a1633698da75675aa6ffbbcf857"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Take into account the receiver type at each call.  e.g: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_simplifier.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"a800494575bde294ece23b36cc3f5cfdf1369a84bc311a877c41c4de9ead4a53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Are there other paired uses of the receiver and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_simplifier.dart"},"region":{"startLine":434}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8a5271bfa8eebad04644673255d37269c997615170023f691a032422db324c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(15933): Make automatically generated property extraction closures \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_finalizer.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"49063ab6563e31fe70112737f870268293254004f3ae8fd3c860384b8953bd76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(15933): Make automatically generated property extraction closures \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_finalizer.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e083986800c62b35b9cbd964f6d9befeffdf0700a28b6dd2ded0d6b3cecf8ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Should this be an assert? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/interceptor_finalizer.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"441785ea314eeecac7657d25c9aab4db468518040d7faa714e5d76a276976138"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(36841): Implement for instance method calls. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"4001c4105468d17fe1987cd983b6514c6873120d1f57006ba901f5f63640c78c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Recognize other usable faulting patterns: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"32752016f93b789c522f2591840e823c286fa04bdd0f9f559d25182ce1f62ad4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider making the conversion an explicit new HToUint32 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":266}}}],"partialFingerprints":{"codehealthFindingId/v1":"b30ae54a872e4212f1837f144809de9963e9fee1ca4a83990486053d7c3249a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): There might be a unused name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"3122b1979090820ef7f33c5bfa93486b70a9396996035e97a394bf69741842da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Better analysis to permit phis that are part of a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":746}}}],"partialFingerprints":{"codehealthFindingId/v1":"deefc5781b62e7a2e27b3a3302c7760812781dcf93afac3102500b2f9bb09a19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Chains with one remaining potential use have the potential \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":767}}}],"partialFingerprints":{"codehealthFindingId/v1":"184df4b4f80542e0e7bed58fbc84764540bd64431e0bd404fc12d95e2155f1bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We can tolerate a few non-throwing loads between setter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"147b641f3f4f30f6bded14d41bbe8f53009b7f4eda071a78f099aedce5367b90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48243): If instruction merging was smarter about effects and was \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"b36fd69c89602f4c06c956c5fcaa1a810a11c5d245fe66c98cbba78be525c1a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): we could generate a comma separated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1269}}}],"partialFingerprints":{"codehealthFindingId/v1":"35109a1cf2cb3fb0372ac79ffdc805ad9f007cdfcb4e0f901568d63a22eab0b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The sourceInformation should really be from the function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1633}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca845e896e56d1ba7b4b4547d9c852c05ece79065fd8addf796a6bbea7dfbcb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If there are multiple values that can potentially be cached, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1659}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad67f7a111454956d92ccb297f78258f7ae895541d4d9157b2390f34eabb64ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Determine if other uses result in faster JavaScript code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1704}}}],"partialFingerprints":{"codehealthFindingId/v1":"98f873d294e8d8e0f1fedd4e7e803463e030d9980ef36e2f566506fd02088e07"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Determine if other uses result in faster JavaScript code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1733}}}],"partialFingerprints":{"codehealthFindingId/v1":"728c5c59fc3fdba0c9f49a85574d855e0a74f9cd1671293845de1dda5a5acea1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Determine if other uses result in faster JavaScript code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1766}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b5979da00783261aea9c761ea70635cb05bd00635377ed533f347e587be9f3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Check if a.x=\u0022s\u0022 can avoid or specialize a write barrier. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen_helpers.dart"},"region":{"startLine":1761}}}],"partialFingerprints":{"codehealthFindingId/v1":"c55e475be12afb55f887b349a784d100812b24b77b2a9421180399757023cda3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It would be cleaner if the [js.Block] could be unmodifiable but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5f087e264bc8c94e6194018606c698a0c02cf2fcd45a13983ce2d70416f3d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Introduce a DeferredVariableUse to handle this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f901a9b8b8314338ad30dcc0b8ced1cefca7089d5e876bd018044f99124143d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We should ensure that this invariant holds: \u0022every \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":841}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f812248047fefd6c11271a3cb944032c7a4a90768c66747d54680e6251e4f18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Remove this extra labeling when handling all loops \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"b33d6c0c14fa4f15b8efdf2d31fc9386181baa24ac299e920d1be18bba08f714"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Consider recording whether the target is in fact \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1304}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a86b4cd6ce8fd32ef762ad8fce53db2813a1e5da21ded4a852e373c1d77e807"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(karlklose): Enable this assertion again when type propagation is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1703}}}],"partialFingerprints":{"codehealthFindingId/v1":"d552d3ef966225620c55cfdef72b2a508285049df14b801ed3a34960fc96b9cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): should this really be the breakLabelName? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddbde0ae0d40f67b3c5ffccc204062f4fefb3b47c43e192c3fa9bfa81f0d5695"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We might be able to do better with reshaping the CFG. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":1944}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee2f71c80bfb404ba57dfbbf1838c5bc2240f4a930c885928787865062c700a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): The namer should return the appropriate backend name here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2044}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bfbf86632b406b3ed077d107890f0ecc8876ea1ea77c4d31c96288058dbde3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Refactor HInvokeGeneratorBody so that \u0060node.element\u0060 has this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2096}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1bf26563b2acf60b87cad72ffaeb0f95ac88b02b4430624ba4dc9cd174c7e52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when kernel adds an \u0060isFunctionCall\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2186}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca8e75a9d5964bd2c8da40c83bc8e87c1d2ef6dd0695eeca8d77ad6dac3730e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): If we have a typed selector for the call, we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2192}}}],"partialFingerprints":{"codehealthFindingId/v1":"a18f016a1f4d351ec358e195a725a143cee41374263bc1381258b197ae81d73a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): If we have a typed selector for the call, we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2317}}}],"partialFingerprints":{"codehealthFindingId/v1":"af28b9e0d818d2dd3c2659e773d91b3a6fc3da0edd265222ad48fa0787bb2ac1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Make node.element have this type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2211}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fa660191ab6795fe421a724bb656c290c2c8abd483f74ea471990233e12970a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48820): Refactor HInvokeStatic so that the element has static type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2325}}}],"partialFingerprints":{"codehealthFindingId/v1":"7134c6edff7799234aa58d99fa90dc4a30b5a69f3ea110eb7686e102f78a7fe2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We can lower these in the simplifier. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":2725}}}],"partialFingerprints":{"codehealthFindingId/v1":"df55ae969f2d74bc55347a3060352c015d2b19e0cdf39b0180df15ec82518ee9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Tell world.nativeEnqueuer about the types created here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":3032}}}],"partialFingerprints":{"codehealthFindingId/v1":"c874d0ae84864714fc3ca5187b424480d964214d948915c1f9f937852b1e3f43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support source information on synthetic constants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":3137}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe8747e66eae28e285212f8369f06e7ba8bbba6d6923f957664b6ba5cee98a42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Separate the two checks of the bounds check, so, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":3372}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8672a36f3eb536441eb071d1b2f83e4b5bc5b7af5922360e73be71d5539ce6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Better analysis of possible NaN input. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":3400}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b6673efef9692a318318cd92769306b91abfd28ee2e247e5f08c63335974d6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use some form of dataflow. Starting from a small number you \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":3480}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa484e48219e56dcaccfb6b6e5cbc5a0dcd93929db010afa65ac912ec316ea4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Static tear-offs should be constants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":3541}}}],"partialFingerprints":{"codehealthFindingId/v1":"779961cd88cb2c6ec92707f39553610c24e7fb6d8e9b27a18607ad8402ae515b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(35996): Pick a shorter field. The instruction has a selector and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":3795}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf53dde40cceb28b1ca1b49ba6b0b8ec2ff0a6cf7794158b0de8bcd878163139"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Currently the only convenient query is [getExactClass]. We \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":4101}}}],"partialFingerprints":{"codehealthFindingId/v1":"e263c0717737cf9dff2e79c3b468581def4561a4cb728cd75d55ae5fa5e78fe2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Store the context class on the HInstanceEnvironment. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/codegen.dart"},"region":{"startLine":4104}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fe317171207088075a204ebfb1791d1aa91d166bd47838b6b63bcdb9964737b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge this with [KernelInliningState]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1fab76e237d99a44f1e0b9459a04d87377e49f70a369b77b279860f3acf9c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(karlklose): consider removing this and keeping the (substituted) types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee330dea534b919b97f4384c95d191fd0a802f1d1e83970f7f80a295f5bc01b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Substitute the type by the this type and type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"26d17b137b1eb286bb770d552e73f3d87762e64ad2afde65a59eab1f37333103"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Substitute the type by the this type and type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"396987eb1e607ebde6ecf5be14957e084ddb9b8f2f1b64846491c9618f171b5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Substitute the type by the this type and type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"76b0450d855666a53ea4b2a9f1c94615635b79a3b89071d3e834426f58afd122"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): no reason to do this here... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcf139f1db66862cbded4df973d9e0c301d96e35bcaf32b54de454adf0e4aa98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We could be more precise if stubs and \u0060Function.apply\u0060 data \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"13d45ebff4376546307f7620f8ffc792d572d1a1e425c85f0f438e15c793bfbe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Pass source information to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"689ecb6dc147c019f9aed9498a39255eb185e8d8e0ee2bb71ced962c0f902b49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The source information should indicate the field and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e14bd1c010fc37ec737e3bf3a7cddddc5db832aaa66ce9740c1d6940ba9fd77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(13836): Fix inlining. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"c742e5e86bb20438a275d857ed439f3c0c84c1fdfe153da24787e690aa059218"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It would be sufficient to know the context was a field \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1131}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a091c05cb073a30ad51fc3e5c059c42cd8993e1784d3c621cc6e8c84b6fbf32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Apply inferred type information. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1198}}}],"partialFingerprints":{"codehealthFindingId/v1":"c60e55424ab39713748f0d629439d89e2a598fcef976ebb3438320f1ec74b57f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Apply inferred type information. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4818}}}],"partialFingerprints":{"codehealthFindingId/v1":"691bf7781aea0b5190967d02ca1434c6c79d2e42eeba8bb5ea2494ccd1dd2ea7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): Attribute all synthetic records code to the nearest class \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1623}}}],"partialFingerprints":{"codehealthFindingId/v1":"1efe63f3e783885833d26975d2cc7af1454ae9f989809f14d353d128c913ede5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51310): Split [_openFunction] into parts which can be used for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1635}}}],"partialFingerprints":{"codehealthFindingId/v1":"47e2ddb65e0b0beecf0bd98b78cb7701cfd22b3fa66dbb8620bba8f7bab75f38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Figure out how to keep comment anchored without effects. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1746}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a5a87aae60c01747ed3cd23cfaef1bb31d13a2aa6ecd1c0a842466f72e764d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): [elementType] can contain free type variables that are erased \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1798}}}],"partialFingerprints":{"codehealthFindingId/v1":"a357c6d0cd4143f7c7383362dc731e94af85dd086613cc91ef9d1444bbec2913"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: better type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":1826}}}],"partialFingerprints":{"codehealthFindingId/v1":"6259bee5f0314c63e134b09d6b6dcf990d1ac7574d5f29b76186fae83d59f534"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): method name here is not minified, should it be? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2027}}}],"partialFingerprints":{"codehealthFindingId/v1":"11534253cd73721aac3b8ef5a0bb759e073907fe29cc70a8e755232f350b184e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Instance methods can be generated with reduced checks if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2256}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab41809a8b1f847a21487fb3976a934b72efb108596c47b43c5aecbd5921c80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Update this when we implement inlining. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2368}}}],"partialFingerprints":{"codehealthFindingId/v1":"43d2382e22a49b8954effb04ed2138b091626bcc2b132454672e5df77e991053"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Re-implement type builder using Kernel types and the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2369}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdf4f734937c68dee202ffb3c88795a863ce87515980efddf821df10b955a510"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Is this special-casing of async still needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2524}}}],"partialFingerprints":{"codehealthFindingId/v1":"31391b110f77bdee410f7a2bee8910a9a29964bf3d270c181b93e9d835a8af02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(43456): Better unreachable code removal. \u0060_isReachable\u0060 removes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2552}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d7562255af94e8443d8016eaaaa56fec04388981182f3eccbb820bef51c38b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(b/276976255): Using \u0060_isReachable\u0060 causes a test failure. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2555}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0eb95ede2bd1b399cf85634393cd813884724a8076f6fd780f334f4c8a33a9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The element type of a container type mask might be better. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2720}}}],"partialFingerprints":{"codehealthFindingId/v1":"f65799228208df880c8bb14a688031a583e60fd6caedd5e4098ee75f1db18c5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It would be slightly shorter to generate \u0060a[i\u002B\u002B]\u0060 in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2761}}}],"partialFingerprints":{"codehealthFindingId/v1":"b98edcd0e1016e44458f73b0785d9014f871b79ff7c6a8c8a3c51e0e97681259"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Pass type arguments to constructors like calling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2899}}}],"partialFingerprints":{"codehealthFindingId/v1":"92e6f593346d3a784b4de11d4654779780bd5be3019dca875629802d4de11f95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Pass type arguments to constructors like calling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4972}}}],"partialFingerprints":{"codehealthFindingId/v1":"e43a59b3f3a16a1e43f8e93106e7a0661bd321efb0590795cd10fe2033ab864b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Insert source information in this static invocation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":2999}}}],"partialFingerprints":{"codehealthFindingId/v1":"82a689a3aea5e8ff8019ab5008f854e1e2ebf5c5545f147f3729af8592ee41bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): I think this can be rewritten using \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":3049}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce94cc35498631fadecece1a3965a04446d94a5e462a09002a7b3d72ae320166"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/51777): Consider alternative with single switch"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":3699}}}],"partialFingerprints":{"codehealthFindingId/v1":"3249431bda9ab02bb7a8444bd53e3e909e7361c7bd07259a4bf864315cb72398"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Reinsert this if \u0060isReachable\u0060 is no longer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":3882}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd4d411bf715ddce8974a76353b742b0e032e6234481b99ba7e8e82b1c5ba231"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(15489): Register at codegen. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4086}}}],"partialFingerprints":{"codehealthFindingId/v1":"da03ff7d97ae6d8c2548b96360df5007d0443f2a9647b0481c4b3ce477e7ba11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50701): Choose class depending in inferred type of record fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4323}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0066edc880e1ebbccc3aef16522448b56f15d552370d1841e39324309be57d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): Can we use \u0060.constListType\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4337}}}],"partialFingerprints":{"codehealthFindingId/v1":"73edf8ce33a64b6c62256f595f2baf7346fdb8bc1c24448e133f53553ceaca3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50701): With traced record types there might be a better type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4348}}}],"partialFingerprints":{"codehealthFindingId/v1":"3618061f0f579afadcc594cffeac026138f9d3b97557ddef0b411f90112487ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): Should we make subsequent code unreachable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4429}}}],"partialFingerprints":{"codehealthFindingId/v1":"23cae37e004b5b20aa72b425f7d15638521f891ed8308e6636e083a13e2cb9c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this is not equivalent to what the old FE does: if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4499}}}],"partialFingerprints":{"codehealthFindingId/v1":"d41ce13a4bc53bb5ab72fe8c98c6810ac766a5948cbff63b3db6c15c7940d254"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This is a constant tear off, so we should have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4542}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7ca6e54a1d06400e0968142be0ffd234d2189dfb1d7ee7d14b3234f8370cdbb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This is a constant tear off, so we should have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4558}}}],"partialFingerprints":{"codehealthFindingId/v1":"417aa81436a41646925ccadc6274e7a794273b28aa0fdacefc2b7b98b11781d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(43456): Use \u0060!_isReachable\u0060 for better dead code removal. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4820}}}],"partialFingerprints":{"codehealthFindingId/v1":"701e914bdd0878e24ffdba1f90956e6b394eb7d884d63c01db8607fefcbe8d29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Have a \u0022CompiledArguments\u0022 structure to just update with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":4921}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dda94d4138ab443e046bb36086f5c870ad24329fdbadbdd5d8ca3c4d6a14c6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Ensure the stored order is canonical so we don\u0027t have to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5022}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5f40e9c0aa49f6af6a588c6b4fc18d64c88e91c38545e8cf125ae4f7ee4f7f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Can we delete this code now that the CFE does constant folding \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5116}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0be18ae1d98391f6750858c80583ee5d9ff520764a4590a2273010cd551b50c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Can this misfire? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5280}}}],"partialFingerprints":{"codehealthFindingId/v1":"3808c65130670d367a83fc599699f13d04a920aa4302779f6f120715bc978578"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We rely here on inlining the identity-like factory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5337}}}],"partialFingerprints":{"codehealthFindingId/v1":"63de2d7c98268156bd7b7083f3a175b23031f5a09ea75c34b0ddd16db0074598"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Should we add a check before the variable extraction? We could \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5382}}}],"partialFingerprints":{"codehealthFindingId/v1":"4971bf30037dedd99fde7ad4b3a591f677db70b1604773d6e4c48eaae43ce9aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): In compliance mode, insert a check that [closure] is a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5437}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4cb45ac60daa67a66436b8abfb695a3fd76b41e85921a4356fa72b6a0ffb52f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Do we need to wrap the closure in something that saves the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":5820}}}],"partialFingerprints":{"codehealthFindingId/v1":"544c6491c7535a4c73de874325498ddc60e7b515b623382952d28be0d72db172"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Should add a dependency on the constructor used as a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6117}}}],"partialFingerprints":{"codehealthFindingId/v1":"d393aa289a165ebcd391147e16589419926f18c7efc219857690126b7c31986a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Check that type is a subclass of [Interceptor]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6183}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c97de93876e9f627fa29db904f4bde1c93d4c3453f463a7609b9443efc9394"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): This should be JSArray\u003Cany\u003E, created via \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6248}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b6baf091d464c312204a36c07d5e306711842ee8f9b0b7c3fbfd3d34a42d90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use the flags to improve in the AbstractValue, which may \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6520}}}],"partialFingerprints":{"codehealthFindingId/v1":"5839a3c5676a70f34696a4b18b382b4f62f579a7dd43341a126acbce8aa2b155"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use the flags to improve in the AbstractValue, which may \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6555}}}],"partialFingerprints":{"codehealthFindingId/v1":"9574d1cab3a49b4ed01a3a3ba8dcbe0b44b78c3168f04db57b44eac6189e99c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Better type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6525}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecfa09486597332bb76fca5149e2132558219932e23c27d9b0496a0a88bf5db2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Better type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6560}}}],"partialFingerprints":{"codehealthFindingId/v1":"5907e242718a9c4ff52e7c826af720cd2ec7a3302ebd3fc330de0955afcc865f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Support specialization of late sentinels based on type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6651}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfe5035ce8d004f65a9d2ad136cef1b6075b034725b858aba9fdfbc9212fed67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(redemption): Pass current node if needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":6770}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a7a135237d4da9a189500864e1e5a76edea86ae9d56577251c8c0f6a8ca72dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): can we elide those parameters? This should be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7040}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d077e757d6d67992e7dec8aabd33769e3705a52ba646895ae68983c4f842ecb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): consider throwing if parameter names do not match \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7051}}}],"partialFingerprints":{"codehealthFindingId/v1":"a82232927562f7839d29e71822c6ed9e502dc2814089adc58b75ff8aa012293f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Source information. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7069}}}],"partialFingerprints":{"codehealthFindingId/v1":"eef762faca83b350bff23009ca10d8705351ff96c8fba7af93f40e35272c40cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): rewrite named arguments to an object literal matching \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7083}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ca1f96600c05374c7bd2f32ba771cdca927265067d8ca94770c9a0d9a221072"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Add source information here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7160}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e019740d58b52f136f885cf7c629af2829ec4ef4d1f3eff064df3186313769f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add instantiations to SourceInformationBuilder. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7213}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fead3106ce707a6d1d5441fd660a003f68cd98f45a15a9ee058e34cc02ae5e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(47484): Allow callee to have different calling convention for type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7216}}}],"partialFingerprints":{"codehealthFindingId/v1":"97297cbb8dbaab1d2ef1ac7efd3548c0b38c5d19682b2c80ec4a1eb198a9007f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Is this true? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7222}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc6dc8699757b89e395a1fcb3cb02865afe1f57018fc1732580e2b86c7bc05ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use [_pushStaticInvocation] to allow inlining. We don\u0027t now \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7224}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbd30f37cafa8a91d3d0ad57c0793a695786da3590c1e0bd8c048d38929a129b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebiggs): Pass typeMask below and make non-nullable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7429}}}],"partialFingerprints":{"codehealthFindingId/v1":"66bf28bbef6c8cd67102833da20949ab61478db090ba08d4542b138a2e746f6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Make InvalidType carry a message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7673}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8d90511876c096cc8fbe560b5f01e0a3b04e818a687aff54dc46f951176ac72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Improve this type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7748}}}],"partialFingerprints":{"codehealthFindingId/v1":"87c75760c110ef6102609228f0464d24ed783c1d2753df298a83e5f686d3f272"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): It seems wrong to set \u0060isReachable\u0060 to \u0060false\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":7978}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2ce0b8681ac06e888201ba3c282645b7b8f599231dea51c5dab377f75c04966"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34203): We can\u0027t update the decision due to imprecision in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8087}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5a6d4ad3bb1409506a02b07b3aa0836f25013253dc1c9b6c1e4a758d83b0528"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34203): We can\u0027t update the decision due to imprecision in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8094}}}],"partialFingerprints":{"codehealthFindingId/v1":"88c8902b36c9c4a65129a28ba43a1d31c0132aa92a9051a353edf7c0ab7f9c27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lry): why? Document. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8365}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ada029457b469e1d21954190b266a18a8b90cbf196f6370848cf6da4352daeb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Make inlining of closures work. We should always call \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8414}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d1bd1f5e20817f0076bb10f708316499485376053ca879c57ec4e029959851"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Incorporate properties of call site to help determine which \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8526}}}],"partialFingerprints":{"codehealthFindingId/v1":"cefe3d7c5c3ea53ac373cab0bbf672f11f6538f44d83ed4751731c80337d25e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): create a better uuid for elements. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8595}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e1d665a96af795de782091a0c086b164ae77c1c53b3783c1c81cc59136d7e4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(30809): Use const constructor. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8935}}}],"partialFingerprints":{"codehealthFindingId/v1":"64c3050f0b4a4d129e735b2ffc28cbc481632a4018105964b1b98c3f73dd6252"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We might need to match other expressions that always throw but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":8957}}}],"partialFingerprints":{"codehealthFindingId/v1":"d503465c296c96fef9e6703e33016d57220fe39768876ad01baec23e57417ed9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51652): Remove when inlining works with labels. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9002}}}],"partialFingerprints":{"codehealthFindingId/v1":"c22f64d76b0a6c7d462f0ae3ad8bec491fc3b1104a1b470267965332e4a57044"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider slightly expansive simple constructors where all we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9227}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cab3c27429843ee3899201a7bb6aa99987f833196c8b7d046447b4bb1214ce8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(25231): Make larger string constants eligible by sharing references. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9230}}}],"partialFingerprints":{"codehealthFindingId/v1":"34d566a02586f66acb288f78ba4f454f081907c43fbb96e322af847c25be77af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Cost of parameter checking? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9402}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef73b506f70468fed06b4b56a02322d3ca2626474f4abf416db8740f967ab53d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Need to add size of defaulted arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9739}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf10362decde858d395cc9a8dde90f6a9ffb563a79ee06922092bc5284ddb4e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Need to add size of defaulted arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9750}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a447e4afb5ea477a33f0a5c4f4e451534a20af0efe75a3f50eae90913586b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use FieldInfo which tells us if the field is elided or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/ssa/builder.dart"},"region":{"startLine":9843}}}],"partialFingerprints":{"codehealthFindingId/v1":"d643c17d6087c2ed96a91dc764b5bf29fda8115c406cc2560ec258d6b72b00d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replace this by called constructors with type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/world_impact.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9bc40044ce62ce070f5a8949cefa3132c7136c1532a5ca277a6b23b5e3c64fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Collect all checked types for checked mode separately \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/world_impact.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"02a318b7b5c79eb6403043ea7643503b3cf2c3bff6d9588dfbde8eeb8dbd883a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we benefit from lazy initialization of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/world_impact.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"da733e3fbe39966a73c20645db3aba868dd9c5d031149a89dd0c9b644bc4635a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Create backend-specific implementations with better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/use.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bfef949e0c10e2fb56a6e3493255addc5971110e4b70838dfe2325ab5202480"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): This can be more fine-grained, talking about individual \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/target_checks.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"59f2b1820860f516f7c0b09297bfa8218e68c08a4c243890634caa00bae07be1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Extract caching. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/selector.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"f87fc8db8fccefed2344c186a3591ed1375334ea75fea029d697326ff09343b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Maybe use equality instead of implicit hashing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/selector.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"82c5c98a278dc1d46eb2d813382ea3c8a3cd583c296dffbf4da1335780bcf982"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(31953): Remove this if we can implement via static calls. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/selector.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ae1b4559b2837a59baae5cd31676650cff8dc8af97ec864c9296bd46f03505"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use normalized selectors as much as possible, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/selector.dart"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2fd9964635d9d212a10750f0800fb69e9b060d749cb350ea43587e64e17dcb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Fully enforce the separation between exact, through \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8c04526703a14fd2d0cb3704c16030bbe24f252b4e769d605de6883c5cf9406"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Fully enforce the separation between exact, through \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"060830904e81f789b80c8af5afec5051131301cdf17a2b7f1134e7c2e14972a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support unknown type arguments for generic types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"a512f20aef9de01c77378db34001d19d893e99bd6fce8c7ffd05fafbc5a286d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support unknown type arguments for generic types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db9879d97d26d487c15f512c9adf36cc33e5da9bad0a613db91c2905002e795"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use [_instantiationInfo] to compute this information \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"98fbdd37776e202f33a3be5464d4bd2f6419133ae826cd82577c9867f88c317e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Also remove from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":508}}}],"partialFingerprints":{"codehealthFindingId/v1":"12a0f882f993caba39bacf3206e08d7d31642b8c942b999f7ad074a4a8b189d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Also remove from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb9c110be88eeb868eec2afa26f5a36b074329105fa40dfddaf8dc324508a0dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Members cannot be partially read so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"a677f6a78249d7b2a512da7f466246eccc41edc7ba907be028d11a9de92b86c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Members cannot be partially written so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"120b91c96b7898a2bca0709f94b0e5e1a31ce5c1f94d8a5bc777c3fcd58bc79e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this. Currently [FIELD_GET] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":607}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1b248ee743477565e357f543e6d3917d433313b60a0224aac40e84d3102bfab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this. Currently [FIELD_GET] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"91018bc3ea5943d199cb3a9c9f517c1499ee5264a1d060a845837a8a40e67537"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change this to use isNativeMember when we use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":809}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bf229113783a94fea023d414adc405223addcf66757165daddc7397cbda8ec8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the [member] itself to avoid enqueueing members \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/resolution_world_builder.dart"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"807f1a9b05c58cd3f78ffee22bafd567ae00e85fb7d449a0a50c1ca5c19278f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Track super constructor invocations? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c35feb19bbbe3c5364309a9de70a27f0c9b7ad8b74fd375ee35a4ca82f4e06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge this with [InstantiationInfo]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_usage.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7bb1dcc5d44aeebd7f98249476cf2888b82a623be0d93ff2c26dfe5c89c2139"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebiggs): Can we calculate this as part of the above call to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/member_hierarchy.dart"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ed62508f0ef0ef5489e69749f4801ba4bfb22e0eb582ddc4eefe7f44a6fd9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebiggs): Clean up debug 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":"pkg/compiler/lib/src/universe/member_hierarchy.dart"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"18fe8e780692ab0adebb8047642784afa251800bb80bac99db6e6fe1ae0bd3c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): This actually holds getters and setters just fine \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/function_set.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c6aa050d2d0294152c38e9281c1af43be11e169adabf51b69a1c646c4091072"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): rename universe =\u003E world \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/feature.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"61ace438ebad57f7f449112c508086045a1a3310a4a00a1e5a93e8fb898dc7af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should mirror usage be part of this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/feature.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c8a1b9684f15b8844ee8614d6c55c5e0bc6f9a8271bf3dcec57bb6db937ea55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): [_directlyInstantiatedClasses] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"84ac7adf6eb02e8a6a3598f6d5a2647edfa3144a446e5860b68606eae3435f85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replace this by separate more specific mappings that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d95980d17eb4b4f62d97a3df5f77b15f595b2e070e09d801460e306bbcfb12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change [TypeMask] to not apply to a superclass \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"79e5a01b7c7db11fa3f7da470e328f416a15c5706521029d44a6daf60e8069c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this a part of the regular enqueueing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/codegen_world_builder.dart"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c3b8e1887aa50ebd56bdb8529dd9821debee8ef6a87e1ea13c09f2210b87bda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support this for kernel based elements: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_set.dart"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0d4272ce1269b07b55f220a2451241d9e0185ecc15b8669df0f3b05e31292d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Change the key type to \u0060covariant ClassHierarchyNodesMapKey\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_set.dart"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f7c5a1d83c408bac3ce009b4e6e88580c44a8e1183f908698d1a96767a9d49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Change the key type to \u0060covariant ClassHierarchyNodesMapKey\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_set.dart"},"region":{"startLine":1080}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1daf4fd64bdbd1e8613a57c81356192c44e312b7cacea30dc962643875a596d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move more methods from \u0060JClosedWorld\u0060 to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c91f290fbee281140edad6402c23d405cc0a37e139a851ba2997be2511c16aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement an optimized query on [ClassSet]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"b15b07a526ae9ef8585bab83bcf9b0618e46900366330a98209bad0f786a14c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): move this to ClassSet? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"80d3251da25db4e5aaf043b67fa631df1ae55973df50902a0830573a41b1c97b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48820): Try to remove. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":669}}}],"partialFingerprints":{"codehealthFindingId/v1":"e01c7835edf4236b917ecba66c3788264e42f309570512b2ea938f2aa808acd4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Optimization: Avoid adding [cls] to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fbf595ef27eb265341f4cc5f2b4b5289fb33d56b1ec09646ecb3bacc4c103d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the data stored in [ClassSet]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65cc5e041f113d1ea89c7d259071c42bcc1f8f7f7d89eed1ae24c6985e7d436"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48820): Can we remove the need for \u0060as IndexedClass\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0ef901e325d82e2186119e73bef3ba52129888f3c980f118bbfdd662908a84b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add map restricted to live classes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/class_hierarchy.dart"},"region":{"startLine":748}}}],"partialFingerprints":{"codehealthFindingId/v1":"f132decc073394202d995035f64d9e7c2ca77ac837b44267f7940bef38cb2743"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should isGetter/isSetter be part of the call structure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/call_structure.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec2ef2699d03ceb0d53a433abb3a9377a738542a89eb607ef0f8e9162cefaf81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Cache hash code? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/universe/call_structure.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"baec6f9970eb91043fcbc3867765055794000d9ed137afd28f5fdf779ca43432"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should use inputs already in the cache. Some \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/lib/src/util/memory_source_file_helper.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"612cc4ff836d8555dcdddf69a13a03664e3b50609131ab00b72a401531977875"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove unneeded dynamic accesses from platform source \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/analyses/api_dynamic_test.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd63e93f572d5402aaba7b11f9ca37167fe17a38e04cb6691d31a9ac8b12b2f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //scopeInfoStack = // TODO? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/closure/closure_test.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe6464697dab69dd3063fce6156261e30da8a2453ef956d2f2af6728607ee19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,efortuna): Should this be enabled and checked? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/closure/closure_test.dart"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"6044c33cdcb71d6e0d48d584cd42673dfcbe5a227d892a533f9db9bc687fb023"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This shouldn\u0027t happen! Remove branch/throw error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/closure/closure_test.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"7979f0592513bc0860e4190986fe4ee3aa927a879834b5f6b1b23e2c92dcb828"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,efortuna): Add more info? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/closure/closure_test.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"616ba62525e0614547e23efb7bc00fce2d64f7dfd4c768ef47efd6a3725a0e7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Move this test to the codegen folder. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/type_inference8_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"071af4782c5e76d51645c85716e6677456424778dec7cb23f268b0351982cec2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Port this test to use the equivalence framework. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/simple_inferrer_relations_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"72dc05fcaa16132dc64be668a7da472c8ca637162d0f8268f79940f8de531d8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): shift-shift reduction. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/shift_right_unsigned_test.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"8962a0553e494dcb97ac9c2600030dc16eba94192492f58cecdf0ec61f1bca30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add tests with non-nullable input types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/new_rti_is_test.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"b543cc1647faa9d4b1ca7d69af9236d0163679cdb49e2430b4dfc16e08cb28b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Currently this only works with the mock compiler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/list_tracer_length_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f516e0dc9eed19fe370ba952b5df859ef5c12f8256a4e0218b903294bcb15b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29147): Add tests like above where \u0027f\u0027 is local. The above tests fail if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/closure_call_of_static_reduction_test.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a292599272f74cd583ab04c650f9c6c3800127408371363152ff4131d4dbcbb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): constant-fold later masks into earlier mask. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/bitops1_test.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"559a73b3082c7c6e6c85b6e914ec81578fdbc667b9ec3fe59b6fab98bada0f4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/29475): Cases with partially constant-folded"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/data/logical_operators.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1376ba96dd148ed7837eef371ba809cb15bf959b126866578da6956381c135f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/17027): \u0060||\u0060 causes spurious negations."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/data/logical_operators.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a2b4bb43ccbaafe547c0649ae12c1af18c35883138d27126be4fee3608eee04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Lower when type of input does not need a generic covariant check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/data/array_add.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ae5d890861a87acaf2680d88053d25c8a44eef2393333a3050a22107c1cd1a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Control the order of the named arguments. Currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/model_data/native_inlined.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"e016699343aac0bc6da0d94774666e46ddc93266436d8476255f4b56513386d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Control the order of the named arguments. Currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/model_data/native_inlined.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee13e841814ea2f87ca350b1c056684571bdfd3d65ef9b66b0c73a71306bf73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Control the order of the named arguments. Currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/model_data/native.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2f74e55f015119a2aa01b4526502d329f6706a2bdf3e5817a065d5281f22ccf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Control the order of the named arguments. Currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/model_data/native.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe0719f7f46f0c8c89028070f6e2f10e7fd4205d91db1b31d69db7de8f54d8db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Inline switch cases with constant expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/model_data/effectively_constant_state.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"d69865daad0b0440b62e6b1f0257e17591ba8d67c3cabecad208e49d0241caa9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove the redundant assignment of elided boxed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codegen/model_data/capture.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0b4ad5b94c635c6cc3b9772e0f46901243e3d1649956548b29b45c5e2c5beda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): I don\u0027t like chdir\u0027s in scripts... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/update.py"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"81a39f7ceadeb6cebd85cdec159331cd27c1fd939c10878ad21c46851d2bad21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jmesserly): we should factor out as much as possible from the ant file \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/buildapp.py"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"d91f64734645d3e1912402a749f727103c5d8286e635ea81cc19da0306bd3701"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Remove this when deploying. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarmlib.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc1652957039ad7b0ce9b90e5a04f6468b6be73a2712b87f0de0d933c9dff18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): placing the newView member function on this class seems like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"40910aaa0f04f5e931bef7bffd869728d6b03185440f2df90d3d1f987f31e830"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Move this into enterDocument once we have an exitDocument \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"0443cb25d4d5bf1edacd0ed95f81026fa9cfd1d3bce8e1c962b6a97f3914812a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): use Observable to track the last value of _selectedItem \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"57c17adc9560fd0c82bb444ba06febd15d42ea28b708eb7704116081235ebc31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): use data attributes when available. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"64e04aa4f6ee15a9770bf516f937d699e5e29a1029f852284f4d8a8633bff17d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): this should be specified by the default CSS for a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"3310f52835a8a5cc839001bbfd2d67c27140c1f7b8302ee4b227b41b42812b8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): add unittests that this code behaves correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6956b63b3dfa68156e25bed9366ceb3a2d86e6331fd9b46eeedcfff054025b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): its ugly to put this here... but its needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddfa03e44dcb0bb0506a8996cf7ba3fece4a40079c75f14cffaafbf46186f09b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): perform some validation that the view is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf2fdb011c9cee45fe239a39f99a554d3272abc01c02417a0403a6730027dbe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): move this to a util library or modify this class so that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"fac1232ed89990bfef480e8794088a112afa906a435482e8d0a614cc4308501b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): for completeness we should check whether \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"86e56cec584c8616ba24589f201581c39915ca4da685553dd866c77b1d470115"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): this logic is overly complicated. Replace with something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":841}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab71f325ad1b3e5b6d5f9f7b3eab5cedfd03d39bc3f84b587a1216ab34633b85"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack so that _lengths[length - 1] is available. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":875}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbe42ebf8232a050f0dc04a71ff13f1415a71959c0e9fbda2a5e1dfe3cb831ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"e838d456c0bb7b8d843030f269a8cd258db8dff24d401d467483c45b9b5877b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"250922a4e3246445202afe2a5138133a6c5d679c063ee2ea5429439f3c5a2edd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): use hint. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"429491e03faab772e2aa69ce038898e48eaa3a7f1122e8406ec5c4eb7314ab0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Maybe should be part of ButtonView class in appstack/view? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":1003}}}],"partialFingerprints":{"codehealthFindingId/v1":"203598bf3331e66a720c1566d19ea50dfebb351dfb1b33b9cdb1ba5e7cb3fb66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Add a drop shadow around edge and corners need to be rounded. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Views.dart"},"region":{"startLine":1023}}}],"partialFingerprints":{"codehealthFindingId/v1":"03be9a7b85fe0d17cdad78b12dfc61bc8f02f4156b008cb312025d208dede4c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Support default argument on substring. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/UIState.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82b4d6042a963a1b2306051462858672f93b3994e9cc76b3af3d2628b4ccebb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): When loading a bookmark or refreshing, we replace \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/UIState.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb394bae99da33e2b1c9fb06aedcd7fa582d5ca3ad204db1676f7d92243e3a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): [state] should be an Object, and we should pass it to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/UIState.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"416c493e77822d3be30ff7030b4fc5ea93cbfaf047d02e815241c56e31124544"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): there is a lot of dead code in this class. Checking is as is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"da3808b671cdfe8dc82b358cc99116abcbffc62e3d066db79a79a901837c8028"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): this code now needs a large refactoring. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"e268db2c8e030aa0211ecc92c49ab92f361baf40b5ea1887b8a539b4c23e44eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(jmesserly): we need a key code enumeration \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"bba389b48c2527ea7a1ef245d70d8a7796cdb52a5cded99e83648b30d1cbb048"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this code works around a bug in the DartC --optimize \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf08762fb15561c8a15870476510a3ad3201515b061a8cb485af37f720227a2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Should move this \u0022mode\u0022 into SwarmState and have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"987eae52d13f6b82b25c1090a017a079dc7efd0ca18886032b8dce8158a51dab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): make this code better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"c44b9cbab54b2a3259a40b2a6c2df93295dc52fc10168a6785bed4c67d6abda3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Hack temp. Access node to make sure SectionView has \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"836863e52ea7a1d7a89d890f8c7dfd91f3af04b16058f44416e2974974d44848"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): make this value be coupled with the CSS file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd37615d481c4bc115920d41977cc03c2e81ae82255cdca9a6441fbf757a1ffe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): make this value be coupled with the CSS file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"50960694a9a9313c7fca82c596ceeb3af0595ccf6a43f400d1633691797a6327"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): No more web/text mode (it\u0027s just text) so get rid of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"c54abe2e9c29428aacee0018ab506acbfa4d68a53d427748a6f10aa66303dfcf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Cleanup, HeaderView shouldn\u0027t be tangled with main view. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a0a5b9529377713e860b696cdef0afeb31e31657f8b63488525a24b2d25f22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Cleanup, HeaderView shouldn\u0027t be tangled with main view. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e106b00c157fed1b1d98076c2e7417c41662e621093d2a4f04e1ae58d791dce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Need to push these to the server on a per-user basis. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"f59d93caf66f6b974b4db99293c74ab092e6dd8ddbb25462be1dcc8bc1222cee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Graceful redirection to reader. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1904b4a19aa3ae609d7c6fc194b5e4bb79e1ebd86946e24ddff2a940659402b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): We have nearly identical versions of this littered through \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f529ee446ec66089bdf50344806d61660e90efa5614a6bd266ced7fffef9bb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): We have nearly identical versions of this littered through \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e85694a3646e3cda3d26014a6b695817072721574ba12738659e973c53e4b92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): make the title a view or decide it is sane for a subclass \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":535}}}],"partialFingerprints":{"codehealthFindingId/v1":"75de84947c09b01e2bc7d4977bffce7b5412863a815c1e1b74c52f581e5588b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): use named arguments when available. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"7de537fd6bd24c98a77cd8b4c465fe19fa9d586c8283a31c121c3ea065dc8049"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): use named arguments when available. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"63e5d2ba0b3aef6020ac9d54680e0f2b0aa39d7437eca7450d915952a8ab025f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): use named arguments when available. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/PagedViews.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef27a68ffb28a8c51468653c66035620f4cc3935517d117bb870053625258f0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): clean this up once we have a framework for sharing constants \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dcc06a28d16c08559f112ee74b4b8a9ba7d757add20e26ff8019d85a3dddc0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): find out why this is happening.. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcccc71e8194c5f837d989480408fa25d9ed033ab4e3866e15617063ab3fa6e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(efortuna): add in history stuff while reading articles? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"82ffb189f7e0d96fc8fa1f6feaca7a5cda31550f95f2e44f545943b4970488a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Would be nice to do: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2992ee2b2b310d2d95d0180c1122a3f87c1cebe5650be4ae65fe4eef1445a6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hiltonc,jimhug) eval perf of this vs. reusing one canvas element \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":822}}}],"partialFingerprints":{"codehealthFindingId/v1":"d232f8e9f3d47be877902b54b303a3f42593bf37c434b88063091d08d419bfe9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Reimplement caching of images. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eb978041b1d8837ecb16cf63cc074174cab737e5656ac20865781ede6f83c5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): would it be better to add an event listener on click that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":875}}}],"partialFingerprints":{"codehealthFindingId/v1":"b57a92aef35a2992c5a4b708a89e43e287b13d0978d2ef8b3b737c808da81446"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): get rid of this call to reconfigure when it is not needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmViews.dart"},"region":{"startLine":953}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a21ba4aa97f69d735c1cedbaddc9be7cff7b971e000070cd355ed9bdeff2b10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Split the two classes here into framework and app-specific. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmState.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2421b585abc2ce58f05852b496795ab9d65287ffed42d2ac013de6f18b076f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): consider having this class just hold observable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmState.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd4c3137b610ecd34f14267eca8aa2125d3c19e0b6c3ab8c7189fbe334241df8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jmesserly): fix this so we don\u0027t have to enumerate all of our fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmState.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ce6fe590da5a822ecca34634cfaa93965b5648adace6d4cdbdff76e1546e0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): There\u0027s a better way of doing this... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmState.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b403bd3b86da82bb05567c803545c6ab85f52179e1fccd32092c395e09f6ac1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(efortuna): move sections? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmState.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6bf636c243d8dd848169877fc5e04ef3564dec2e4f9a04e63762b511730d552"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(efortuna): don\u0027t pass sliderMenu here. Just update in view! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmState.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"3547c156e19862bf0d8b77352ac240c2723ef2b9bc11611c79239b330b838a0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): addChangeListener needs to return an id so previous \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmApp.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"443e88275c958ae9f728f5f276966ac57c011b3af0df4dd85b45ac67d9342464"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmApp.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a1467a2d88bcec52b9721802170091597e09d649167425c1d27aaadf8e31a8e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Should be able to spinup the app w/o waiting for data. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/SwarmApp.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a6afa35a380e5f0214d1ff38722dee2f8209e60396c107b8893d936b7d71c10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(efortuna): fix DialogView so it doesn\u0027t require the HTML passed to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/HelpDialog.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"84286c12a4623347ab46a3d0632ffc6f9eb4ffc334306cb1f4c779e0ddb17170"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Fill out methods, add encoder, move to shared lib. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/Decoder.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"1291fce3a6de2c0773dcde34e32b8dc3656f539d28ab6862a42b6a6947d9f9d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): This is known as UserData in the server model. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b375805ce18227f6a50017ddefc55309ddb0374defe6c62e0e5731a0c5e4b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): http://b/issue?id=5351067"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba64f93549e9c1157cbe90afcf5ee905f27ccf9628ed4ed2cff5a191b8dafeb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): http://b/issue?id=5351067"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"acd3cc669851c50fd94e9b5531ff03039dd181bd442290449892d6175d11144e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Track down callers! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca3f53506993ef1eaa743ae41f2522b260939719ff5aba96dfbf856f487f3794"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Better support for switching between local dev and server. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f35a36e887cdabd57b344082127ae3f2e256fc13f40cb610524eb6a084d804c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): window.location.origin not available on Safari 4. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e45b064af746cd4a89860495ce9833e001fdc8c7476adcf4c2f0b68cb4aad0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): display an error if we fail here! Silent failure bad. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"32b5cba5823da0edc73466c4e615195df867fb89c86fb70645deea1f711cb5bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Nice response if get error back from server. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"0acc1d1fd7618f38bc67dabdd470a687c3ee03a994c21960466b7553899eb66a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Might be more efficient to parse request \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba2792f6778bd5cd2b13ad61d8980bb54b214d9733cc8ce1f38e26ba2b07a0b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this should be a property \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"d40d72172e14e3fed71c9b174286321b2f713122360c3e0ae6e3cc692b7c2002"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Public for testing. TODO(jacobr): find a cleaner solution. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"41a8d604c1627b6ce8c85d7b4e2ae02757f35e767a05224e4ecfcbad0aac79df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Check if dead code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"266c2a55827473295dc1eecec350df888cdaf6f1c1297f8ede917fb52e371131"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): rename to snippet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c17bb6d188a17b3e150b01cd3ce8ba9b875a1bbb554877a95abd1d4040c3b8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): rename to feed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b3df374d3a6a38a0050ca95d981d3c988dd155c6ebf3526e224ed0e1e8e6c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): persist to server. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f6dc09cf415bdcaa72a713ae5d45f801671cc961c87fdb856b0eb2b7b6fe96"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Check if this is dead and remove. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb8839f177d1bbc38074b532127c099d3b8a01f6a08d0b54f7e43426dadadf4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): need to return a lazy Observable\u003CString\u003E and also \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"35e446b9792b03200132a23948ce8189a2d12d13bcdb3c129864052e4bfabc1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Remove this truly evil synchronous xhr. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/DataSource.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"344bfd0a24703b266315ef09121845e3becc884a2d56882800ea6e2c4576ce08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Work out correct copyright for this file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/CannedData.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"8017a93596defeca1f18ea3a63b402af7fbd56d5eecd961d846da2d6fe2b89f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund):  Consider eliminating the call to \u0022wrap\u0022, for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/App.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd65c2d7b990ca53b8c38d565615f09ccca17ff15dcb11cb1f8c34217352c0c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): Several problems with this: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/App.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c5d26bbfe6d33ac5e65968310724c450bf8de3bec26ae0adf7f11265f134d1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Allow client to request desired thumb size. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba2cd29870d85bf21929c7822d1fd88c56d5e9edb9f8255c20154dc280225422"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Only return initially visible section in first reply. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f314057fd4d6ec0c0fcf3b2c624259a45b2ef2a609aaf1179a08f3f32a64abe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Need to optimize format and support incremental updates. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"16c1ae1188967d86af0e65deb55e8207950173643e236dbb55dda0418d5657f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jmesserly): for now always unescape until the crawler catches up \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2659c86e8206543578a5594bb15d571005e8694ff0641690d6c14dbe374868a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): This slightly sucks ;-) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a636f1cec5ac088d5c8de8e655e028c87655e8cdf87139c13bc157db2f5a785e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Include first data packet with html. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d35348830aa68dd8c8a1155296f5d565e5d6073229f3929ef33f447f323aafe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Manage secrets for dart.googleplex.com better. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc2b464c839ec1f330f5ccf70a9b64141b7fa27687eb5d5cf893040c21b8125"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Confirm that we need client_secret. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"0641d156ec3a07a80fec5cdcb7d0852af985e732d54e7d2ba3b8ffa84273d5f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Batch these up and request them more aggressively. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e992ad422d520b333c5e32fd14fab4547b777159f19d0f9b27187009a87ee7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Graceful failure for unknown users. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"36cfa5a908c90e070cb1463372a28a38cdd34015bf4f6e4f51cdb2f0b9bd82eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): memcache.set(key, data) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"632af99e219584b08a9daa777ddc1eaba6111b58829917cf8af818d0ecfc88de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Use Reader preferences to sort feeds in a section. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e3b921310eb22461095ab5c570ee1012eb4378a9a9a6390d7a4e46a8ada69a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Use Reader preferences API to get users true sort order. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ef33d0ed2929dbab34c61b6283c83af2457485b4c469673957b4edacce68b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Enable this continuation check when more robust \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"c713be66af2a9bfdc8de63df85bb043cb993e6826eced0d59d46a5fa17e346e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): This aborts too early - at lease for one adafruit case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"1485a1ed45330851c40ed1882e282e2ee5db44154428993cd01a49fa636042b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): make this canonical so UX can change for this state \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":645}}}],"partialFingerprints":{"codehealthFindingId/v1":"60fe98738040826464a0d26b08254cae7b923971e65b1c6ce38f56d7ea4ca80d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jimhug): Add other videos beyond youtube. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/appengine/main.py"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"c031b7d86803f7f708c30fde53bec8541989e8becf715b781a825434caec94ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): give this event a named property. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/base/DomWrapper.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"b563d182f5affc826360b7e6067845948f75b820ac035088bf55c517c2e72261"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): cache these results. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/base/Device.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"e60877faab8c60ad470ee1743d236cd9cb2a0d0a8f0bb1d472ddac136c9aa661"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): figure out how to test this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/base/Device.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef30320bddc5fdf6f25e3f5edd880075ff7e875467de72ab32981f3163916e67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): use window.requestAnimationFrame when it is available and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/base/AnimationScheduler.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3b5ea5f3c7a055e38f177e5f5525914d04d58f451dbeaeb4ada5620bef7eda2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): find a better workaround for the issue that 3d transforms \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/base/AnimationScheduler.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"611e11b5ce54423417716b65e12369b31566e7533e9e161339afee30e2884eca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): we could be more clever about this case if delayed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/base/AnimationScheduler.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e721ef5e0f43257306f8d75e3801eec73a959ff12fdcc57a8bed4f46181af32"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack to work around an iOS bug where sometimes animations do not \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/base/AnimationScheduler.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff78b3172a2d1f6489861a0733c8397e3cc3fb6abb575ffa9e7032792789fb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): find a cleaner workaround. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/base/AnimationScheduler.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"f35513311e27a74777604fe9442b4c70506b843623f733b2b0092e9c8eecae01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): should be const, but there\u0027s a bug in DartC preventing us \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/ViewLayout.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b6b76c38266ad69142e5c605c7031025c3453aa08319a25a4bd696d2c0c71c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): enums would really help here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/ViewLayout.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b763cd7eed328d17f3efd4098db5ea519cc650b71912941b82ab4abd103496d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): perhaps this should be X and Y \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/ViewLayout.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"629003550cded62642142d8117ca7b249f22603b94189166b6785a49d587d1ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we probably want some sort of \u0022auto\u0022 or \u0022best fit\u0022 mode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/ViewLayout.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb4383b3c709aa3a0afa9fdf2d3eb19c21ff46cb56ae8a7f3354916394754c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we should support user defined layouts somehow. Perhaps \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/ViewLayout.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"88363abbc8b82b6d18c029597dbabec5ef1ccb21f628c829bc90a7af3e9bd12b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): benchmark the performance of this DOM interaction \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/ViewLayout.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"99af7ece85dee4acd2d2e213f7fcef341c37bc2232cc968b7d018746e0610ce1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): other size units \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/ViewLayout.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7770970fdbb3f785faee7680a1f015b235c50d73dfb68a4d90575e6931c6d92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): rename to GridSizing, or make internal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/SizingFunctions.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"4895da08921f2ed550024894b58bae4feaddc17490137165dd19ce122e4c30c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is only needed because FixedSizing is mutable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/SizingFunctions.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"c97c426689dd26a905f73e830f57eac445bd202bd1fcfc139a4144dd762309e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is only needed because FixedSizing is mutable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/SizingFunctions.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8872598450a111e990ae96cd18150bc6ab7d605c7386c89e6e603c72e73a7eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): kind of ugly to have this mutable property here, but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/SizingFunctions.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c1c10d5ef957da4661921be17430736da7264ec385ed9ace20b346542898a9b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): support other unit types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/SizingFunctions.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"dacc293b9b3d13dc6705a19e2dc10d1a4ee6000ffeb84013e85e332d0e8e8df8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is only needed because of our mutable property \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/SizingFunctions.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed04f6721b4f31e847322880385a0637b6ea6e46b0fe64df2965bdac1064c3ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): these classes could be replaced with reflection/mirrors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/SizingFunctions.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"46cf3d9ebc2c47dff7e01f255e9e2dbce6fa2d068668c9f1109603bf7a279ddc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): should this be stored as an int for performance? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridTracks.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9d4c8be167e57dbf5109cfb2e6ee4e2243f761f305879af8b82ce16565f9d25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): not sure if we should throw here, due to CSS\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridTracks.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"7382eeb236b9fb2d4cc2d9aeae31807653bd03cee2136b40edb886b90395e6ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): shouldn\u0027t need this optimization, but dart_json parser \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParser.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a594dd1e498bfaaaf78d11cbebb1bf9a3cf4aaa3748ee943b338947bd7ae713"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): should be this._offset = 0, see bug 5332175. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParser.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b16492ecb1c9d34bf5ff62ec69585fc67b43d1f25c4889991acdff1494cb92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): these should exist in the standard lib. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParser.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1b37e1f2dd155009c9875b9c2cab6c8ad7f2ca0a3b04e65ea262d88f7043da5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): make this match CSS string parsing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParser.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"290ec230837162599be7eba9ae508a8692a77abf0f62e509d2ae75916e9ed5e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): more escape sequences \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParser.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6981251c5ce463d99a088e33ddb3cbf96ecd9d65c25f82e5135f2cfe5278b22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this won\u0027t interact properly with implicit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParser.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd73223ff9f76100182d27a4277ba177de3a69cf6a58c43d29a1880d3380391d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): implement missing features from the spec. Mainly around \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParser.dart"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"294166c2bb1ead1abad7e4830829b963a3dd76649fbaca5726c0f7b85594221e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): I would like all fields to be final, but it\u0027s too painful \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParams.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"23ae594413af3a58dc10e3eeee91135651bbde1d189296d79c1079ff08331e66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this can be cleaned up a lot by just passing \u0022view\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParams.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e758e06c787676e569685d5b7149e0ca1fb2043054b337082e91f21e079600c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): I didn\u0027t see anything spec\u0027d about conflicts and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayoutParams.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb20bd6e8eceb132942a2a4b3aae734c9658ac626af4dfed67384ce3fcc3a870"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): the DOM integration still needs work: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayout.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"497833ff9ad0b265aac9196746047030faa976b832f5f3471310f642421cd396"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): Some features of the spec are unimplemented: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayout.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc6fd5950513352b0d1d2934b4457fb9e282d0feda1055575b867d937b60df66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): high level performance optimizations we could do: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayout.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ad71bfbf332a8d696b478ab8408a35e6fbcff5db0adf0a2dc185030ca93a0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): cleanup this method so that it returns a Future \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayout.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"17e8b6dc7645a80bcc729b98c71adb1472ba6782b741876376a1d4981f064475"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we\u0027re supposed to detect a min-content size change \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayout.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"f26d16fef1d23e2ebe592bab4caa638518fa0344f8a6c48f872639531d31a0a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): as a performance optimization we could cache this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayout.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3c723a4cd180ce3fdbafe9b426ad63c217d7a6e46c4e6a55797e8305423db06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): in some cases it would be safe to sort the passed in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayout.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee89978fc6e4565522ca0898908d2a94c375da9a15d526a027503cae692e1d66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): might be better to return an iterable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/layout/GridLayout.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b3ac82287a8f5f088c620b02b793c2c4ec1c3e2bc874ab43d59b1e0fd920317"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): remove once dart supports maps with arbitrary keys. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/observable.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"95f28aa9a6944746262100290b010fbf2347d25714c6dda22d1bbe6cbde8b0ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): measure the performance implications of this indirection \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/observable.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"a73dc9d5dcb88ba0342d750bd0390c4763cd0b409b016bcd035da11699162122"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Needing to do ignore and (null) here is awkward. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/observable.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7248cad3f61bd408af0bf88efa7fd541766216f0b1bbc00226e015aa4b16521"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Make this final if we get list.remove(). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/observable.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"41388799a1c6cb3f13de52b16abeba3b86d5dcb5f654fdea4d34f369082b42d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is this too granular? Other similar systems make whole \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/observable.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"93b2eb475e619a7444e43667802c93d0688266fdfaa3251dc38e194ffbd552ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): use [Observable] instead of [int] when [Map] can support it, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/EventBatch.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"321850f4ddeedac956e237391981aa040f85d7acafe7d9ad77843c6163354690"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): don\u0027t return here, otherwise an exception in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/EventBatch.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce49d145b44d5c8fc27dbe5c1baadb50c54d62617c879b6e42a6aea9ada596d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): VM doesn\u0027t seem to like nested try/finally, so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/EventBatch.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"803ce8845d4b7b753c5577f5a029dadca47cfb48242d93b1ea17356b72612cc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Reentrant calls to wrap() are kind of hairy. They \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/EventBatch.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"6210589efd9b3de03b1f64431307b7b687622e5d941c65cc1827605a95cb43dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): capture language issues around enums \u0026 create a canonical \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/ChangeEvent.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd5b4cd884a6d8e600feac2f165e4220c8806824d6a6b50f0c6b3545df23bdca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): evolve this to track changes per property. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/observable/ChangeEvent.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6dd594f58a5cd9c29a84e8076588d59dd16936ad7970ca83567d5a73545bc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Move this into Dom. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/TouchUtil.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"facdfc064c376951c3eb1358d648730e26f1eb0eb673560833598388e1d1586e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): keyCode is not on MouseEvent. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/TouchUtil.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"044e97109e4039bc994f326590d5d160b0a394ddea4f5e789a3878f3bf926a3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): make customizable by passing optional parameters to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/TouchHandler.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0fbb65b0224aa63fdf174f506b74deb41c4cea11239149c03216752b48bc9cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): I don\u0027t like having to initialize all booleans here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/TouchHandler.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f13b769cd6946e19f3793a2d5a463dbb3696152d1669c8ffe4f7e786dcdabe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): why don\u0027t we just clear the lists? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/TouchHandler.dart"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ce259b860c5d83f39236a28e59eca96052eb826260cca91e9cb1b5d0a05fcd9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): why doesn\u0027t bool implement the xor operator directly? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/TouchHandler.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6b3a0490da49d7adfa6e801598b28d4bb68cc718373c42898e6c1708b49c157"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): remove this static variable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scroller.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02015b292449e415836e1ffa316ba63dbb726ea70eed29cae13ffa699794764"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): the function type is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scroller.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"de5d139b31175f75ec2bf9b94476246ff87df2a7ea2dd97d7664a7daee094c4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): this assert fires asynchronously which could be confusing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scroller.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"4847833f1b423ca165fde7c4b5034acfff4341586a4a4199fcd6070872fd3296"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): these should be properties instead of get* methods \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scroller.dart"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d7990ac60088b6717665bb154b00aad2d3fa290a91f1bf7fa570cb2780f3926"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): Figure out why this is failing on dartium. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scroller.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"a351f7cb70d0f25ccbe31930f472b3149b8e9694563822501c5833d6400c8d37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): cleanup this class of enum constants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scroller.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"754bebf8c65f1f2c73f87d50175c7c88ebb068fb4505dfd58e9f2275960c4d35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): move this helper method into the DOM. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scrollbar.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"b015d2e8ef25b2d9cccbdc433c73abb80717c9dacc4a52d46c47de10d10b1458"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): remove this once bugs are fixed and enterDocument is only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scrollbar.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"7af240af49a9e6e6adede058fd06c2d2411e39e69836915c53fa2b14c9a311a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): rather than adding all these event listeners we could \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scrollbar.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c0442aa9b9f54cf9a7ee9c37d5df7149d41d7d4d9c5c22457bce24f251267f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): don\u0027t steal focus from a child element or a truly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scrollbar.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"c23cbc193f1a36d02e9bca39ad87201c1ed29cfe0d91e1867d1c750f262e6539"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): make scrollbar less tightly coupled to the scroller. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Scrollbar.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd6431de8bf19b99dbe13c0240ada18e0de07403b543c0041fd77a2f7c6d6e73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jacobr): this class is obsolete. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/ScrollWatcher.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"308b09c80f3f681fe097af8de66912669042ed2769cbc7c53e7521b2de0018a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jacobr): simplify the code so we don\u0027t have to use this solver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Momentum.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"79c9270f596e60d6d9ada74dcf62b49e9176c9fc3ee13c56877ffcf487a9f695"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): pick a better name. This was goog.math in Closure. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/Math.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9446270a32081c13295f2114c9a5db20effe42f433d41ee730f04eebfd152ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): create a helper class that simplifies building \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/FxUtil.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b8833070f43388b41f301259ffbdd004706fd6b3460385cdc65e0d67b52556a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Test this version that avoids the nonstandard \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/FxUtil.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"63c64148d2f576b8adb9f787ed06e6aa0ed9566e7f3645a776a289ae66935e5c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): this remove on focus behavior seems really ugly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/EventUtil.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"f996f9bd91306c1817ef23aacbbda0237f735272ff97d77b646b05b4fa723173"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): On Android, we get spurious click events at (0, 0). We \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/ClickBuster.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"55fac0fd52dc35361cfa9ff06d83c1f8513d61f5d6fdd0b08814b4071b54a216"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): implement a configurable logging framework. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/ClickBuster.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4aeee1a637213c810ea71293051031ce816213bcff805749de42bfd30f668f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): implement a configurable logging framework. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/touch/ClickBuster.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca9252dcd601e6036e11f3941695d3fd673ad131d63a234600d132fbaa0e6ca8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): consolidate with Uri.parse(...) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/Uri.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"48968e155cf27e7370c604af9aade386eae2c705672cc38c6a91ee281ba718c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hiltonc) the name and value should be URL decoded. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/Uri.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"37829ae1755b986f6ab5c945069889dad273b7cc6fe14bec9c93b6b53d34c27a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Get rid of this when the real encodeURIComponent() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/Uri.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"c87c244f961afc4c07796c0f94c0f69f50410cdef71158c46b223bc93ff8ee8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Added b/5096547 to track replace should by default behave \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/Uri.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a733ecddbec25d851bc7ece0e3e4f8560f717137eb55b514e3e26baf0f1a4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): replace this with a better implementation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/Uri.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b694b90b1472ba7243b748b16523969d75be6ef6016d227f2ca7ee335b4aae7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): corelib should have a boolean parsing method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/StringUtils.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"84cb3ccd1ceb43a348745d742f52a8b12ecfee3d2f4e69b5d8f578ca157bd6ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): localized strings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/DateUtils.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2681e4f948472166a6b7b5400d750639474f34f94535ddb3c417f981f5a3bf4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): workaround for missing DateTime.fromDate in Dartium \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/DateUtils.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fa4058e4c8d9a6374533230a514c916dd91761cd11c69c3848f0256950d22ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): TimeZone is not implemented in Dartium. This ugly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/DateUtils.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae52844e44bf9609c4178604e3619a9860a826456c59e8193f563444876a9a99"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // hack applies the timezone from the string to the final time \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/DateUtils.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5888b71de9baa3d58ae8e2ce037795f59c07658d81eaa63bb922785ce373403"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): workaround for DateTime.fromDate, which has issues: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/DateUtils.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dcf5cf269c644f9b58a2b27a70ace4ef5dfcbe1c65088afe0beae77c0cd439d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): locale specific date format \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/DateUtils.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9b950d41d3ed5de483203fa2b91c92bf35267a43147467a8a2aacf4dee7b1ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is a workaround for unimplemented DateTime.weekday \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/DateUtils.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd59d773c0c3820bf9ad69725b89b96a7c844e3af07678669b7722a0e6dfc87a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): should get 12 vs 24 hour clock setting from the locale \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/DateUtils.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1ac32440e5b75bf1a8728ec3afefc0f78016a07e7dbbf279cad78b693337d0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jmesserly): make these top level functions? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/CollectionUtils.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b7f265a4e4b7de7292a89cb1b7671ca4b19c087f48a56f56a6577431d6ba5df"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): replace this push with a call that ensures capacity \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/CollectionUtils.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2e7b13ebdf2c30eb75e10608d4b65450d06560d44cf565304c82d60438c332c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we won\u0027t need to do this once List \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/CollectionUtils.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e62435324b6f261ee28125cbfe6a11a1f768ad7013b33207debb5785b6584b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): shouldn\u0027t need to cast after testing instanceof \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/CollectionUtils.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b1794f74e557d3ed2a1a24dd7477a0ac070eb572f2d3fb0969aee8e383997e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we probably don\u0027t want to call the key selector more than \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/CollectionUtils.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"185f3643df0b6a7894d6fe893b73b9089a8e722982820d94e93e02222338dcf8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): something like should exist on Map, either a method or a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/util/CollectionUtils.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"c03580b14b056eaae3ed937a9423fe6ea44f803f0bf17cd2060bca08e391b0a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Note! This class is undergoing heavy construction. It will \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"1422a2ffed671cb14924bb8eaf206e587fc8b5036b6a9afb71ebba97385e6511"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): instead of tracking this on every View, we could have the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fe76b102a7151206fad10adea6868394f31e64a9adec278861f571c00091b38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): We should be getting these from our CSS preprocessor. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf3cc0626bff3c0b468bed1fd6718ebf07d6dbdb75ecbeee7725e5dec22ce1f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): Consider returning a somewhat typed base.Style wrapper \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a81666b1de53d9620771df651417016534160a675cbfcf1463c8c914c33334f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Get rid of this when all views are refactored to not use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5584e5bcabcc4bf2aa66a8c4f8942813108eede732bc34e420b1ac504b889d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is this too expensive? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"9be7f4c1125a318648e65b23298102d58061c487a67b2a50cb7d410958fb9e49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): make this method abstract, see b/5015671 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ee3f73a7612dc23e62e8342b9bff0b54eb765fad949b2207f90a492c02828c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this isn\u0027t really the event we want. Ideally we want to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ebdf254631276eaa9c57fa4928caf4ffd0b36038d7c4529c4814f6d0ab72ce6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Should keep track of this and unregister when the view \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5a188a001133e6adeeb33db3d749b13831fa914763a7a1615187629604be9fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Get rid of this, or move into a separate class? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"90704776cf0533216158b348be160f11ed7e744a6266fac3beb6e9b3f7f56d89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Should render child views here. Not implemented yet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed7c151ed66f881c3385720de1ec33c7b04fd1b76a78abaf68e23c777df570a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(10459): code should not use Completer.sync. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fd4ae2c84466901ed542c7d818845016764fefadd978ee7be77885b873d8924"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(10459): code should not use Completer.sync. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"7197eb036305321ff5e845c69c73adca67aefcbf804c464104879a50e15885ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this logic is more complex than it needs to be because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/view.dart"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"9878727e44761182f41b2c5479daa41739036f803b1fbefe537abc46f177626e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mattsh) - move this to a touch mixin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/SliderMenu.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8feb68dca3adb3cae2c81608aa395c98311ce284f7fe9d1e74a79abe43b1e72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(jacobr): too much actual work is performed in enterDocument. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/SliderMenu.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"b84dfa583a5765e1c6416dc5366f735529e9aca330319076bcbbc268f7b07d9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mattsh), abstract this somehow into a touch click mixin \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/SliderMenu.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"5964e925655252eef7f52130ae1d6ae1b47b4d1cae45cf3d2f996426a9f4d1aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): workaround for bug 5399957, document.parent == document \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/SliderMenu.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c803aba09b8fae5debfc00b11ae69e2838faf90be75d2bafd0d709673192ea7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this was supposed to use the somewhat flatter unicode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/PagedViews.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3ef1bf4052dc0fa721162af649fa8a62f0a35b0b5e2d5268ac20de4bc679c7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): if we end up with empty columns on the last page, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/PagedViews.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"9088e9a1d010ea16d289b88d61ae9f78d1a2e8ba9e8a20c8852d5c67332e5540"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): would be better to not have this code in enterDocument. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/PagedViews.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0d42a89d8e35e573127972ddef587b61fdb73d5108c68bad8e77600af660c5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): Safari 4 has a bug where this property does not end \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/PagedViews.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"51edc70396f5bb7b5472ffbb8a032baa70a8ad21e4a3d1f35cb14bafd89c1a86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): verify we aren\u0027t triggering unnecessary layouts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/PagedViews.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"baf3beeed58ed3f279edeae744546aeba881dfc71dc2017b6cb74fd545f7ebc4"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hacky: make sure a change event always fires. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/PagedViews.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"1001c35dd057b2a0892f88bf395a35882317288de24d06ead457ee4c3dc0e2ed"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hacky: we need to duplicate the way the columns are being computed, \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/PagedViews.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"f15483308364c6e0bc9118bbb1ec5b694698fa829b65ca9b923c5704efb0a581"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): handle splitting lines on symbols such as \u0027-\u0027 that aren\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/MeasureText.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"523e3f74917b25bdd66c4eeb6c9d14df73ef7f89bd343479547b40b4bcaf79c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): we are DOA for i18N... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/MeasureText.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"39c05b4a5bc39aff24c81d40565c47c2d4695c87f1c14a5183232d5aa8c83ab1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): make this optional and only add characters until \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/MeasureText.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"b69115541d966599aa28ac5ed7de4212f8c73d57b44a2b77d184502aef2da4f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): HTML escape this text. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/MeasureText.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a956579fc4842f20f365f8b2a05d94ce7f4f77ecd7763951726d1c425c13e97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): optimize this further. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/MeasureText.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b63498d3fedbd245ca20f4ee815933527fc9744af1867ab5e31735d836eea6e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Replace the line above with this one to workaround \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/MeasureText.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"a499a56d6aa769ba8871d6dc39448e92214012cfd5645ee851deece6b24a62e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): some places use this property to know when the slide \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/ConveyorView.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"94d8d1942e8e16f1711132eced60374e10847fe14eb54a1aedf064de910f4055"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Should not be settable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/ConveyorView.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfcd4df6588a2264199e668acf8b7ba19a4f9d15ee40d361979e5d68a8fc20a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Hackish. Should use a real multicast event-like class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/ConveyorView.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a475b255d2258c4e29948d23e60cdcc7a75c2f818cd9f900939650f4256048a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Have to do this in render() because container doesn\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/ConveyorView.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"29c1e26923bf52ed4f2009a83fd6ed4caacd5730c8c4fe9f132380d982f4d542"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): modify setTransitionDuration so the input is always \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/ConveyorView.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"a91a700f1139a5e77d3055a058d59721d1ffaf0e73c25c7a8dab419e27478a7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mattsh), we should set the visibility to hide everything but the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/ConveyorView.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed314af9d4aea9947b5375ae5bb6a88bc06512e3886616d4e6549807b311b11f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Allowing this to be public is gross. CompositeView should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/CompositeView.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"704e0df9e7800366217c3564e70e5fff8c048fb0d1c2ca5588c988344595f76e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Container shouldn\u0027t be null. Remove this check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/CompositeView.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6832f85d19a4c9aa47be11ba7ee89423b7548094619966651b0acfa8daf24a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Container shouldn\u0027t be null. Remove this check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/codesize/swarm/swarm_ui_lib/view/CompositeView.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4023edb6dcfc935f75f7dfd424b80d217a3946ca4a78fc6dd2fabc9823b7af9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): reenable, this commented test changed after porting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/deferred/inline_restrictions_test.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"70a710efc65a11edaab3b7c173abe3e61ee70cd03a45e000628caf46344ec431"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): offsets should be fixed in the FE instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/deferred_loading/deferred_loading_test_helper.dart"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"c866fa4a699399fdd26a77583d50530e11c2fc75d7f3aad7d9adaf756872411e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): remove this indirection and move the main code here. This is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/deferred_loading/data/dont_inline_deferred_constants/main.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"8af318c3d41123cb34478aa6451576749d2aeb97bedf82d9c6b730fa23c6d185"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack to avoid inlining. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/deferred_loading/data/static_separate/lib1.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e063598b7c918b7b1c8a7c289e4237ac0ba6d8b74162fccbf0c5bea25d71cdd"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack to avoid inlining. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/deferred_loading/data/static_separate/lib1.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"25b3e377a7a1929f887880b7da071f7b0c18633b1fe618e6ce0d2f3724e4e5ef"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack to avoid inlining. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/deferred_loading/data/static_separate/lib1.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef317738aa0c1734b82c1e632b135caeacb66b44af98efd0510311acf5d9561"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack to avoid inlining. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/deferred/static_separate_lib1.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"de7e88632cc112375bfe875834fef42fc25d1b1f8157d08fbd3a93f3415756bf"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack to avoid inlining. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/deferred/static_separate_lib1.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2ca4a2afecefca7722b4151dbf38e922fda97fc16a97b74c67bd1de4cde4952"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack to avoid inlining. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/deferred/static_separate_lib1.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"feedeb37732986d4a5578b05a9a5fdd3fa37429b5e937b06dedbe12105aca759"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48220): Make return type \u0060Never\u0060 when this test is migrated. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/end_to_end/exit_code_test.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a11219d32813edd739e8e79547d941f31807a0c292ab3f36edab974f1c0c2ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (sigurdm): Empty closure, hack to avoid inlining. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/end_to_end/dump_info2_test.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"a02a58296b4d5379ed8e9ddddf23f0a758b7f85aa129be420288a9a759952f06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the quadratic cost here. Some ideas: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/equivalence/check_helpers.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"0742f10b74d1ff839144a17f8b466e4d924212178d5964eb9fbffc870c884cf4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove \u0027inst:Null\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/impact/data/invokes.dart"},"region":{"startLine":818}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f75517bbcf29dc5ab2ca7711b2282805fb9f23e7d216be309b05ac49f9c3a6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we record that this is deferred? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/impact/data/constants/main.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b62bc493551ace3001dccf7a5aa08e6e58552010eceaba353afb1639be94ac5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we record that this is deferred? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/impact/data/constants/main.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"039a02aaf89071c51516d52c42814b62be45ace50dd1e2096292f625e019749f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we record that this is deferred? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/impact/data/constants/main.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"07fd7b1058d7053d696e08add91d5c67e50eaaa3ebb15d8210fb666b2a78da26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we record that this is deferred? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/impact/data/constants/main.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"504171f7fb2da0825f4bd30638db2cc156eadcfed04d8ed9001db4cd6983d3e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we record that this is deferred? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/impact/data/constants/main.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1ab7c12f69d53445ab3a8287d6a9ece1468e0ecc26828811d190e1595d67f4d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The mock libraries are missing \u0027Comparable\u0027 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/type_mask_test_helper.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd4e5dfe1283a605f676c5fca605df9a2a299f770037cf529ac2215a886c6c6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(37602): Imprecise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/type_mask2_test.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"adc0fc2a1e5c901f19a630fa30ba14f1172bf0864b50014b3ff8e9b1c11a7714"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(37602): Imprecise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/type_mask2_test.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a81045a4750d62929ef80b088a1d7fb3b170e998a2bb3996884a68af37d22d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(37602): Imprecise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/type_mask2_test.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"43a63f627a8abfa9ec6b718fc84b691a3ac777acb4d8de44a417e3ef65a3cca2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(37602): Imprecise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/type_mask2_test.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ba4f26de264af92572b7013fe63885928810d676de670be30c93960a9f84581"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(37602): Imprecise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/type_mask2_test.dart"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"44a7ccf7cb12a6075d3a907825e9d7a90d8faefe651871946841967aff4001b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(37602): Track down why \u0060Object\u0060 is directly instantiated: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/type_mask2_test.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b4d2f3c4b21352e98eeba6d1311c90453f9b0ba311c0e14380c33cfe492ee6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Reenable this when we don\u0027t bail out due to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/map_tracer_test.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0d821a0289986868790a351265035b557b71fb15f3d3a76b41f49be9b3973f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The arguments should refine the receiver. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/refine_order.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"90e5e358bd18e6edc08bdad42c849c6604eab8c92b748fb2014b934ac8cf010f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The arguments should refine the receiver. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/refine_order.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a0955afc8f2a0012cd85ad12a0bc00655c8ae3543d8a038398802044a3dab36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The right-hand side should refine the left-hand side \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/refine_order.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"90166c566c007f0a3a08b4bfb882b2d9bb5968630597d4c15832d7a130ae90e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use negative type knowledge to show that the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/logical_if.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"2019136e05903dd604f250498577cf9a4a89ee5313bdab5f09b25cbf353e5147"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use negative type knowledge to show that the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/logical_if.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d1a41baea04be4dfd8512231c3b09bc01986f57d4a95c188d6d03d0b25a33fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use negative type knowledge to show that the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/logical_if.dart"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"db5227df2a5abc80dba39796b14b10c63a4991324a92bae90be1fe3dc9c33095"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use negative type knowledge to show that the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/logical_if.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"69c1f02673613a717bc31c89fef038f4087c2dd545bcdd694fb131c3fabe8a47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use negative type knowledge to show that the receiver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/logical.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"891ca73cc0237706f14599aeb34a369f6386efb9c7e2c1091e8c810096d26b92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use negative type knowledge to show that the receiver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/logical.dart"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"cff593b932ad9377db07ced8b8c1f2cd3f766cbca3f417e87352fe86f19383dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Fix inference for spec mode. List elements should not be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/list_tracer_typed_data_length.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"92c414a6be60ca6ce6c431740e654f3f840f1e990d1fb26adcaed9ab7d6b6bb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29309): Change to [subclass=JSInt] when 29309 is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/general.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"958c287050d2ee5f5abfbbd8840426c3638a5f50edaa56953d3a89673e27fe16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should know the type of [a] here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/for_in.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffa2d5f5134d1e24c585788ca58e4325c26aadba1c4ccbd58a39f891df76a2e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should know the type of [a] here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/for_in.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6a2437f64c06f7fa73992f3d9a8347d7010a6e073008e6ae1f145e44f195f91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should know the type of [a] here. Even if [a] has \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/for_in.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"f82a529255eaeb8faf1a01ab4304cc401053d74bca345cd73a040c7e5148717b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Investigate why these include \u0060null\u0060. The ast version \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/data/field_type.dart"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"af6a54038e02d015f9924a4c41c196427a1fb855b53f5390a7faa3471f436279"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we infer this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/inference_data/cannot_throw.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e5115c65f26242c30f22a41700c568fb691455a84cb6e0e421ad84def365878"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we track instance calls in loops? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/inference_data/called_in_loop.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"278bfadb3c6397dcbd75a8f63452f8e9154bc95cd6c134872d5926b521c3251e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we track indirect calls in loops? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inference/inference_data/called_in_loop.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"791d92aa2671d3d0b08a1b03af47da73191bf560d4d3b0d0a693e06e7a838ecf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should the type have been Class\u003CList\u003Cint\u003E\u003E? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/inlining/data/nested.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd96d031488f0d7b77447091d572e5dd79ff35fc7ee2da38e66d82d1857fb0b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(redemption): Enable inlining. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/jsinterop/declaration_test.dart"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ba4a2438262465261519321dc2c46a545bbcc97e588c71e2b2ad1416d0d4a05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Inheritance with different type arguments is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/model/subtype_test.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"aecf8ddc57f7e68a0c9e5cdde94f764b374fa860ee594c03513d6d62980d854f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Inheritance with different type arguments is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/model/subtype_test.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"58939555d27d448a3397b80afe0989078b991161d9a2ba16abc885b5613932dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34174): Js-interop fields should not be allowed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/model/native_test.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"723c5c7e0145e713005fd77a567b0271e58f072a7fa1b156e5c12ec0a8bec83c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34174): Js-interop fields should not be allowed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/model/native_test.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"8acc6487fb061b55e1f079740b6b6d4d0c0dae66e16bf315f8e38366721e8158"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(33834): Non-external constructors should not be allowed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/model/native_test.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c21c3fe609c3d83f004eff5bd245c5893d06a63a84c2946deb8501cef816215"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(33834): Non-external constructors should not be allowed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/model/native_test.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e20ba484c3a062793ba136124f1ec891f140071df80e1db7b8c776a41b4832a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34345): Non-external static members should not be allowed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/model/native_test.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"c64b6bcfef7a81bda45b4209fc6a0678a5099527810d786791d65d2e6d3cb681"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34345): Non-external static members should not be allowed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/model/native_test.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f1a8a15df410f994dfb37d4e7367846862b3b09b7b29cd8007220a80a1ad167"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): change these tests to check that the new rti medatada \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/disable_rti_test.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"eca7b04e5826223233ae68e4163c81b07c5c86da2930376bae148be0ae806be2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Specialize handling of \u0060this.runtimeType\u0060 to exclude \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/data/runtime_type_equals4.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"9507a30e71e1b1e5464385055287c47fd81b700ae8a03e471d453df8f6e91ce4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Specialize handling of \u0060this.runtimeType\u0060 to exclude \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/data/runtime_type_equals3.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c62bc70185ad35320b1f26beed5eda0bd309b78048a6346c783844b26e7900d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Specialize handling of \u0060this.runtimeType\u0060 to exclude \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/data/runtime_type_equals2.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ffec88d637f6c31717d3d1f716ba99e416eab5a1ac6116faffbb8b3e4474e62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Specialize handling of \u0060this.runtimeType\u0060 to exclude \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/data/runtime_type_equals1.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bb831c7888a9f33ba5c73c5654266ed5c5967b11a6882c2b9f423e1a9cc3e38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Currently only methods that use class type variables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/data/runtime_type_closure_equals4.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad4b4ab3980cf697b9e9e3c5b14572bf8c07434833f814ba27e5b110bc399ee2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(47054): Take closure signature into account to handle equality of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/data/instantiation8.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9be4609bbb1bf6247e2e3b664b7083f782525e321bf4f3ef995ab82aa362cc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need the implied \u0060Future\u003CB\u003E\u0060 test in \u0060A.m\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/data/future_or_generic.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd83ac9d668b0b9b69e2c6e94c8b7a9df2ac34cf42bb309c0b6c4b34161cb707"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Optimize local function type signature need. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/data/function_subtype_local5.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fb036e4c00bb4e71d8ca14b1179789a6c970a5fb131894d313cfbcebb72f243"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Optimize local function type signature need. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/data/closure.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"9387691fa754de74825904266633a15aed69ba4fad1092b9cf08128a89de959e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,sra): Find a way to check parameter checks on static \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/emission/pragma_directives_static.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f61680c4cdd33a915570ed04da8777e01cc2e8120218c4fec890c115f9a17f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid generating duplicate is/as function when multiple \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/emission/jsinterop_generic.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"159a3d486c4996483a6088496b66f8d166def87c8b457740a0f234629abaae13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need the implied \u0060checkedTypeArgument\u0060 from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/emission/future_or_generic.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f7bd78e220874b26d5c3d661aa81eacdc66c25152ae448e30cbbc6e5b0704b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The signature is not needed since the type isn\u0027t a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/rti/emission/closure_signature_unneeded.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"381ce2cc0ae730aa66a57cd5ac6c2dfd514833a461e03a7bd1cf930961b889bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(natebiggs): Check dump info diff when the results are aligned with and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/serialization/serialization_diff_helper.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"0804f38ef9fd1306288d365d9e9977f00d10707032b177b2acd7bb5a97da18ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add support for \u0022other\u0022 when we encode symbol information \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/minified_names_test.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"2af9ad7af6199248078381e5fdbff772f3a5085d6906faab29d6c65e6fae921f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider making all errors show the internal name, or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/minified_names_test.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8bc0ca3d53b26493e66ee07f396347a3200eeabbe2b80992d6ff02911ade8e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle interpolation of \u0060a\u0060 itself. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/data/others.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"f98c5e387ff5da1f52bc6ba738ab2b7c498da17aef6fa91e9937bc5355f94498"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support implicit null check in \u0027==\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/data/operators.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"3557cbc57ea39a9057d6cecbee932915fca058a70df2bdc9bbf3c2eaa4eaaea2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Fix problems with reuse of JS nodes from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/helpers/trace_graph.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"6caa583b00f867d7b57e3c1a6bbdf770b693912d340bdea4c108e12e0e15761e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use [verbose] to avoid showing diagnostics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/helpers/sourcemap_helper.dart"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfe9357c928505786fef065a4fc1d68382b69e4917e0e482d25a877ef58ee376"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find out when this is happening and if it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/helpers/sourcemap_helper.dart"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"de969f2cff4910a1629ea8280773a6ac6d0f55033518d447d6caa2e23c2c6827"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Supported multiple output units. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/helpers/sourcemap_helper.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"b22570ca81d23f2b1a008d79af51fd59bec8234f71bde66db81c7c31549c968b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Supported multiple output units. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/helpers/sourcemap_helper.dart"},"region":{"startLine":590}}}],"partialFingerprints":{"codehealthFindingId/v1":"12bd1a1ef8c83ff036e2067f54f3581fb7033682b8f73bea5b390e0a9e045e6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): should this be handled as \u0022other\u0022? (the identifier appears \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/minified/is_not_a_function.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb73c60365850f45971a4db076258acd73ad6983375cc979a892db3bdd7532d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Investigate why kernel doesn\u0027t point to the body \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/stacktrace/sync_throw_in_constructor_from_async.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"f22ae1c133ef79f65b4298a7fee156c993c9931a2d9ac96b346d37b15b6109fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(36841): The above entry should not be on the stack for a null \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/stacktrace/null_receiver_inlining.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddbc91badeb67f4a31051d597801856aa02b75b41826767051a8760ae9923f0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(36841): The above entry should not be on the stack for a null \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/stacktrace/getter_inlining_3.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e6a69a6f8e29023f4ee4a95867cf6b8c294a263e8e819c101f40112bf89cd9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39998): Remove second use of \u0027m\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/stacktrace/null_receiver_inlining.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"e691020755bdc33c55d4ad0117a0af1716970b53ef04275e9addee1355f0904c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39998): Remove second use of \u0027m\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/stacktrace/getter_inlining_3.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd34446341d5f8561cea61d02dfc32ecfe1ef4e30fb2dd79b9a4f1e3f9515fae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Intercepted access should point to \u0027length\u0027: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/stacktrace/null_interceptor_field.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"941c40c21ed6dd4736f812071cf204732525b5a9fda7f8e34ca63eb738602f1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39998): Fix this. The compiled code looks like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/stacktrace/getter_inlining_baseline_1.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"501d13b85909de0e4353225dcd80139f5c867994f76b6c4aa269b2c0bde67a08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund, johnniwinther): change default options now that CPS is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/tools/diff_view.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fb8cc3c0f1cd8454a180b931ce9158a07c99ed7866f7cfd6fda046dd2619258"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle kernel based elements. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/test/sourcemaps/tools/diff_view.dart"},"region":{"startLine":948}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb61955e3b7510107b81218b1aede5de80b2c68d3a12f690737e0c6f14aed1e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add better error messages, maybe option to retry. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/track_memory.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"824c99ff51e8066d6c16181bc37c53ea27af8cd2d26bc51d15d9d24dd1b94bb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): remove this dependency on libraries.json \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/modular_test_suite_helper.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"13aba7dc46b2d576580bf6e39e5c850d01a995c14bbc48f4879d86ef2c7e9445"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): remove this dependency on libraries.json \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/modular_test_suite_helper.dart"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a654ab7aa868c5239225fa8869e95bbeef1a8d73c1029cae49127176d6c4d3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): remove this dependency on libraries.json \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/modular_test_suite_helper.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"04c2203f03f9d55a1bee815d3ce01fd51329c441237a66d4c7c25b1d615f1b45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): This is a good start for a fuzzer. There is still work to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/compiler/tool/graph_isomorphizer.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"5106645e5e40b53bab0505bad4f51627e87bd3aa65f6d64d71d27b75e6b1b23e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This class should mostly be shareable with the LSP version, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_stream.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"26778973198ddeb0bb10c1d32b7c56c49fa22c29abefdc69375837d975e7d389"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Review LSP implementation of this when consolidating \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_stream.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"723dfeb36f06aa5aafc49c8e9cde9caa8f349aebea0e08de3603e3da683cb8c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this if/when this SDK issue is fixed: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3d05e24add990150a6530ce72609cc36281d1aa3f058a0379ce1a7671a114e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Should we map macro-generated files in the same \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/protocol_converter.dart"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f03cbc044df6304343b092ce0e45f5602e03f85b83726f33d13e6c2a4e3e196"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This class has a lot of overlap with the same-named class \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e56ec005f9b0a6733ff29eef1d6b108f866930e9c469d5291e9bd6cc4e878ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove once https://github.com/flutter/flutter/issues/156793"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc518cc3093ddf6bdda0cf5962f03efa18c88141f460d0f98fa473bf8a5196c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove once https://github.com/flutter/flutter/issues/156793"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":493}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4016fb3e6aa1799b328a0eaf023260eecbd8fcdaf82e6484d09b22272f939d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove once https://github.com/flutter/flutter/issues/156793"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"592563ba836eca7b631c90cb6d5003895ebbbf76622a0a4a8ff6948e6f0125f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove once https://github.com/flutter/flutter/issues/156793"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":1006}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f104466c3483a41c5970ee614bc7c139ab02bdf11829d28bcd0109ec21d355c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Format this using other existing code in protocol \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":1049}}}],"partialFingerprints":{"codehealthFindingId/v1":"27aa537c8eabdc9a6a0cd17ef78b0078f777bbf82a6add41779e9d1824d9bd1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Consider caching results for this like we do for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":1481}}}],"partialFingerprints":{"codehealthFindingId/v1":"58aea03e081c00c65570e20c8e365cc0b95331ebad9b9cd8438a480ba921f178"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): UriConverter should be upgraded to use file URIs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/isolate_manager.dart"},"region":{"startLine":1709}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ce48ed30d83025075b4427f1a7ef68491dd39d6f63f6f47367bf08d4afe48f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(helin24): Consider adding an error type to DebugAdapterException. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/base_debug_adapter.dart"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"3212f9d499234b53b9b7025a63cc5d1219a0b451dad6b0a14410cf9864e99fce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this method after Flutter DA is updated not to use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/mixins.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5430da2c4aed7666b2e737ee224eee1e40da45d2ad14359d5d5fb549569322e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): In Dart-Code DAP, we first try again with sigint and wait \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/mixins.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"b93f359fd32c8bb7d151564d228c705ea787fde6cb93036ac61ca01131f2d375"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(helin24): Make channel optional for base adapter class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dds_hosted_adapter.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1a11afce8c26b51fb4ad823ff5c72bff2de74303c0733314f3225865797fb13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(helin24): In this method, we only need to verify that the DDS URI \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dds_hosted_adapter.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"f47d10884d6a8e27a7b176004f2e1c5dadb6096380805c974a15820509d86172"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(helin24): Handle event and response? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dds_hosted_adapter.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddbe8ca0560542904519653edb87aaf35945cf0521b46a61ef42694c232d5976"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This should be changed from \u0022dart run test:test\u0022 to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart_test_adapter.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"abe62d768753a9ee2293d01d7af8bc2e701fb70279b1fed78418f86dbcf835aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Make this \u0027required\u0027 after Flutter subclasses have been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"b17e207712307ca1d0819fd74d872000fec35777f2f96ae145030b82d0efe8f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Make this \u0027required\u0027 after Flutter subclasses have been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"7754343e19088ac9daec3eff255519f0b9339b51bb70dfa001f7ec7662261def"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(dantup): This may be changed to use StreamManager as part of using \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"bda86b634c2359cc245c36b4df96be9b4901eb1e69c2ddb8f7b66121f0c15b3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Capture/honor editor-specific settings like linesStartAt1 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":1320}}}],"partialFingerprints":{"codehealthFindingId/v1":"8595e3adc1cc3a72af990291c082fd2083dca457dd49e47f87ad6d63f7f23a6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this once Flutter code has been updated to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":1768}}}],"partialFingerprints":{"codehealthFindingId/v1":"55a1319261f176def48b338c0f6a418ea54ae10f1648f44cf57cf0ae95a76006"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): We may need to expand this if we start using \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/lib/src/adapters/dart.dart"},"region":{"startLine":1776}}}],"partialFingerprints":{"codehealthFindingId/v1":"21c3fd0b31774b09218f97b12d5de12bf77cbfb06750660b5b73708115fad923"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): This setting of Directory.current can cause \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/test/dap/integration/windows_path_casing_test.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7c468c24fad02952cba67c7bdf95129b1f62013a3bde971b06649c96ec62984"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Change this to use the dart.debuggerUris custom event \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dap_adapters/test/dap/integration/debug_test.dart"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"025753f7ef87589d567d54e1970c3ab74c045ad35069dd11e935d0b49c3dcc55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Consider printing constant pool before bytecode. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/declarations.dart"},"region":{"startLine":1027}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2309ac08465f6bf943cd52c686d052d0bc620fce46ddc3663e292228d42287c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/63225): Remove this once flutter is migrated"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/dart2bytecode.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dabb26e5003387b06a2fff9d1b1a8c7709174ca2d7b8b8b1b61f0afca79f204"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/63225): Remove this once flutter is migrated"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4cd41b9485f3a33d3fa1b2465ea5d0294fd443a6e7e8ba469fecff984a2f4ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/63225): Remove this once flutter is migrated"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/compute_kernel.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"70bfe031e9550991bfdc75aed32de536c5e86865c422d42410a89447319de41e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/63225): Remove this once flutter is migrated"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/modular_aot_compiler.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"7045d415f5e706a36f23d710841844d57a127c0ece946d09084a77f150d97fa6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/63225): Remove this once flutter is migrated"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/kernel_front_end.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"91334cc9dca52c4cca7add325c61122357c750fa2ca56323af9e5fbfbec8816f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/61078): Use static type to avoid runtime check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb838ef938a0a0d43ee189d9849cd53af1b86b878a491e10376180373fc280e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): relax this constraint as PushInt instruction can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":1389}}}],"partialFingerprints":{"codehealthFindingId/v1":"241407b4f17d0cf6c5f24333e540a858b5a5f41fa8b8b9af1fcfcd6848eac12e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Optimize type arguments instantiation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":1564}}}],"partialFingerprints":{"codehealthFindingId/v1":"74cc4b467cf14e0f70627ac30a94a632c11bf146f10709a6365bfd4466552046"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): generate more efficient access to receiver \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":1689}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4675d9aebe540d7a967e2df35ce9bba5628bc33d19c22c89687f52ddc47a7fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/34585): use constant evaluator to evaluate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":1724}}}],"partialFingerprints":{"codehealthFindingId/v1":"45780050d65641434718e46d27b04c70b9b9e797e2e5a48dfb00b922f172f14e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): We need to store null at the original parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":2416}}}],"partialFingerprints":{"codehealthFindingId/v1":"932267d37d51236f78ddb98f7ae9c86038e853ec1501243de86b1351b4b2b842"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/40813): Remove the closure case when we move the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/bytecode_generator.dart"},"region":{"startLine":2440}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d94346a0abc8943a78e67816b54e0b74b7872a1a184c784d3a9de66a5a8ae8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): generate compact forward jumps as well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2bytecode/lib/assembler.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf525e6e3eee78ba20a7686661f1927a1beb4104efa8d017af5173925852c2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lorenvs): Implement this conversion. It is unlikely to be used \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/proto_info_codec.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a35d1985d4e7303a2b310586cb723489163c99b9486b4337312e02d833cbfe0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lorenvs): Similar to the JSON codec, omit this for the default \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/proto_info_codec.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9911db10be676f32ca74a643bd309ef80a50c682edeeb7021c94fba7386a88c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add unit tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/json_info_codec.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"2524d8d00b4c5020bfb7036a693b67a5a2a76e29e9293af9d185f0d180bc2fca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Since only the Map values are being extracted 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":"pkg/dart2js_info/lib/json_info_codec.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"75583e6084c0a9c1d6e653ed5c57e62238e2fe79e754e655d2899b4a0749648c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): Revert this when the dart2js with the new codec is in stable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/json_info_codec.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"1728139c21ed41e83f2ded49ca00b641a34007aa5a2b6afab08ebbafb095ccd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): Revert this when the dart2js with the new codec is in stable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/json_info_codec.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"43564c72ad096603df0cae81a525de4df0f5bbbfe47dafc6290f6785b768b6f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo: version, etc \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/json_info_codec.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d24b739c69f2e4be9d9c72eb34e5b37cd2f4e7e3b5ad4852aaf6fa2b4cb01d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): Omit this also when outputUnit.id == 0 (most code is in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/json_info_codec.dart"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"a637d7d0922e4f53bdf151b8ddbbb39c84dbf92125f55b295e21b8d296b94249"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): change format, include only when abstract is true. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/json_info_codec.dart"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8f4993602fca24750dad9f6ce566fa4407ca8694d5b6792e3609fd44d27683"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): exclude false values (requires bumping the format version): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/json_info_codec.dart"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ff0d33464fd1eb87def7e063c8d3386179164ad12c7e528e6239d2c0b9d9e1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): It would be nice if we could use the same id for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"16af847f21e9966f1c169ed0cc4809c78f68f152d268d64885066320a79c8c5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add more: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc2b0de420b11fe4bde4fa944c7ba2d70e43a2244c1d2aee17805bac0de861b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): expand docs about canonicalization. We don\u0027t put these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"285dcb1cbdd2d1fb7423b5530c6b8ca80cdb10c71bd9a02f57a6d31b1312f3d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): use a different format for dump-info. This currently emits \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"43fb80077e15e8c5e87043e59f892cf9c27a3f22856a36b5b1b56733e90c22de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add here a list of parts. That can help us improve how we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"35150890c67e8da60475b2573670bc40a80f5d1602247542ea0a61162f194449"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): split static vs instance vs closures \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"ede001a4bd1d21e66a2621aad9cd3cbc2fd651b3de9561829580b04312b630d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): currently appears to only be populated with instance fields, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"9752c1dacc8cdafa6dd66ce2c53189966dd875451e251cdbaf8b3dafa4fda6ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add dependency data for ConstantInfo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fd993603148a38be1d0d02f18e0fa206b353d32c93481d648f5741400e2bd14"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): Add coverage support to constants? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4867e89d8030639162610372158d99cf85576185dcd6e96244d46634c41b04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): serialize more precisely, not just a string representation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc4db1a089b0b8050316cd247df0f79cbd4af355a7fff726ead7b6c94de3a06e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): split mask into an enum or something more precise to really \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/info.dart"},"region":{"startLine":502}}}],"partialFingerprints":{"codehealthFindingId/v1":"33e02da1ab2c41d9a61aa67e73bbc27c0bee9c172ff6ca23f262eead01897e87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): synthesize the following lists instead of serializing the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/binary_serialization.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c8d7189a4c8d91bbfc825f99ca4d9f8c415f27aa67c9a44bfe58ec81b035381"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): fix inconsistencies between these two ways, stick with one \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/util.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"e228184a11598706a65dd5b5f1c2ed07feaf1ea90f630e5e4745c702430435b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): create a concrete implementation of InfoGraph, instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/util.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"33a72bf7d5bfa821ebc32c870846346ba8af976dcd1a48d219eb5a8dacef221c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): guarantee that the name is actually unique. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/util.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"b159902d5b3840ef659a3bea3385856acb2eec182328e871ce4b43b870ea72e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): guarantee that the name is actually unique. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/util.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"d51465fd6155986338f4bc6e04864357e1e9ec2aa17d585a0f4e3ff6ad906742"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): ensure that the first segment is a LibraryInfo. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/util.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6110c441c8b55800d88ae32dd6a6e7b5628ee2cfdbf2cce07f416a5fffd130a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kevmoo): Remove this when dart2js can be invoked with an app-root \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/util.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"db2d4793ca2ec3f39856ad2bfcc0f3e9b73a94ba40b3477e9068c5be59b6f9f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add also a .csv format \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/table.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"a465b24f4c2fb43d8449ea44fc32ec342900210f517b6c6d25b1e51a1151006b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this should move to a separate package. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/string_edit_buffer.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"5934e77ef5809b392f155897f982c33ced31cf5c07ee3e79e01525adf4b99640"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): move this into a shared place, like quiver? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/graph.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"264bf6532386a21c769651ceb1c3b463f968f80e16efc9ff038029cca5221349"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(het): diff constants \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/diff.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"0613ce5c7f7139b27bd4ac9e685a780470bc4ef14edc193c2188d991f878bfe0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): share this with pkg:compiler/src/serialization/* \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/binary/source.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ee19c72dc135913c385a01d760b27260e6daa3b15d76306df37b0fe07eb6b41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): share this with pkg:compiler/src/serialization/* \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/binary/sink.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"3763869bf1075ca8e760ab042e31831383ccdcf200c3a54fa832beb05e8a1828"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): share with the implementation in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_info/lib/src/binary/sink.dart"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcd50c883c55aa4cfbea2683b1f228f0ce4eebceb729de5b526a5e306e90bdff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/62113): Remove this runtime decision once we can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_runtime_metrics/lib/_opaque_bool_other.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"de4a6e7828b0f7a9ab352caca3158e9f1027414fa0d90a9af713e1d77e3757f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): eventually when ddc stops shipping source-maps to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_tools/lib/deobfuscate_stack_trace.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"8efdc9f07fcb6ba434d9e29816515827292f5a6a5708d96bcd250306ccd8e827"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): we should delete this implementation and instead: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2js_tools/lib/src/trace.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9751e0a4dd33d72bb9b1856312bf2175ab8881ae9f84d9a658421b323349399"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dacoharkes): This method will need to be split in two parts. Then \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2native/lib/generate.dart"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"a45e8ee7c8cb08247f251754c8f48b7ab886431d0ccba082eb3206cc031a4fbc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Do we want to allow for users to generate non-product mode kernel? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2native/lib/generate.dart"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"abe060da56fcc09d26b3fa712fbb33c5c2dee3ee772044faae2c121db1fb5962"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This misses libraries importing dart:_wasm through an export. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/wasm_library_checks.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9b3342aab9e65af85be587f37f60941c1f7d1bd51ba04177a16f3eb52ebc5d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(joshualitt): Refactor this logic to remove the dependency on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"23b7e2e9ff52a18f86f2d0878f6558c2085af4b0ed201d339653765c1d7aeb4d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): This includes abstract types that can\u0027t be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/types.dart"},"region":{"startLine":1265}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8c2f935ba572428a68713228222ca63e6e9dda61cf3bc5561c5fc3d89d283f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): We\u0027d like to use the potential nullability here too, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/translator.dart"},"region":{"startLine":1251}}}],"partialFingerprints":{"codehealthFindingId/v1":"1593e8f552b99bf456d9e7a6a395be70fcac7b09cfa39faeaed3321ca4c784d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Improve the precision of these exceptions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/target.dart"},"region":{"startLine":676}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a5d59b9d85b37d009597895ad6d6e45e4e6d8f857725d2e08261c4c0fccf4c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): While we allow these imports for all \u0060dart:*\u0060 libraries, we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/target.dart"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffbea70be9f61f7bed9a50f0b92761cb375837ccab9a9b37b8cdeaa09b77d8ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (omersa): When there is a finalizer we can jump to it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/state_machine.dart"},"region":{"startLine":1136}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdc13a9f6bf34cf6e33ac7c4512f471a69b027c9b28c74a1b960c4f87f9490cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (omersa): An alternative would be to directly jump to the parent \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/state_machine.dart"},"region":{"startLine":1353}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2641a3c653ff9eb8a41d7694dd21d91398371b6493ccff8de724bbc29f67276"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (omersa): Similar to \u0060throw\u0060 compilation above, we could directly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/state_machine.dart"},"region":{"startLine":1375}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6213263c913f4b71e9d9205b65a1354ea7148e51c1068ca95b40d7e5907033f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Can we find another way to reuse this patch file \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/intrinsics.dart"},"region":{"startLine":1244}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa728650de464e670c16aadbaa4476e72051db1f6c01753544a07bb4a3eaa702"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/46690): Implement this for"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/ffi_native_address_transformer.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"375c26474621361c3963b2b4296861688a4ead89763e75cc461f06074471e470"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Add additional number semantics incompatibility checks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/dry_run.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed94ad08d14d4a5967627fff029e640d718ef1e1f31338536048adb9f4c5573b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We may want consider (similar to the VM) supporting a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/constant_evaluator.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a8d33f1c47115ebb44661bab6fa8b5cde1fcca5898f0160f1d9a488a9eed510"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: If we had statistics (e.g. number of class allocations, number of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/class_info.dart"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2b0c1c266339592b9fd9403c65a002ecf0282a089773f9e1fb8bf25835900fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (omersa): We could mark [TreeNode]s with \u0060await\u0060s and only do this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fdd8fdeabd3e40f14e6090f7f56cc0c5b19c70bb528f19b46f1355b2a3d243e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (omersa): Wrapped in a block to be able to get the variable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ffd7aca0f803b238514a41d2c70457f0c19ee8669f6135c6a7daaea04888961"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (omersa): We should be able to maintain the state for temporaries \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"1175bd29bf43bb888316cd109231fb79f40c13a4e8143b511c9ed750d093f623"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (omersa): Only name if the await is not already in assignment RHS \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/await_transformer.dart"},"region":{"startLine":1170}}}],"partialFingerprints":{"codehealthFindingId/v1":"397979cf4286cbe72a54ee102ec411f89e888811e4dffbce1d7640ce4bdb142e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dart2wasm): The following translation currently assumes reducible \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/cfg/to_wasm.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"5debc472b2c3dadf3258b840e9c7dd6f8200a520576a31e6917f5cc052ffaa79"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(joshualitt): Only support JS types in static interop APIs, then \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/js/interop_transformer.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"d262a0c08a7a5453876fed0eed0a6bccb3727f8522aa906fa23c3f1268af93e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We check whether this specializer is a constructor, setter, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/js/interop_specializer.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"1607cd387def7ed6c11e9edb440184ec72d9b73caa331d0b06f1234d7abd02d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Decide if we should disallow tearoffs of external \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/js/interop_specializer.dart"},"region":{"startLine":780}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a22dcce6044ef3a22857332e3bb57d76eae62af7d8f082ade2ce150a6ee6c32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Consider using a switch instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart2wasm/lib/js/callback_specializer.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f553390ebf7fc129b8d6eb7237f0f5b12a401ddc751f1f0dab1c588a166666a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): this is wrong \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devfs.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"8198a5a62b73ab74ea7dfdb42aa8b59d007361a7cfcbe223f61b8d1feb6aa737"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): create package:vm_service type if we make this public. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/devfs.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"399cd0d48706d86a2ddfbedafe4e11eb1aaed6ff2c1a0c288e85a3bf57709939"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): create package:vm_service type if we make this public. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_vm/lib/src/vm_dev_fs.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d336abfd7c7dc5de7a18d4b92000e38800782085c4642b4ff606f0c0f6977b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): create package:vm_service type if we make this public. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_vm/lib/src/vm_dev_fs.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"b59e2f7266ee09004eac24148cfe73abf6f5928033c8034aeaed4c609ee63bb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48602): deprecate SILENT_OBSERVATORY in favor of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service/lib/src/dart_runtime_service.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"f076c1d80c23cdf7a3c206dd5ac63737d92c74044b7817a543041446154c6aea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Remove this - prefer that clients use the rest arg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfb462101e869557ea441b5e923e39d883b72100c9dcb0aeac58c7da6ee5a59e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Remove this - prefer that clients use the rest arg. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"397ef85ef6326d6bd543c17d65d5ea69b54971889171e67684106daa8d8e42b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this \u0060method\u0060 field when we\u0027re sure VS Code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"c50447502b708d53e27187397a357b715ac6ecc39a180d05998deefc4a61ac11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this \u0060method\u0060 field when we\u0027re sure VS Code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"2874bab8376003691c7d2bf6e6ff8b749cd60f923182a12f054a2899a776aad1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): When ChromeOS has support for tunneling all ports we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_dds/lib/devtools_server.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"142cd1ad89684754e6c49c652f531766a96db2b2c6b19a7d5922d376195b01b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): When ChromeOS has support for tunneling all ports we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/devtools_server.dart"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"139cea068b96a9b197544e82a9523406fcb7864c848ec3f6c73c2a56995d0eec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): handle case where some clients want privates included \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_vm/lib/src/native_bindings.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"be70131584045f69e9082ee552a948a9482ba5b6618b4649abbd4210d4dcde78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove request ID from service message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_vm/lib/src/native_bindings.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"b779485b62288ee14886f56a172411182d136dec7a267c5397d4d4cbac311ba4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/63094): remove for protocol"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_runtime_service_vm/lib/src/dart_runtime_service_vm_rpcs.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"981241446d2bb6ae2f6b57b8fbca089a3989a5b64ea75717698cc56c773ec9d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Should we maintain a complete map of services to avoid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dart_service_protocol_shared/lib/src/client.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d7af74b26f5855275fe92422f334c2b63f766e27d45af24e557ba50675181c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigurdm): It is unclear when a UsageException gets to here, and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/dartdev.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f764bec1d7fffaa3e8723695c15daf01d6c42b3c9d61a6b6a126c6dca171ed6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove once DartDev moves to AOT and this flag can be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/vm_interop_handler.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"6275a7bbe213fe2479b2c32c03c5c8b9dc47bffe9307acbd2a61811b93170a28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove once DartDev moves to AOT and this flag can be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/test.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"a291e56738ad58ad715e158fd8b18865d1e904f02ea06ff9a6f424833772cc17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO : figure out if this functionality can be abstracted out to a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/vm_interop_handler.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"409fb8df4fc1f752f49851b0f8e19d255bf0b9e7998b1d7b45f4ec55a7407bf2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/61539): Standardize."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/progress.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"e89039c9cce5c3cd1c75de2d265f8e30a839c120b551ade9e8e7732ea9873a44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): Use tasklist /v to retrieve process elapsed time info. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/processes.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"2512d704a57ceae504658188670a6b7e416ba7a8ea4f807d2358393b803b0933"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/59668): Cache copying and rewriting of install names"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/native_assets_bundling.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"36839ea42a6494d4bad56e7f6ceef1d6a5451d58c3656b4cd81067926b6fca17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dacoharkes): Migrate all tools to read the unique native assets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/native_assets.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"157985f9496dc3a3dd10ca8dd1bd27942a2dcc480d53fc8a77c24e31f11ddc7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/package_config/issues/126): Use"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/native_assets.dart"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"19134a100669fdd89c91a713fa294d68c87468321f96d658bc59891a03f35ce0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/package_config/issues/126): Expose this"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/native_assets.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"01406ae9b505965b0b8f949aed4efcb0ff164eaca957b1ba86688bb55808db5c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/63713): Don\u0027t use cwd."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/test.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d7dddfa7f388b70674f6c168a2b2594af60f2fb433d27a31c6220d87e1f02e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/60489): Add a way to"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/test.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"29fe50fc30258bde0e5d100921fe176fd14d8200059590ddb34fe2821c2ab81c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/63713): Don\u0027t use cwd for test."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/run.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"365f66e6c1c6e9ce7a168fa760443030028bc7fc428c550e6582db0710c59bfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/pub/issues/4067): Don\u0027t duplicate logic."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/run.dart"},"region":{"startLine":910}}}],"partialFingerprints":{"codehealthFindingId/v1":"55ab4dd08f8cbea39910f3ff5d5b74586e2d4fcc09be59210cd159078a8e8feb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/native/issues/2465): Add a test for"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/install.dart"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"47261a40883d243c6195b324cc9460c542ce957373bd3a7f82569574552332ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Flip to \u0060true\u0060 (or flag value) when plugins can bulk \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/fix.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f5d0af7e5af320256b1c69e6ab7d79a85190bd4e2ff965e1ae12dff9935aeb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(pq): consider another code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/fix.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2fe8aeef1a152295478b8eaf75e94665db30afa31e6eaaacb36645f0af1b8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson) Do a better job of displaying the differences. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/fix.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e9cf40311f4f33684fdb8da15ea53775070432ebce35271a8437c9c8eba530a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Un-deprecate these, and support importing a few pieces of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/doc.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"317d09019e213f93a090a08c95bc7a9420ac698531a86128caa16a4c253fcce8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): we should consider having devtools_server try and spawn \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/devtools.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"35755e6681dfa1a8281bda8a5af8207ccb29227c3223307e6487223a449071d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): should we just have DDS serve its own duplicate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/devtools.dart"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d7ed1360c14796621a2ebd46f97f08ff4d8eb7134d4211467992a8b813b0d2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this after verifying nobody uses it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/debug_adapter.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd882e39c7f5caa7c3edcece083a625db081e6a3008fc06c5ada089fe054d5ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Remove this after verifying nobody uses it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/debug_adapter.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f6ec4757f2582629a62c16c0889e8ece469b67e89ec98faaeee4e055ab0a7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): perform compilation in same process. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/commands/compile.dart"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e0d9b5a2a0c166e05d317f614f9614b586f47d0fef5342be8a95eff9061ac1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Export any libraries intended for clients of this package. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/templates/package.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"52d6b09b3a32ba9241379f264961bdee6e53699e6bb97b6634a5d39a664ffc83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Put public facing types in this file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/lib/src/templates/package.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cc6234c60801eaa8c40d5e88df1b782b6ffa61d626ce5600ea6a31d1fd505c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): find a more robust way to test experiments by exposing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/commands/run_test.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"94f098e74378b2950c3901656a4988718c8fa8865fb6fce22963cda83adfc66e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jcollins): find a way to detect which one we should be expecting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/commands/fix_test.dart"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f6dfefd06a22205d782bd91d2aa237cbf0fb59fe58d2ee26f8a4218d5e573a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): We should update package:dartdoc to emit some \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/commands/doc_test.dart"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"083e163a99bdea5b55dfc494375aa8388e424637de125a526b66dc1046c78516"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/commands/analyze_test.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"68247ef571b3e58f37b82da65b822e914964864bae1c1b405add84b1f7ca7c84"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Fix this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/commands/analyze_test.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"661013ee8d551b8297e82f0666fcc2ca4148d070e01416dd939bedacc6293219"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(author): x \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/commands/analyze_test.dart"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bfae29e58c8a7003cf7d852eeaef8e57108939dbddf86cfb8de23652e0d55bb"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: x \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/commands/analyze_test.dart"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa0622382f2a0281ae6cc293908e7d7d2007892e7f07cde60c7fed63b0a4af41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/63295): Use"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/native_assets/test_test.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"b26ab1daf11c0a6572f567af841673d99d11569d1e2e3ba5001a03fc94868063"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/native/issues/2893): Implement instance"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/native_assets/compile_test.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"39c455e71cf35f7c6ed43fb3b4366657ba347203b636e363ef5e7b05f6625e5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/native/pull/3427): Add a test for C cross"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/native_assets/build_test.dart"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef79c6491957a170f5789243d498dcb3309f8e6e9b8f2f38e3ab5b0ad94f443f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): Fails consistently on bots, need to investigate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/test/smoke/invalid_smoke_test.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cb21c823fba3797a1b275f2826fbfad5c541003105d91155ff1031772efe910"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo (pq): consider capturing / tracking finish display updates. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartdev/tool/fix_driver.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"971022b29b78b35e03f22dc29196783a010dc9f48b7b74c8401a20293ea63dae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jonasfj): Find an appropriate exception / error to throw! \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad/lib/dartpad.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5c629cc3c4a1d8c7eade92ab303a76868e5f28ebf0cdfc5bc592600b3d4e3aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider if we want allow-same-origin, it might be needed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad/lib/dartpad.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"506b34b943289958865f20a61d2c5d558079c7ae7caedfcca408ba1ac286c30e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jonasfj): Consider folding errors and unhandledRejections into console \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad/lib/src/worker_client.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"e356ab216da6946f689b0d0b1addb56eb45d85c76cf91e4c3be254d728baf971"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jonasfj): Consider a final class wouldn\u0027t be a more future proof API? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad/lib/src/shared.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"46305a79de8360ce3a35ce015efa05060c08d609384e608dd4e26f41c53123be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jonasfj): Merge test_dart_worker.dart and test_flutter_worker.dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/test/dart/all_worker_tests.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5fb3af770837b4e60301fa31181d587ad8461be3dd646610e68b4a501fc7355"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jonasfj): Enable this when pub has stopped using globals, currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/test/dart/worker/pub.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"cae46497689624ff2714ac72a12383e9f9959f5d5a6393c8234caca955602f52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jonasfj): Is it weird that we\u0027re taking flutters libraries.json and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/tool/setup_local_flutter.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"c664e58c17db0b60bf18e90794a071410d7eaf015bd64d24287b9751ad2f7986"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jonasfj): Is this file even needed for anything? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/tool/setup_local_flutter.dart"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce4c30dee21705d01678770797d4d95bbf3b4f2563fc95e9ce5bd9bf433bd239"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jonasfj): We can use analyzer summaries instead, this is probably \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/tool/build_dart_sdk_tar.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"c102e3f386cf663d3f23e647d5eeb944032c1497c31b58e05d82f5ed79689ad9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jonasfj): Figure out exactly what we need from lib/_internal/ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/tool/build_dart_sdk_tar.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"00c4ad1c87cd4d4c6c6b1de56e9ed5527e3fc135a3c2b07079b002570a48ef89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): enforce log history limit when DartDevelopmentService \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/logging_repository.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"d803cf1c3c4d8ff339abe212e2f11a59abd71ea6b51083d58ec6af50350b25e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): why isn\u0027t IsolateSpawn in package:vm_service \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/isolate_manager.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"d909e5c7aa3bddea1b6480014a4e68e41330e6cde907352ab10483f275ceaee9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): throw if we\u0027ve already shutdown. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/dds_impl.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e7a8463ed6ba739ee0ccc55b0a18be60da2445e05e144f9487f26bbf21786f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): move this file to lib/dds_cli_entrypoint.dart once package:dds \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/dds_cli_entrypoint.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"25ce5ad137568e36de13d26398229adcca1b41412cc6dc466a525bd402b60643"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): allow for injection of custom DevTools handlers in google3. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/dds_cli_entrypoint.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"656aa30ef0e60b367e2a41a26393b4abe8bf70236c226e6ff0660a2527bbfe81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(helin24): Consider a sequence offset for incoming messages to avoid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/dap_handler.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fff589cc580a42dec3ab78a0174b648da38d1aa7c753a93f7f37912a22ff79c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): If/when DAP needs to care about ordering (eg. it handles \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/dap_handler.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f46c0c5cbf66592c682c511e20e566c21b1957de77ae9854440ae536f3c92cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(helin24): Most likely we\u0027ll want the client to do these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/dap_handler.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"6743a32d688a98c59a16c9d023bb052d71b77057dc38ed951c4554c04ed67b90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): consider moving to lib/ once this package is no longer shipped \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/bazel_uri_converter.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"9175b7008e38a94af64ad6142c9b9d135fd92c491a670ce9b1706a3b948fbfc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): consider moving to lib/ once this package is no longer shipped \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/arg_parser.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"245ed3b480ce1c2de250226c53cb9a212f0fd0c543f1a5fb124774e03d1a6666"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(b/261234406): Handle \u0060dart:\u0060 URIs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/bazel_uri_converter.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"177f924f25395d9065d79d9a1cf68ba7205c9588993958cbc2e7ad57fb6c6513"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(b/261234406): Handle \u0060dart:\u0060 URIs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/test/uri_converter_test.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"d69e74d18b1d833bad4cfb7408a535f061b563b7a97af5948bd471123a5cd25f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/48161) investigate whether we"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/memory_profile.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb36b74bd95ce1569a00f325ded1fb4cd09371d48fd50c016bfce49133e4d933"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(Kenzi): Collect timeline data too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/memory_profile.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"33b27f0dc869a3ce6f2ee526ae80a4d3e2789c81d262a7d3a8f908657b4a4ead"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Gracefully handle connection loss. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/memory_profile.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b84b7db0d9fa63a6dea32e5e4c2274199efa740aa716b0e333202028fd646c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Investigate moving code from this point through end of class to devtools_shared. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/memory_profile.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9af2305863c694f3a43a8d57a7bc9f6383acaadf18d357ca46b6a262acf5bff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): expose when GC occurred as markers in memory timeline. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/memory_profile.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f41d7416a0828f8bd2265df75fcca3dbd53e1588d26965b2f5b77c4d813b863"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Need to handle a possible Sentinel being returned. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/memory_profile.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce3d53ed1c9f7f4e8455e803efb37f3838a093d0406a4343883bd50b61b4d4f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Seem to sometimes get a sentinel not sure how? VM issue? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/memory_profile.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"a47e5ffc3e454aed892637c343bc2fde8466cbff719d456973e64b68574391a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): TBD alternative for iOS memory info - all values zero. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/memory_profile.dart"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6afe357f01b7813b4f49e01b3abacb751e5a141b294531a9a364718a6b5a19f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): There are no user interactions.  However, might be nice to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/memory_profile.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"f90307c49cf22a3214b737c1ed6306302ffd4b7fcacbc59e4c1d12a01f00e963"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/48161): investigate whether or"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/lib/src/devtools/machine_mode_command_handler.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"86db6ad265a3945799b659500f488a9c9da8a005a2a7cde5c99ed931b1774a25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove needless refetching of isolate object. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/test/common/service_test_common.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b261b31eac86dcd5bcc709b4494f747ae4bae27b69912f863e91b158666b856"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove needless refetching of isolate object. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/common/service_test_common.dart"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0587aa6ca05e4f4f21a1c26a5a4e6434ad33b1491650f1175a44ea09b6a448c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): if we end up in a situation where this call throws due to a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/test/common/service_test_common.dart"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"55337281eb8d2a64fdf5a63f23eea17c70515a7d151d6a63a614dc8156ace8ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): if we end up in a situation where this call throws due to a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/common/service_test_common.dart"},"region":{"startLine":1076}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f7e87a22b5fb4d7f4235718a7d3e09aba5d6d80b40500c4a7f9793081bdd8f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dantup): Is there a way we could verify extension URLs here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/test/devtools_server/devtools_server_path_strategy_test.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d396a8bb163bc9172ce7c830bd4fc858e3d9f3d36a77a4632310ab399c2459"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add tests for package:devtools_shared/devtools_server.dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dds/test/devtools_server/client_test.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ad4f2794c0421b7182cc0e848d690199520b0a034e98bd4183cb7daad79ed11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(41852) Define a process for breaking changes before graduating from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/options.dart"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"53d78f627598d3a5e4836713ebd2b50b8ffc8180c40204417fc212da115b96d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this should probably use sourcePathToUri. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/options.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a764651da29dacc999401307c5424e2dbafabf712391b096ba8fb6aeaeb905d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): refactor options to share code with dartdevc CLI. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/options.dart"},"region":{"startLine":354}}}],"partialFingerprints":{"codehealthFindingId/v1":"e47c426cc3f87492b8b313eebb6a348b2110c3cb16be695272a959924be369fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is this still useful for us, or can we remove it now? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/options.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5e38f79de075e8c48c44857827f4c394c06737d1287d921389681fa495f9114"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/63225): Remove this once flutter is"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/options.dart"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2231cfac2afb6561549723c6207a11dd4bc784d50b891066102f5dcede3d0e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/63225): Remove this once flutter is"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler_worker.dart"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc834e6436722676cfd84df76824e0b37b186ff35bd5446a7981dcc034ef80c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): add verbose help to show hidden options \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/options.dart"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd7e9aa7cfbc4066cc8665e819bbf9ac9dfbe6ad5fe3d4dafe0bff9cf0316784"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is a workaround for the CFE, which does not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"abe2fd9e03a620165d892391ef057e34d2a20b97e747300c24fe5215afdf738e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): investigate if Analyzer has a similar issue. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"e78dd802efaac45ebd52444ceaaec50e4aa0bc52dae2658714c0db67c5e37920"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): the \u0060isSupported\u0060 bit should be included in the SDK \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c48452a039122d9cc9742bb7259c5101847ad08076ad56670f764884037113"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): the default location is based on the current working \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"692b02b6182da52835a6dfc4669671863b9112482ccbc91faab56ec5b3228b1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): conceptually CFE should not need a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"823abff41e0ccc2923c086fdd6e635b23f3f667ac1a9696a2fd5bb7cceddc61d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is there a cleaner way to do this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"5433bc0aae27ac57aa5f3d5574d54d05ed77ab85a8926dfdf31889226b0d6dae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this appears to save external libraries. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"f94a4738d1491873261bc1aee15a9763653cf807651dcde846dd497dcd002858"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): refactor the underlying pieces to reduce the code duplication. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"79faa019968d2cf049ea4037b66f9b3e25a8b9ded21cfb6558f72af16e83ec19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Ideally, this information is never sent to the browser.  I.e., \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7921792fc482a59e611a823b653ddf5fdef91c36bfc63769244c3bb8ecd1edd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Find a better solution for the size of the source map \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":847}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0de92fa0118af14eac4b6c28e2478277f653e1c70c9768b55c698ee76fdf462"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this was copied from package:package_config/discovery.dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":1025}}}],"partialFingerprints":{"codehealthFindingId/v1":"ede45fa6ea5561da1d4a32de7d0f58eaf86a217d73e70295a5ada5cf1fa01076"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#40251): Remove this logic from dev_compiler itself, push it to the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"a456dd89566dcc4afbcc8387c5696dca64f164c6a4ab35c2fe63b9daec79b3f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): extract all source-map normalization outside ddc. This \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/command/command.dart"},"region":{"startLine":1151}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d7d73fd233c251eeebd6999bc119490a9d520f7d1fccf6f2f1b276b67c0e8e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Eventually replace the existing \u0060ddc\u0060 with this format. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/module_builder.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"13284a32a96074b2c6f328d9feae2a516530d532518ee1716c84ceb6813b5a9f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): \u0022module transformer\u0022 might be a better name than builder. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/module_builder.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a8891b86cb25bba4991b466d3014f76cac0405c43a1f87c551b522f5d009594"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): make these immutable in JS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/module_builder.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"01badbe185694e3763d3df3c89accf3b9b9ed68a7498cd75bcc211f3404ba8b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we could use destructuring here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/module_builder.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"b29f6478c582a3a61306851264ba2165d7b4b4b45c58cdfb23491ae7a5912ef7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): optimize for the common case of a single import. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/module_builder.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"2490b9169c241f70f02ca8e54ed2a74fbb78185a6b4c88707be0baf05a5d8df8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Delete and update the argument type when this is the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/module_builder.dart"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f8f4899b438178c46616a538025a036b85a13ba5514788fbce838c77ec63925"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we could use destructuring once Atom supports it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/module_builder.dart"},"region":{"startLine":682}}}],"partialFingerprints":{"codehealthFindingId/v1":"9decbd3788c3a4c360b04bebed80b86d6e73784a5d0bd01b6955118e098e4e4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): find a better home for this function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/js_utils.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"89f63685ba394b9e0767c930731131e450fb2b418152549e41b6d1d815428009"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): add JSFunction that maps to Dart\u0027s \u0060Function\u0060 type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/js_typerep.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"bafd904e55c570480fcd5f1ae6c85529075b7053883e2e11b695a4cee2ec3d72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): what\u0027s the most readable scheme here? Maybe 1-letter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/js_names.dart"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"41cc7031d42bcfe581d281f887cc4e350399637cc30b3a4d88da15764a435619"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): import from its own package \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/js_metalet.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"54d7cd753ed03dcbbe105d19c44633f1020e71a39add75373aadc9c87c8e1960"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we special case visitors from js_ast.Template, because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/js_metalet.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"e30a8d825f4bafadd8c3ea6a77c883490b287d5fbac62378ed7d1a0d0904524b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we special case visitors from js_ast.Template, because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/compiler/js_metalet.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c864ea1d1b665eeefd115c8721916fbdc32305c9ed79163a37191eca23d6d09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): parameters and methods always support splaying because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"d09aacfc99ef0ef0905f4e737a09c8e57c55efda90ee5d9a7c58f7df3d5bad04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Avoid copying call arguments if no interpolation or forced \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/template.dart"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa2e7da85a430d40990530b3243f7098e7189c3dcee8e7dd2c9789576ffd5ccd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Avoid copying call arguments if no interpolation or forced \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"431475a58e673edcfc1153634b1ee6952ec9be8c2d28c62f6c04ca625aa4e249"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ochafik): Inline the body of [TypeScriptTypePrinter] here if/when it no \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f722c95f6c4d002007dd2cd0cf8de4b943e0092148561496779ff46ed9909e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // constants.  TODO(paulberry): once pattern support is enabled, inline \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2e3e240f4b3651a3c299ecc112288a67ac59308e612810b067b49c980c5744a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): async modifiers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1465}}}],"partialFingerprints":{"codehealthFindingId/v1":"68f0728eb83c212bc41d2b9c5711963141d340bf9f9da8a26005f4d69342f4d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we need to avoid indent/newline if this is a statement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1533}}}],"partialFingerprints":{"codehealthFindingId/v1":"401eb23adc3cc88c5cc271646c6a0036c5d7c0e366ac098f5787b5040eada665"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): add ES6 support. Currently not needed because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1696}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd800e82d1b67a4df2bf7ec0ab06f9c42600c639602403c94dee525a5e09fbd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): add ES6 support. Currently not needed because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1749}}}],"partialFingerprints":{"codehealthFindingId/v1":"b74d7b55690678f1537da5d339246030825a7b246b4467be2dffebe46b0d6434"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Introduce a way for indicating in the JS text which variables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/printer.dart"},"region":{"startLine":1938}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b2f827414c24c35ed7f29f47d76357e16154be83d0e0dc67bc10a68b34c09a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Introduce a way for indicating in the JS text which variables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":2120}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f97d81426eebd286b44428e6dd48c2738d4213bd99aa4fb2cba664f0da7dcb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) No longer used for the spread operator. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/precedence.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d80bfac4a316944905d79687bfa832b347e9ce09ccf0990a93724f59b02152"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Should existing data be \u0027sticky\u0027 if we try to overwrite with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"95326bc7c60188dc35b81a3a426eec3ab683dcce98fc1da76e8e781753b9182a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Rename to convey that this is a single Dart library after \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4a5672a14b5122f6e1bdfd39f424933bad825aab3e8abdb6d1de372f4683156"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove nullability after support for multiple module formats \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"b557cfb457745980b376d0d2629c853414f6f22376e5f3e3a21d0327037bfdc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove nullability after support for multiple module formats \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"c25e171193a5cb236e476bb330675812023441d4ddf2c597f48d54898d043bd8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): empty block singleton? Should this use empty statement? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":444}}}],"partialFingerprints":{"codehealthFindingId/v1":"748b42b771e1cf16866431272f18c7a0262ca7cab331509b7730495b6977c419"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): make this work for more cases? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":983}}}],"partialFingerprints":{"codehealthFindingId/v1":"581eb955e70c7e51299ae8a5b81b8dd72aeae9d58ecb24c5d40e085f3544a05c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): destructuring was originally implemented in the context of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"141634cf6ab58ef1cdbd7e2c6b2dece0f0eaaa2ed9f64708c679904c9b3ee1da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): parser does not support this feature. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8fc3915073c7e2229d885b0d5a5525a2c25dc08e2b806a8c9f81a78616af717"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): switch to constant map. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1361}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ef8c8ddb0aa24d513ea9ad03bb739562d06baf42ddfee74338a85af568bb1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): switch to constant map. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1814}}}],"partialFingerprints":{"codehealthFindingId/v1":"17b0ca0d03fc8cb21dcf51b111b35814e4a71afda4c95917cd78869e4ad8740a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(sra): Introduce variants for known valid strings that don\u0027t allocate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1726}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3869bc77658134f6d63f28f8d986e107b36886f0ebc225462ae6c720d2ff3ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): parser does not support this yet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1858}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c9bff0e082b8fcf4f23d19248fa64a030c95710653706151442ed863601ed0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): parser does not support this yet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1901}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3162152e0b2ae1818039fc2b6c18d99e278470280f9f384edccbe8c43cccdb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): parser does not support this yet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":1924}}}],"partialFingerprints":{"codehealthFindingId/v1":"a925d52fd2eff8de056b25d220dc7940ca21a07b5d0fa0763177a32a9a703097"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): generalize this to InterpolatedProperty? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/nodes.dart"},"region":{"startLine":2147}}}],"partialFingerprints":{"codehealthFindingId/v1":"2904ddf73bb4d28cf0a6d5fc0cf8d5b24c54ddbfcefdc24a9d52b4114e7a6619"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Find the remaining places where js(\u0027xxx\u0027) used to parse an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"900c1acd1a1225b7872255b8a7b5f49d5407cc4760c3dddfb27f451c3a74a2c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Find the remaining places where js(\u0027xxx\u0027) used to parse an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9122b4eb45b24325c97e10615298ff6d26cb6d0778998dd8fc7bfc6c620526d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Parse with extra validation to forbid \u0060#\u0060 interpolation in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6d9111fbf6816e4db97d0242b74148c92789ff4c3e5fd3050fd5b2148fc405a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Parse with extra validation to forbid \u0060#\u0060 interpolation in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"c468292f728d18643af7b769cf2a520cb15380ad3310c71349fee9d7df0f1540"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): =\u003E and ... are not single char tokens, should we change \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":525}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec4b2d46808cf26d01d2602adb7aa6ae83ba0fd0dd5c0d62799937e2d6265329"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this will allow illegal parens, such as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":987}}}],"partialFingerprints":{"codehealthFindingId/v1":"6454ba8755af95a186297c5a951f65fd4c3f232da52745cc19ffc15a8825ef6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): validate this is not a keyword \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1064}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f3cc8077f36ccefa10fd20ea292b3add2c13db13a4b8e53f99664c22a242d00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(ochafik): Support destructuring in LeftHandSideExpression. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1310}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb8968c2b16aafbf7675128ff88998ebf970727fee095eaf58f24c87be6d46e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): interpolated capture here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/js_ast/builder.dart"},"region":{"startLine":1407}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7243c4bffccc37eea13df1e51739ae9f8e0162c3ed9ba7443c927b6bf548acc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): interpolated capture here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/builder.dart"},"region":{"startLine":1222}}}],"partialFingerprints":{"codehealthFindingId/v1":"770730fb3ab0ed905d7bccdaf0417548dd1e3d2a8c532c5af6792b457dd48468"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Change back to \u0060let\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/type_table.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0abc66c08245abb84965f40813d3f76e90365cc7cc27720f626197e97008c3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): This is a hack to avoid trying to hoist out of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/type_table.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"91b81141beadb489c77c77f78343258bdb8bf8066327d977c6994d7c1859441b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Bounds are locally hoisted to their own JS identifiers, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/type_table.dart"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"83c0cdcd544eddfc3e5a92f6f550b3d04485d8c4be5f5a96d84fe9694aa8bebb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Remove prepended text when we have a better way to hide \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/type_table.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"9029bf5f95b2b1e395eb5f7ddbf687cdbafea1a343c170f146a597eaa9e9962f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): preserve source information? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/target.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8378ab54b736bf37c07fd80ee585ecc0c4bdd3601570f0570414f06b6f580a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this uses the implementation _Invocation class, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/target.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c89845a72d2a64bac0b963a45025e3dbf600259c2679291e365aba7e7b3d85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is not a valid assumption for user-defined equality \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/nullable_inference.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"d156b928e95f6052831b80b9ecf04347e8ec9bf0cd38c5c186b552852301a9a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): Introduce flow analysis. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/nullable_inference.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"8057bf5f508616778fd5d2a971f7dfb33739e9c88ae074c856d1aecd69189179"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): If we\u0027re analyzing against the main SDK, those \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/native_types.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"c05ea0722b6a054f1af15a9cddac93b4d4828c7bc7e5cfaed102be7bcc1b4404"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39612) Validate that after this point no types from the SDK are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/native_types.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8dced1af988e140b10f6f90720b2ad747df4e28d89714edee4227c61df89875"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Only nullable until we design how to identify types from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols_collector.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"e76e5419be6915304c9aa25d3c5ae74377ebc4e78903cdadcf863f63aaa8be8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Only nullable until we design how to identify types from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a871129a05e11e6f8fc01f4857137b52eafbb352d0387c14c33925d80e2c21"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) How to handle function types or types from other modules? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols_collector.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bb36a40aeede3ec2167721673ef422cc1186aba19284231543bcd68f20e34b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) typeId - probably should canonicalize but keep original \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols_collector.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff243b28a66b1be9521032e213f59d189e3b86eda41615a147e45143e68b3d9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Should we mark all constructors static? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols_collector.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb360c0deca2ec2a751f3a7863c27fc54978e911b9545cdad1adbdd4f0a978c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Value should be the JS name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols_collector.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"1244cc38ad8d70b0a2db718bdde52be464f04514329a71f2b1b6b32057f58262"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Need to handle prefixes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols_collector.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"8db016e155c2e8593deebea3dca441e0602ef38b6138a32d702cb06c7497d57c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Save some space by using integers as local ids? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols_collector.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6c5980883c321f882308b13e925c449d59228f8081ad1bf76bb7f03a688447"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: describe displaying specific non-expanded JS instances in dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"2251649592c67236120f5dee139d78cfb4585c5f8c6365f13bf75933b92907ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Only nullable because unused at this time. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_symbols.dart"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2a8b61d0c5de451db3aaa7da882a58ee8cb888e97cc686712eb7fc2fa13fac8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): create metadata package, make version the same as the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/module_metadata.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"5149b637a1d6bd9cdcf5bc07694e35cc1c5354535cb305c02284facea55161fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): consider replacing this with Kernel\u0027s mixin unrolling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/kernel_helpers.dart"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"8edb69bb3f00b630c9285cb80fb9f21298f049013c182b8a4e8b577913e6b30b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): Move JsPeerInterface to package:js (see issue #135)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/js_interop.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"3805065aa5bd533cfdb0429074ddbf27c74d94282e068fbe33f8cb1326e0b144"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): The \u0027JS\u0027 annotation is the new, publicly accessible one. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/js_interop.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"f038674424d5dbe3e67b7babb4d81e7a6c1636e4997eacd5b7de737965a9dd84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): I think almost all uses of this should be replaced with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/js_interop.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"77172340d33f3da8beabc20e80161104a8335fe09a4f932393e785565a7f6cda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We should replace many of these helpers with the ones defined \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/js_interop.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"b900ee03a99b7e9b39fb6e60e002c286e5cc143c90fc264859834a4ea5f8f1cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(60281): Handle members when an entire library has been deleted \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/hot_reload_delta_inspector.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f5c940a682cdffa281b16e577ecd0949c3399b241dcb300f91d77b16f320822"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How to write all metadata even when there are no \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/hot_reload_delta_inspector.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7eefa9fce273867d9f92a8bc44917561a81c881a4a39918f69fea8d2c9bb328"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Read metadata when it is available. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/hot_reload_delta_inspector.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac6ecf4a97bc04b12c778888736654638d3bc0b12aa28f0d936a01d9396a9817"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): throw on load failures when blaze build starts \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler_worker.dart"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0060d3aa657fb700ae736f669b374cb0480db19d93bfecbe720c30bb7cf791"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin) Change the default to \u0060true\u0060 after the user code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler_worker.dart"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bf0b2e26a26e9d870a58db2dcdc33c2020a52c7987d08af535d366b8a5bf01d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): we only substitute for the same name or a value \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d6d962564642d877c34731f64dd14b0b195deb34b902a9a7bebaaa69f77b647"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): make compiler produce correct expression: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"565b83766f3395cc7806ec2a551e975a77679ba25ee182bbd2aff996d1d04b28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Eventually make the scriptUri required. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler.dart"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"3029f7e81f4ecd54de6aa9f3e9d5af3778b8bffbd85045c24c5cdc869a8b28b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make this code clear and assumptions enforceable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/expression_compiler.dart"},"region":{"startLine":467}}}],"partialFingerprints":{"codehealthFindingId/v1":"47788d3be768f9724e839a43ba204f6d766633b9af45899f073003e9fb0cd562"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this does not use the normal evaluation engine, because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/constants.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2194e457a400873d6be8a00a96fad3254374e22678d7485340f8b6542d2a016"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Nothing about these symbols requires them to be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe44e56a67455e575f839051688f71af9f65315390fd87bc04a4881935e025e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): rename to \u0060_nativeTypes\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"52c2a5dbd8062eb5d0702a24b1f09065a86279ccf59fff843ebb71fe9635ee31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): rename to \u0060_nativeTypes\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"9331f800bbd21b5d80e61da6aeb98cf59a577fa4324be27db95c3442428228ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Is there some way to share this from the js_util_optimizer to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd09b61d9691f8dd6da41246a8e623c866404c80c4d74247533a8202a44fc03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Is there some way to share this from the js_util_optimizer to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"4235e6c808b66c425386fc11495192abf7004fc8b3b00386102d47e234f9de7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) This is likely more information than the application \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":999}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51e0675592e9f1c9e37419d6a408fbfb2e901272f552b31092490a6710e30f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) This is likely more information than the application \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"be9251c43c8804fbf00cfd3c6aea1259381ee6b3db7fbca0af00377e10c975e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The above assumption may not hold if a class\u0027s hierarchy \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1024}}}],"partialFingerprints":{"codehealthFindingId/v1":"521fbf553cefde463ef0cd226c56271d7749811f32620823c45e35e4ba74613d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we need to split out HTML. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1307}}}],"partialFingerprints":{"codehealthFindingId/v1":"77e1da4a18802099dee3ac0300e530ff82f1c4c8e4993b94c671caf59895a838"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we need to split out HTML. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"24b1536a431a83d8fad59448dd9468ba94db2390e2599a63bf294ae3314dbbff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we can merge these once we change signatures to be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1353}}}],"partialFingerprints":{"codehealthFindingId/v1":"1522afcc312003d9e6ae2a2047cd762679f76cef17baa173b02c304bbb38fe8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we can merge these once we change signatures to be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1037}}}],"partialFingerprints":{"codehealthFindingId/v1":"e357681eb120b67b9d6a4f8a7af6028bb68a42df8e91db9d25334831ff0c4aa9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Once \u0060_declareBeforeUse\u0060 is removed this escape hatch will \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1406}}}],"partialFingerprints":{"codehealthFindingId/v1":"68fe8c1a5e0b9bbcf97e8ad37e595287e58fb33fd9b43cb79d296a4a2575725c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Clean up this logic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1477}}}],"partialFingerprints":{"codehealthFindingId/v1":"ade026753de8360c3be800da72a417b0586db7ec64387b8fca1670e92a13dfff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Clean up this logic. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"22d2476a0cc0ee23864e6d96570efb3721112a2e2f0d5d51aa18adb515c1280c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#57049): We tag all static members because we don\u0027t know if"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1501}}}],"partialFingerprints":{"codehealthFindingId/v1":"3075d325be1d565ebff5fecf369434d35f95b3b338b0379247fdceecce4d3263"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#57049): We tag all static members because we don\u0027t know if"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4073}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7ea7047fbd36c395675d9e79640be66cb3bbbc92adfd91cff6036e27d670f49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#57049): We tag all static members because we don\u0027t know if"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1208}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a8b231304d2cbfc954c192ae2991966aaaac40c267e108d8eb4086524fc7e20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#57049): We tag all static members because we don\u0027t know if"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3537}}}],"partialFingerprints":{"codehealthFindingId/v1":"758c4ee06559fa754c33f7bb36596b6e48a7892233438f8aebb12ea2c0a6df64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): consider using Kernel\u0027s mixin unrolling. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1817}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac74345518428225ae778345a41a60677f98ad8390097deffb80cbc2ec51b674"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): consider using Kernel\u0027s mixin unrolling. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1506}}}],"partialFingerprints":{"codehealthFindingId/v1":"3eddc3ae8fcf9cdda336cf75fe75731bb0730a0ba5a748dd5aed68db970cd834"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Record the name for this constructor in memberNames. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1881}}}],"partialFingerprints":{"codehealthFindingId/v1":"b745fdbb0ff74c0f6f69d77c98a50151eda5bee80c27f8d00bad94b825a87a2e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Record the name for this constructor in memberNames. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1570}}}],"partialFingerprints":{"codehealthFindingId/v1":"48302c034509dd6f4904a7ba68a49d5781c1b876b4faa216cd804f383fa59661"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we need to unroll kernel mixins because the synthetic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1906}}}],"partialFingerprints":{"codehealthFindingId/v1":"a079fc8e0d2f12b748a400a89e472dd603873f181cd04bfc393ee7e9745f61bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we need to unroll kernel mixins because the synthetic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1591}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb912cdc7502557e9d032f42f65397e710236b77f84cdecfbf0a1b4c3d6281c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): We originally bound mixin classes to a temporary as a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":1960}}}],"partialFingerprints":{"codehealthFindingId/v1":"09beb73a320900877bedf3703eb88eac420831076dc0ac8e052142a634ea9caf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): We originally bound mixin classes to a temporary as a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1646}}}],"partialFingerprints":{"codehealthFindingId/v1":"51f1eda47b2960acc25d4fd8ac70a7f93da162e7cb2e6690cbb5a3b8665462c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Only tagging with the names of static members until the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2149}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a441783c1e41cf6649066ab6d9b638bda51ae85de83092f46074337f1302eeb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Only tagging with the names of static members until the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1852}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff0d16b770b7fe80236f244218ec15084f59ad661e460cf5d544d9fc7d6112d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip for all statics when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2200}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef5d0a48bab5a341b7e1439feacfbb06e28661a5faa66c7271cb150ad5d38f63"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip for all statics when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2228}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4c9898369742a36247ee83c7f937bc6cea34772e1a95dbfd15b378c6c06d877"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip for all statics when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2324}}}],"partialFingerprints":{"codehealthFindingId/v1":"62dd27c2ae168736ff2b31099b26f031526925c3640ebddc2855c52f48c91946"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip for all statics when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2354}}}],"partialFingerprints":{"codehealthFindingId/v1":"25385ccf2c744fa551fde31a10d163ff7958d7b5a5a59b04f1f1ca6a664cd1f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip for all statics when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1903}}}],"partialFingerprints":{"codehealthFindingId/v1":"935948892e9f0aef19a338d198aa598e97726d48779b2af93c8c27be3805409b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip for all statics when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1931}}}],"partialFingerprints":{"codehealthFindingId/v1":"56833f56a0327052ad87d81dd8497285a70ca70aca28af04942348acd49ce9c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip for all statics when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2024}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b8d63452bcf61db3e01f77311cc6651f5e1b32124d3b4c3b1ce3c4fcec2390"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip for all statics when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2054}}}],"partialFingerprints":{"codehealthFindingId/v1":"021c0d16e5bd34aad822b32fd2727d80cec7d05440a253176f2c5369efac9251"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(52867): Cleanup default type argument duplication. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2294}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dd61f70a9b9b03debb9bf93f4580d0fe2b9fbcd69421415f53dc9c20cc15432"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(52867): Cleanup default type argument duplication. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1994}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4f158c1fa29dd53a5c7337e61460a7c89b309a823d761a753acfebea5c50398"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(52867): Cleanup signature duplication. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2310}}}],"partialFingerprints":{"codehealthFindingId/v1":"0670634911da3c7e6ce4e5e49ebf04bd5634b896d28ac1040683151b072b0964"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(52867): Cleanup signature duplication. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2010}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad88a7540bbe313273ae878613c47d93d4b1ec74f9a1e473d25532f3b7bf6b52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip static fields when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2349}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca310acd3c60ac29b21add549ea88bcbf6961610752efccae77af989381cd610"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Skip static fields when the debugger consumes signature \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2049}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f9c9134cb33e8ee827849486b7561e1daafb974616078b053ec869bad01642"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): do covariant type parameter bounds also need to be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2393}}}],"partialFingerprints":{"codehealthFindingId/v1":"f93e231c97e5ebb61475b28b4dfb8c91098f33d2254361cdb3b420e1fe916507"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): do covariant type parameter bounds also need to be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2093}}}],"partialFingerprints":{"codehealthFindingId/v1":"613e68a9687ba08a55febae4d6cece8f2af89c96f850f5d4cf54d8fc79474ce3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50465) Fix incorrect assumption there should always be a super \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2515}}}],"partialFingerprints":{"codehealthFindingId/v1":"776e7f3cbfd069cb1e4ea0ce0a112faa8284fac4ba7574be98292af1e4574485"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50465) Fix incorrect assumption there should always be a super \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2215}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ea5486ce1632622d7d31892f458709f6dd640c41c3bb8b28c718563f32cf550"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): do this only for vars that aren\u0027t definitely assigned. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2737}}}],"partialFingerprints":{"codehealthFindingId/v1":"a76ccf42653f265038bce711eb8caaeb9f623f665a06c875deb0e7786718c876"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): do this only for vars that aren\u0027t definitely assigned. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2431}}}],"partialFingerprints":{"codehealthFindingId/v1":"8490a690c27893677a2d9e273d889ed2f66d087ace7da609b91cd7ee7cc96b7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): mixin declarations don\u0027t get implicit constructor nodes, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2754}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eae8dfceba40b266d33a29959a0d74da31c46940988c613cc66b7eed072a987"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): mixin declarations don\u0027t get implicit constructor nodes, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2448}}}],"partialFingerprints":{"codehealthFindingId/v1":"955995e98f9b441d3d1c35f284efdfb35e36947c9a981a70a315291eb15f6f44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): CFE has a bug(?) where nSM forwarders sometimes have a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2868}}}],"partialFingerprints":{"codehealthFindingId/v1":"100108bda4d5cc2ca3e4abadf048c3a414760a45be47c302f0f0e61466fcbbe0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): CFE has a bug(?) where nSM forwarders sometimes have a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2557}}}],"partialFingerprints":{"codehealthFindingId/v1":"47ad93796f340341a3e415cd34f2bd3c0fea42762d6ad8051f74c33ffd65c4dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is there any other kind of forwarding stub? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2874}}}],"partialFingerprints":{"codehealthFindingId/v1":"c887e8b1eddff76f06b14be7a8287442ec9a5983f10d8bad00dbb3c1ebc2ca9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is there any other kind of forwarding stub? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2563}}}],"partialFingerprints":{"codehealthFindingId/v1":"73cf59a1366af1f542dd6402e6e95882e7c9b58770c3335f2eac075f3749844f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): external methods in the SDK seem to get incorrectly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2917}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d13fba4f30159dd6723ca3fb3adb0454760fc41fe095d4aee4ab2128ca46cfc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): external methods in the SDK seem to get incorrectly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2606}}}],"partialFingerprints":{"codehealthFindingId/v1":"134301927db9a2c1808f785709863beb44e686ec2e64e279031860031aa552c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Do we need to handle this case? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":2944}}}],"partialFingerprints":{"codehealthFindingId/v1":"74c70fba0a3e3d6e6f33acd8a8bd83c670237dd4798ce5f4ca7781382498253e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Do we need to handle this case? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2633}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a02cc853129c2e135ebcb61ad568e688735410338dc578293b640264345b261"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): kernel stubs have a few problems: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3004}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5802dcacacb0abb3fdded5f7ac8b2594a668518e940d11372b52bb894645366"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): kernel stubs have a few problems: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2694}}}],"partialFingerprints":{"codehealthFindingId/v1":"56856ef5dfc0418788244c0eaf1a420267e4fc639ae2c6c96697a94670e68e02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Can this by meta-programmed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3221}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e2f92564fb7c7126a3b6802421dc9ae5e15eb421069d26c0f86204a25e608fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Can this by meta-programmed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2906}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eef24d6f54a84970270445caf454030dcf2a78875e49c22fbb6916974061a8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): should we adapt \u0060Iterator\u0060 too? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3286}}}],"partialFingerprints":{"codehealthFindingId/v1":"4636b7f81c7fabb82d0916f4cf974673e175c1dfd869a8c68902701081da14b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): should we adapt \u0060Iterator\u0060 too? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2971}}}],"partialFingerprints":{"codehealthFindingId/v1":"11724728718773033afd7d0cef5210e9255eb783cc6446ce4251d30ef8d39f88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Don\u0027t access values in \u0060runtimeModule\u0060 outside of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3312}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebee5be54b660cc0bd7efca7e89da1be8d4ac2bc091f72095e4e68f72d8a5d16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Don\u0027t access values in \u0060runtimeModule\u0060 outside of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":2997}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a49be1d21d7969f056f35d8e75fc0e97cf01dba92861c0c76d62f18243dbc66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(55547): Move these operations to the library link method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3327}}}],"partialFingerprints":{"codehealthFindingId/v1":"525e9114f65d12b20047e0b1f7044a5583af9ca054061ec89cdad8de00eb4019"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): The performance ramifications of a lookup vs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3358}}}],"partialFingerprints":{"codehealthFindingId/v1":"379166623d6473c0306e35dd96e645c265f6f570d97c667f6115517c21a3c725"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Const values are emitted along the lazy pathway, but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3568}}}],"partialFingerprints":{"codehealthFindingId/v1":"283d1dd32f075ae9d6678a4934737a9ebe4c60b560eb5f633691080b18f27a51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Record the name for this member in memberNames. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3773}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3662d0d90e28bfd35ce9aad9d7433c4266e66141790f985add40df074924e83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Record the name for this member in memberNames. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3780}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fcefaeffd7d816c1273cfe5f3755c693893ce9ab9873dd22554187f3aaaeead"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Record the name for this member in memberNames. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3806}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b1cd6c092caf9c089fb723461a5a66c5d7be27bc90d297c8d35cbc9ce0cde88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Record the name for this member in memberNames. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3258}}}],"partialFingerprints":{"codehealthFindingId/v1":"177f091fa5b99e5ef40ed25561307430e23f25b96400c7c211a6748b22605aaa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Record the name for this member in memberNames. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3265}}}],"partialFingerprints":{"codehealthFindingId/v1":"772786d3fd99b5a3b984a3fcd4764f2d6eb562981d7bec0972b407370fb86daa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Record the name for this member in memberNames. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3291}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a38c1193cd191b688938e76873747406df505e7c9aee0c69729def506207dd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Move this name collection to another location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3793}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d017df80393e989c7da9caa0af19f62d34e095e661164eca48075b6202dcfb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Move this name collection to another location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3811}}}],"partialFingerprints":{"codehealthFindingId/v1":"02f1b5d9f951ae6f2f1c75c54aab8c84985ecf40ebe41a256059dcc05feb7eb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Move this name collection to another location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3278}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0053e08f648a5be0106e410134d98b6c6dd51792916dbb4b7436c9e252d0e72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40273) Move this name collection to another location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3296}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e6723a12603660bac3cbfdeda842fd2b973671f1ed4a6128484404f742b1360"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Consider CHA here to be less conservative. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":3851}}}],"partialFingerprints":{"codehealthFindingId/v1":"80e12662192f52f6a95c7a189f0df796fdb4a458d639d67c2b1310b1d773a01e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Consider CHA here to be less conservative. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3336}}}],"partialFingerprints":{"codehealthFindingId/v1":"759f4f8a441941eeb63074c2d7989d918969e05348a3afc26125b8bb1880079c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): it\u0027d be nice to avoid this special case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4111}}}],"partialFingerprints":{"codehealthFindingId/v1":"7933fdd6958279c2f910db2c0166227404314297ca94802cd30cea2619b080ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): it\u0027d be nice to avoid this special case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3028}}}],"partialFingerprints":{"codehealthFindingId/v1":"abe49d6847e957fcc0a26af7bda21f4852acadaf452c3c0eae6e24473fe274f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this error should be caught by a kernel checker that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4259}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5051811a12cfdcbf05110e9924e0d50cb2bbdadcdd3e2552652209576f1e3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this error should be caught by a kernel checker that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4269}}}],"partialFingerprints":{"codehealthFindingId/v1":"6535be0bb2dc501a150b0855bf4d137f3c4df97f8cfff3f63de27ee9fc64f519"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this error should be caught by a kernel checker that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3658}}}],"partialFingerprints":{"codehealthFindingId/v1":"60c96109949bd3dff5773f36abbb5f45b3cfbad7f3e60c78f3ca029e75310457"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this error should be caught by a kernel checker that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":3668}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae5875c45b54e732b3f7b644628e5bed0b7ddabdfc275f7607d638073b4272ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): need a way of determining if parameters are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4671}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c9bd68536cf776ccecd363ec5b0327e55fec7d473ff1cd2efcf11eb2a77b1d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): need a way of determining if parameters are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4075}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d75baa1d9aeb460054f1e2219ae6d57a04aa1d277895138e7e33854b690ce33"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): in most cases this check is not necessary, because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4914}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab067b8fd5e3ebb322a876fdeb3fdd21b664d2813e6ecb9a51195bd6859ff1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): in most cases this check is not necessary, because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4318}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc1780835d78e9baeb52e312c298d5e99102b020c039f7fb7040f9df4dcb4d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(52582): This should be unreachable once the CFE ensures that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":4920}}}],"partialFingerprints":{"codehealthFindingId/v1":"c68210e48e155e5c3773780a7647d5f720acbba86a3f9f0cc86f63babc1cdf1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(52582): This should be unreachable once the CFE ensures that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4324}}}],"partialFingerprints":{"codehealthFindingId/v1":"166ea72ff020e4b9fb922efeb09b27f17d24263a5e33d1175ac2f49536f2db98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Ensure we have a name for the method and then \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5025}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d949b0f446ad2bb060e45c9fb1f19a07a19c70af6bb343ea1faaa50e63cbc9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Ensure we have a name for the method and then \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4429}}}],"partialFingerprints":{"codehealthFindingId/v1":"6800c50e473db9d045311f93bc40e02a310969dde15d23a3fd9e6c2f5574c11e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is the \u0060is! Block\u0060 still necessary? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5060}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b36cf759edd96a62ff26942e89503589bc9175b16452b31fe23273d98f715d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is the \u0060is! Block\u0060 still necessary? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4464}}}],"partialFingerprints":{"codehealthFindingId/v1":"75f86a8bf29e421999fe24a6ed4d15f69ef82d5cfc6102048497c35f41db7071"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): When nullablility is available earlier, it would be cleaner to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5109}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae2beefea53675f6e77fa2356fdf46310afb6a7ec23c091cb9e41a67e820185a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): When nullablility is available earlier, it would be cleaner to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4507}}}],"partialFingerprints":{"codehealthFindingId/v1":"255e80beeccbc7b09820c68452aa35bd47ed5cee5f1a729888963915cd969622"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we need a lot more nodes to support hover. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5174}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f3836b9f1c93fd259fbc39f6e077da0b7d891ed6f8e506c63976c6210203baa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we need a lot more nodes to support hover. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4572}}}],"partialFingerprints":{"codehealthFindingId/v1":"36479fd2c00cfb6bf09ff0625938dc70ca08a132cc81e0bd3c39528a2040d51b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): figure out why this is throwing. Perhaps the file URI \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5195}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc546746408bb94386eacbff0308d3e4d7fcddbcc6c635307f1c82be57abbff2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): figure out why this is throwing. Perhaps the file URI \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4593}}}],"partialFingerprints":{"codehealthFindingId/v1":"dba2b91ca3418eeb9170f391b85aed80deca10547bfa7f1a52c9003bd4de2753"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Is this branch even reachable in null safe code? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5291}}}],"partialFingerprints":{"codehealthFindingId/v1":"c619784cb2d70a20845ffdea60c8bf460d3202af08246afbc98fc8ea886da780"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Is this branch even reachable in null safe code? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4681}}}],"partialFingerprints":{"codehealthFindingId/v1":"24a8698b0795d3d1fc092b2661687549167172fb085b1ef3ef6a4cd81109e418"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Retrieve the real label name with source offsets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5403}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a4ac8948d76a6c9971ee8abdb22dacd3662bee4184a1960a201b2ca54780b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Retrieve the real label name with source offsets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5754}}}],"partialFingerprints":{"codehealthFindingId/v1":"381805d8d04ad7e84664231649290334077c5ae503ec41d4ea140b8f7934d7d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Retrieve the real label name with source offsets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":4793}}}],"partialFingerprints":{"codehealthFindingId/v1":"4df0c20c6edf30f67ef3932e107b66949fbf6664fe049d55972425859c9753d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Retrieve the real label name with source offsets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5144}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6c0394d393d21118c70b899702705bcccaccd170c1489dff2c7b3ec08b22c93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we may want a helper if these become common. For now the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5686}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e889769e2fa3c4ccc7d6d3cc1050e73f539f730ac7ce967a041d51111097bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): we may want a helper if these become common. For now the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5076}}}],"partialFingerprints":{"codehealthFindingId/v1":"102ed13231d8759ae55fd685518c7c142d597a308e378eb8d2152231b1d34416"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): make sure we are statically checking fall through \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5810}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4bdb9170c4f651638cd713a347f0de5c41af04be5e872dc0c45ee97c285e9a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): make sure we are statically checking fall through \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5200}}}],"partialFingerprints":{"codehealthFindingId/v1":"f256c781d5f149965c90a1bbdd78d2f0d66a243fffed5aa226b28ecfb856bfb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): avoid generating unreachable breaks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":5830}}}],"partialFingerprints":{"codehealthFindingId/v1":"37dc11a4e9211a5209d083cc0699a8c58589f175a976b89fc47271651822d0ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): avoid generating unreachable breaks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5220}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e9693123334b7b6909a394ce055b22abc10f8261450ea428f5baff66aa73e11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): casts are sometimes required here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6030}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72c6fc35fd99d3a204e0953c97a148b82971f69286e021d18919ca9c99f0809"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): casts are sometimes required here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5420}}}],"partialFingerprints":{"codehealthFindingId/v1":"218dad40c5720e70b69981e0d3750b6f4521dba146213e66b1c2314ceddcf794"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): resugar operators for kernel, such as \u002B\u002Bx, x\u002B\u002B, x\u002B=. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6151}}}],"partialFingerprints":{"codehealthFindingId/v1":"47a3b8448e61ec349afc8330a53665aae52670c83c96b820b9f90e27164738cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): resugar operators for kernel, such as \u002B\u002Bx, x\u002B\u002B, x\u002B=. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5541}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf11d44506e92d78a0e6b353b8584ad4b536960e9292678a83ee10b8a3096c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Marking an end span for property accessors would improve \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6177}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc6f7433a2c82ce4a336aa0f9185dccc2f1403338096f1b029db2d497a606096"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Marking an end span for property accessors would improve \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5562}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef98efdfb9ee76c6570e26bd13ebb456888926337084bdb6e8f55b5f759a5ad0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Add a runtime helper to perform the checks only so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6209}}}],"partialFingerprints":{"codehealthFindingId/v1":"70e026d4e482c7cea849d2f56a905b26826bd5cb43880a904762c8e0f82a7c5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Add a runtime helper to perform the checks only so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6308}}}],"partialFingerprints":{"codehealthFindingId/v1":"e121abe770981da7dbff4f62c07e1bace91a6bdb6ec31a2d185210e41afec0e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): This could be expanded to any classes where we know all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6337}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcd22fa37c8cca3b4bad96e2ff8eaf7ed66d34a3d92869c7fc95f9f03aa02d45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): This could be expanded to any classes where we know all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5682}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac326a59b92e0bcdc71295cfc099021f4a7f57542c9ab83089814cdecbf0e09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): can we encapsulate REPL name lookups and remove this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6408}}}],"partialFingerprints":{"codehealthFindingId/v1":"7897c99f640de9d51e3fbe964488b0ad8eee70c3ddb6d10b7ccbe01ac92b6f8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): can we encapsulate REPL name lookups and remove this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":5753}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a25930203c8f619089f5e35629dd3f7fdffc29553eca3460effce6a89c1d938"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): If this code is retained, can it become invalid after a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6568}}}],"partialFingerprints":{"codehealthFindingId/v1":"923908297b9b3f59932c55ecda95a20adbd46009a586a0c91b418ca63f978ab8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): What should be checked after a hot reload. I think only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6588}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d9cf8e7392f096b8c3c5c29f9b041da1ab649bbfbf1964d3cb9211323f1cde3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Handle retained call method invocations that have new \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6632}}}],"partialFingerprints":{"codehealthFindingId/v1":"1672d8986640a8531e34912d058e9be37aac1ac9c8b9acb6a3230362f9b9b9f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Handle retained operator invocations that have new \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6658}}}],"partialFingerprints":{"codehealthFindingId/v1":"694e10c4d6191803ea2848d1c5d48ede5769fdc8ce0be2a64a747e05e0b6aada"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Lengths of known list types etc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":6949}}}],"partialFingerprints":{"codehealthFindingId/v1":"159808d4801d0367a5c951264df1497eb3fc6e44d89adb96b7bb3c7a45632bd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Lengths of known list types etc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6260}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb3cbb699b43b1c28875addc2a13306c67bbd7dfeef54a9f8a513d02d670a299"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): using the target type here to work around: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7039}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee1f1b85ebdf6d47995c2c193d706a197ed4ff2d6d4ddbbcdc006ac5547a45b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): using the target type here to work around: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6350}}}],"partialFingerprints":{"codehealthFindingId/v1":"5653900eff09f9c5cdcc196aa5eabcf3a007f3afcd7e074563f99a6d08eff7e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): inline these from dart:core instead of hardcoding \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7049}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f70d4a31e3aaeecfbb4485e9bffd66774c33098b7623495467d066861c6595"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): inline these from dart:core instead of hardcoding \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6360}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0a311769dcb0d09fc3e780d5aab4e4c5d89ac1cf917b62ee0373d7420950a4e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We can generate \u0060a % b \u002B 0\u0060 if both are non-negative \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7082}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a6f07cb1725bb6a466b956cdd3e93e615f2cfc0129a26087a290039a334b28e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We can generate \u0060a % b \u002B 0\u0060 if both are non-negative \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6393}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9dca5599d6072b7989617bc7beabb7cfef2660ac6160c7ed862177ddb94454c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): When do Dart ops not map to JS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7139}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7516863d67da9efa0905910b047a2738aa4bf5da5f9a48428095d54fe8c5a83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): When do Dart ops not map to JS? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6450}}}],"partialFingerprints":{"codehealthFindingId/v1":"93b49a37e6efc1839b5f5b94355d85968f6ddb57eea4359eed331e6d90a24d50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp,jmesserly): we could use class hierarchy analysis to check \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7170}}}],"partialFingerprints":{"codehealthFindingId/v1":"4731407467731f2a07d937a9ccdf850f6a4f844dc5352b125606aed44a063239"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp,jmesserly): we could use class hierarchy analysis to check \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6481}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ea9b2438b3b462f7407cc7127475d37e7504e36b6763025bd48a72bc3a08e7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): calls that don\u0027t pass \u0060element\u0060 are probably broken for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7217}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f592e10f940e9f1b8fdf3037bd0c3a701c694a614dc8b3c0f1e3f8f26f3b80a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): calls that don\u0027t pass \u0060element\u0060 are probably broken for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6528}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee84fed7fb72b3bbe023fbcbb42ba502330c710afba1a5fae67e383e8699dee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): optimize super operators for kernel \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7245}}}],"partialFingerprints":{"codehealthFindingId/v1":"2716cd96369ba01f8f1af7c2b6b0d4e5179aceac7adb57eaa4d2a6add48b9343"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): optimize super operators for kernel \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6556}}}],"partialFingerprints":{"codehealthFindingId/v1":"406aae4de82cd301c7f5c7e3651f112329ec08f765e42e980022e54c4ab1d698"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Replace with a kernel transform and synthetic method filters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7362}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2fd8f24b146caa00ea77b10b4b799e953e37f8b9a9ca9774abd7f95c4caf4cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Replace with a kernel transform and synthetic method filters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6673}}}],"partialFingerprints":{"codehealthFindingId/v1":"436dbbf109f094ad19ada8602e4c76c31bcc2f8391bf6debce7b11ec1c053eac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund,nshahan): remove all uses of type literals in the runtime \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7385}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2007d23b76065689942629484cd431a04d3658c044f81a388ac75697ac085c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund,nshahan): remove all uses of type literals in the runtime \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":6696}}}],"partialFingerprints":{"codehealthFindingId/v1":"179503dea51f3a16f0c2fbfe99b269e1cc2bb06fe3f10396306d7cc8482ee043"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove this check if we stop rewriting calls to SDK \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":7859}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb87e6c3c805532edc1c5419cef77ceb931ae8795b043770ec6c2961efbb682"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): arguments to JS() that contain type literals evaluate to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8115}}}],"partialFingerprints":{"codehealthFindingId/v1":"720c56f6cf0bc1d262a57abd378612b3e5184cd0a607c6ad583558c7c793a38c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): arguments to JS() that contain type literals evaluate to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7248}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd1d9ac9dc59962248e0feabdfbbcd9e06a70aa4d3fd31e6538b476d4c50f5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48585) Is this safe or will it conflict with functions that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8194}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ae03d001df5d1fa015d5b4fe3316c2f73b4df796a3ec847447cb058554339d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48585) Is this safe or will it conflict with functions that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7327}}}],"partialFingerprints":{"codehealthFindingId/v1":"95488a9c00504e89f5c9d2f57113fb7d29ce04018b992d4c8f82d03edf41ba23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46002) All \u0060JS()\u0060 calls in the SDK should be explicit when using the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8728}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d76e0e04158bf4aa0d4077413f3114fcda6cc969b994deeda046edbada7372c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46002) All \u0060JS()\u0060 calls in the SDK should be explicit when using the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7860}}}],"partialFingerprints":{"codehealthFindingId/v1":"b73702105c442c6cf1b1fd71c5fabeadff2eeded1b2ffb2346f9a27c61a96b89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): remove const check when we use front-end const eval \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8791}}}],"partialFingerprints":{"codehealthFindingId/v1":"9094481a72e0c1cf7687f5a002bcd17023f22209ca818c8f453c13949cb56dea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): remove const check when we use front-end const eval \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8831}}}],"partialFingerprints":{"codehealthFindingId/v1":"562cc081d1f44b12ee6d1f2d73358666ac52005d85d814f469e0bf49f0b5f081"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): remove const check when we use front-end const eval \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7925}}}],"partialFingerprints":{"codehealthFindingId/v1":"633b072aba48035a1d2196bdae07db21825fe16f1fb774a8c02541c80d0f1ab4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): remove const check when we use front-end const eval \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":7965}}}],"partialFingerprints":{"codehealthFindingId/v1":"605eda0474dd718b972f73eba4945ab000cfb1178f3e5beaac4975ccba54bd09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Remove the following \u0060if\u0060 if anonymous-methods is rejected. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8963}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9825f0b7fc0c649c65db7595498db9850f2b9c261f0d17c04f177b2d1562273"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Remove the following \u0060if\u0060 if anonymous-methods is rejected. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8094}}}],"partialFingerprints":{"codehealthFindingId/v1":"778e3796b2879c5fcbd06b5a7c3cb256b9e76c4476d9d14e8122ea2373010550"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): make sure this doesn\u0027t happen on any performance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":8974}}}],"partialFingerprints":{"codehealthFindingId/v1":"830eb52e4292f62e054cf2cd0af5b9b8e98fbe890336c466279c80f6af3d3b89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): make sure this doesn\u0027t happen on any performance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8105}}}],"partialFingerprints":{"codehealthFindingId/v1":"031f51ad7e746bfe3c3dfd34cc374169ed169d8a38516a66051c673a079f8054"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): DDC loads all libraries eagerly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":9051}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ad0e343ebe3609e6d3c956193ceec26e7be784116ed2a650817f97ab2e0343"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): DDC loads all libraries eagerly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8182}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c4dc0cf396e87a1abda4f80bbc8295c0ce445a1671b55250336fec5bb94a252"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(vsm): Clean up id generation logic.  This method is used to both \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":9593}}}],"partialFingerprints":{"codehealthFindingId/v1":"67434910109e4ea2e902a872cfe184931fd1fa5efab31d2485f7796523755376"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(vsm): Clean up id generation logic.  This method is used to both \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8676}}}],"partialFingerprints":{"codehealthFindingId/v1":"703f519ba1c5024df1fa3de9972724127ae69813b41db2342d854254f5df5efe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Change back to \u0060const\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":9627}}}],"partialFingerprints":{"codehealthFindingId/v1":"549afaf56597f4360074568bddf58f70d38d4de6ab3077a902530bceb1dbd912"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Change back to \u0060const\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":9880}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a9fbd5fa2ae5ea80195f3053da181fdc64cc6977e665be035d299f94618fe9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Change back to \u0060const\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8710}}}],"partialFingerprints":{"codehealthFindingId/v1":"799dbffbfa48e6a1c9e5a65184e2e5f7c1d9b45e2acda2b82cede73ea0f7b72e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Change back to \u0060const\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8849}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f9bdedf6a83e1e2d838c6c45e68297e73967008ef54cb19a19d93fc59f5c248"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Change back to \u0060const\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8864}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bfe2ea93332eb7632d8b560656b0999a31f4836a31e1e6fae2712b5b05db653"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Change back to \u0060const\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":9016}}}],"partialFingerprints":{"codehealthFindingId/v1":"80d63513b9a104a1ed1b1d8d982de35c47e3928a79fa0eb805897cd255343fe3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Handle qualified symbols correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":9685}}}],"partialFingerprints":{"codehealthFindingId/v1":"37fb7ffe96ec2f078e5f1c0e997516b407c604d58fc75c7fa92a7ffa255de560"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Handle qualified symbols correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8765}}}],"partialFingerprints":{"codehealthFindingId/v1":"7de263864af0ec5a1d48cb4f331f9c14c99654a3c2f36850021c94b227a6f7d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Update this code and the representation of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":9803}}}],"partialFingerprints":{"codehealthFindingId/v1":"c84654cd3e200d1020778451c0501da53e1103d860285a76825d1773ef7fec41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): there\u0027s probably further consolidation we can do \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":9996}}}],"partialFingerprints":{"codehealthFindingId/v1":"0006de232b911c9a824d83401921bc2452f695ca34633e08fc46ca9408c026d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): there\u0027s probably further consolidation we can do \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":9186}}}],"partialFingerprints":{"codehealthFindingId/v1":"d24fc4b3511bb6899dbbc99cc0e4a0abbd6bcc0bafec39fee466dcbf2cba6659"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this could use a reserved symbol from dartx. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":10006}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5988a44fef99f933032085f8782783a26e69e8ca72d5cd2788b43825c598a8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this could use a reserved symbol from dartx. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":9196}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebb716363886b82eb24abc50476ef970dfebf3dc0cabbde8492e8ce0a46f6feb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): avoid the round tripping through quoted form. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler_new.dart"},"region":{"startLine":10066}}}],"partialFingerprints":{"codehealthFindingId/v1":"de801b287f3a0396523ae5807fb28810f3c2cf184f4a23d3840589c4d7bac5cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): avoid the round tripping through quoted form. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":9251}}}],"partialFingerprints":{"codehealthFindingId/v1":"761699bed5b7ccce5e9a1aa5f796eb3256712fdd74d398117e4306cd418c8a5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Move into \u0060startModule()\u0060 once \u0060SharedCompiler\u0060 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":693}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eaa2224391ded4101419770c30825c9a218e50e2a6e1b56466181f38d2c14be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): investigate this. It seems like \u0060lazyJSType\u0060 is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":1498}}}],"partialFingerprints":{"codehealthFindingId/v1":"8645110dd66455a9a3010e384f755111438fd07527f3383f541f8c157a1bef0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): find a cleaner design for this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":8861}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a8f613a18667b3ae0415c80d3db937f071ef1b82c6ab3f8d93225bce19589c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): we could specify a short library name instead of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":9099}}}],"partialFingerprints":{"codehealthFindingId/v1":"d82f03949641172df65053f28cc9a9c382fa1b55c72792d63d64334888c267b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): move to package:kernel. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/src/kernel/compiler.dart"},"region":{"startLine":9323}}}],"partialFingerprints":{"codehealthFindingId/v1":"6755403a194f80bc4e1390cbf4bb75586ceab695b9a145674482e7556cb5a1ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How should we classify \u0060null as int\u0060 in sound mode? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/nullable_inference_test.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"1db4a5e898b04f4b7844ea8e3b0904114549f396bcec4a1c1b3366712bd10194"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How should we classify \u0060null as int\u0060 in sound mode? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/nullable_inference_test.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d9fdb1e5deba3a0f22222be000656dc06b6d1b33721a57a93d3edb3c2fbd85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How should we classify \u0060null as int\u0060 in sound mode? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/nullable_inference_test.dart"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"c69ae93fd44e7d40a34fdebd3f1e4a35a1ba60c4845e5ba0370d2b9decfc4edd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How should we classify \u0060null as int\u0060 in sound mode? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/nullable_inference_test.dart"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"76430e53a0a8980feba121db2607c1189664e449ac4368df99105daf1b2fb3c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How should we classify \u0060null as int\u0060 in sound mode? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/nullable_inference_test.dart"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e67ccadc92ec618a29146f603437f94428b5f9b8eeb42d9d17674a375730006"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How should we classify \u0060null as int\u0060 in sound mode? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/nullable_inference_test.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a2f302a6e04c12e831268dc73c4b0bcb7ebc3b3fa48e72bcba77cfbed94e712"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How should we classify \u0060null as int\u0060 in sound mode? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/nullable_inference_test.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aff4759d2d5bf87b1e54990518ff544b2edbae922f99906a5b5f7927f7d829c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How should we classify \u0060null as int\u0060 in sound mode? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/nullable_inference_test.dart"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"d96023c1da0216529f1b96568a04220e5511cda953531df2b18f17f71667f909"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): How should we classify \u0060null as int\u0060 in sound mode? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/nullable_inference_test.dart"},"region":{"startLine":604}}}],"partialFingerprints":{"codehealthFindingId/v1":"910a4b44f01764243341d6389fe9ff10083f7413a2a66cb9c4412440392293db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Do we need to support [importToSummary] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/memory_compiler.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8c7b12bd374bdbde77030e2ff41991750649e19ed8d4d8c74a3b9498d8b7a8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Support multiple expected errors for a single generation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"75452b3367befaa01e3bf9d402ecaa5f57985bb8e90aa37045a78421adc9bc7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Move the creation of this data structure to this class to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"30caa6ef7025ea29a4be16481667ffa79214eeb88a02fbd561f59ce260d5c3c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Support custom entrypoints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"80d7d1575ad20f85588cf64de74f469524d0d23afdff125e75f70e858b1609bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): report time for collecting and validating test sources. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"64cb1586f8214b8ce8bd3084ae9595f3e76de7b19b76799ecc60b1650716236d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): replace this with a test-configurable main \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"099c3cf4c7614d8a84033aeb145291939a2a732bda1cb133e1876a3aedafc460"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Sending compile/recompile instructions is likely \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"6710ce55b7fa35fcb1f0f46adc235de31b300e7fcb342c235c121f67443efde6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Account for subdirectories. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e171d7aa97fd3a590156364113da40b559303ae59a4e4bb3a962e52e4a1a3fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Should we make this an error? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e2d974b2cb35191989ad9786a572fc9322863aa91ad01141824a9b2f44eeec3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): support subdirectories. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":1040}}}],"partialFingerprints":{"codehealthFindingId/v1":"d816e0d47617cc27229f234219a9ef96a110c83b2ec12ee884bb62f7ef5eb3d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Add support for Windows-style line endings. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":1115}}}],"partialFingerprints":{"codehealthFindingId/v1":"d10ac275353ec1721291bfbbb509839c59f0f4cee3b461fb52651fb18ac1ba44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(55297): Logs are disabled on windows until this but is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":1175}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7a76ea9b67d92b38fcfde0be2257da1acb426770b4ea3d3812bd52a79b8328f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Add support for full Chrome testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":1560}}}],"partialFingerprints":{"codehealthFindingId/v1":"9302aabe86a7449218cf6796ef728c8f1b4d1d3bab65499198157e8b324ab3d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Chrome tests are currently only configured for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":1587}}}],"partialFingerprints":{"codehealthFindingId/v1":"41007dfaf81cd26c6a4ae1c9a576b7ea42a06aad47b8d6325226a94df27a83f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Update if there is an easier way to get console.log \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/hot_reload_suite.dart"},"region":{"startLine":1657}}}],"partialFingerprints":{"codehealthFindingId/v1":"af708c4bfd1d5c3bda7181eef3727bd3c1c24ff09ce5a53a53dc2104dbd09bb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend this for multi-module compilations by storing separate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/expression_compiler/test_compiler.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"44ae8f50528f42d8a5a36e3af07d0ac73f77c5bdd8b6a434ce3de0263ec118e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Currently, there\u0027s nothing in \u0060dart:_js_types\u0060 that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/expression_compiler/scope_offset_test.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f860d80d66432186a7bd2dcee622b830d2a80fcdda98b1a8d44352652f227bdc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): Add recursive check for nested objects. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/expression_compiler/runtime_debugger_api_test.dart"},"region":{"startLine":764}}}],"partialFingerprints":{"codehealthFindingId/v1":"a39ebf4cc260a8270e928cea7a76ab8f18a7532f35a3d3525713a597598a9378"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): https://github.com/dart-lang/sdk/issues/62643"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_shared.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b80227cab518d22b4da37ec1a046532c905a7530e51ac5d97eab2a879059fc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): https://github.com/dart-lang/sdk/issues/62643"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_shared.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"c006d7b495e5f222415abcb8caab93f2dacc38d4b4cfacda89a06c9536461932"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove when kernel worker defaults to sound null safety. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/expression_compiler/expression_compiler_worker_shared.dart"},"region":{"startLine":1693}}}],"partialFingerprints":{"codehealthFindingId/v1":"b362f8a36893a7f6db7f197b1b9423f9c127c9968af6d7c5252362527e05a0be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#45713): Headless Chrome crashes the Windows bots, so run in"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_suite.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"703a9f87a694a8e454bf52acf8b75984ddc8f7665006e5d9606adfff14c86975"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): Add recursive check for nested objects. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_suite.dart"},"region":{"startLine":651}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b8ff073bdb5143788d4528f4cbb720007008c60659ba15534628c571256395f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin) - use an alternative way to identify \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/expression_compiler/expression_compiler_e2e_suite.dart"},"region":{"startLine":1174}}}],"partialFingerprints":{"codehealthFindingId/v1":"5303a3259a6c1ed272575c8b03c11f5b496314c272195d5fbd1aeb84a6b8a80b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin) - use an alternative way to identify \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/dart_scope.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"3047525b7be1747c42db3324e534bcffde8020f25c8fb68fd9bcd170a86c1a43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ochafik): Add more coverage. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/js/builder_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8d18c19834a7f58172db971b1d037e94dd1189586ffc09206c83783f28ad734"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Test for typeId. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/module_symbols/function_symbols_test.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2faceb796be6a83be24f829d6050b800a5b2e2096b156277f90f9267299b1f2"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack for DDC naming scheme. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/sourcemap/ddc_common.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7eccf5f2e9053df37de6956cd508801b93285559d0a0f30c845e95971e796c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakemac): This shouldn\u0027t be necessary, but it is for the process \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/worker/worker_test.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"f84be0bbc4e017dc55156deba40bf411ab63d3aef1d00a58a39edde7492863fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Re-enable when we turn this check back on. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/test/worker/worker_test.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aab576e1a2420ab45745967abc715d8918f631f1190c6e4004524bcd2e9a670"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): we shouldn\u0027t have to filter out invalid sourceUrl entries \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/web/stack_trace_mapper.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b5f35a2a4d6a96000f11a600667ea7234cdd8a28caa92b639a7d400ee91f0fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(https://github.com/dart-lang/sdk/issues/38869): Remove this logic when"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/web/source_map_stack_trace.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"531f120e6e36c05fd10bb0d9196d7ff186855d8c8b886c16ebaa332d007a83b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(https://github.com/dart-lang/sdk/issues/38869): Remove this logic when"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a9afdb1b3b8e8d97c4163b569b8c89c1e7e9e8e9d7643cef976866f361215c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danchevalier): get this from DDS instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd/lib/src/rpc_error_codes.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"64c624961545ff96434e471ebf32f0b5eb572900218527f9e9f020ac23ffc750"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danchevalier): add a serviceMethodIsAvailable experience. it will listen \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd/lib/src/dart_tooling_daemon.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"090f591d785de59fbb59df4adfa74a54348bcfb68a62f0e1759c6a493704a196"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danchevalier): Find out how to get access to the id. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd/lib/src/dart_tooling_daemon.dart"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"7804f72a4f4ebfe769ee98cd47e69fd2dfe05aa267c92e4e90a0e82b8ab2b44c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(https://github.com/dart-lang/sdk/issues/54429): Add shutdown behavior."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd_impl/lib/src/dart_tooling_daemon.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb533b4eef097e4af1b8fb51a0de9660e7269693011ec87dc8abf73a3d31fb9f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danchevalier): clean up these exceptions so they are more relevant to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd_impl/lib/src/dart_tooling_daemon.dart"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f15a99000db99afbbebff1c951d1077aff7f9ecf5a25792ddabcea97b9d99ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danchevalier): add a relevant dart doc here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd_impl/lib/src/dart_tooling_daemon.dart"},"region":{"startLine":586}}}],"partialFingerprints":{"codehealthFindingId/v1":"c298005f94e8fcc745878e2d64759dc61a6771a637046b6e2fb4d721892489c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eliasyishak): pass this information (https://github.com/flutter/devtools/issues/7230)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd_impl/lib/src/service/unified_analytics_service.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e26be7b36f7212955c3bc53cc4453926d3de173b492573ec8364e3e1eb35922"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace this polling when notification streams are implemented. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dtd_impl/test/dtd_test.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"1df6c119e2f88a89ee0ac66cc820d075c1ea093d2cdfcce65504bafc57ee1e45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): only allow for serving DevTools via DDS. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/dart_web_debug_service.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5005ecf8f1b091c211c0155ffbf62ca370deb8b37f886d45747281667e50a43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(https://github.com/dart-lang/webdev/issues/1315): Ideally the engine"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/dwds_vm_client.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"84272e83788888128ed6e85816459d7efbd7e87835c1ef4adcee406e932c3084"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We don\u0027t do this for the AMD module format, should we? It \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/dwds_vm_client.dart"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"9808ac6e3b5107e7a698e566d38472fd2b0c9a667637e581a9e8b63fbcc692a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(elliette): Consider making this final (would require updating tests \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/config/tool_configuration.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3db6d2d5e3536c7c907fad27ff7a2bb60f38e2f9a8e5bc6a9d4f183ba7cfc50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Handle race conditions more gracefully. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/webkit_debugger.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5fe872fdb7c06faa88fe6176186a5daf262b59fbdfb930f57e14288c273fc7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Collect library and class information from debug symbols. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/libraries.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3fa77bce15b3f97cb82096fd7ad540f21d8ada43f16d48ff0a5055782902136"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#777) Consider a way of not passing the whole string around (in the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/instance.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"f890c1f235b07e3858ceb170c0ef645bd8dd3b3849884f0ec9408ee5cf0e39d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): convert JS name to dart and fill missing information. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/instance.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d3c4052d36ae8609a6b58fba3cac4e4a4084b3c63591ee372fc81519fc25198"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(grouma) - Convert JS name to Dart. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/instance.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"da50364f047cde7399275df36ccad0f0994a74c39917a9224b3e86b53240e35a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#761): Better support for large collections."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/instance.dart"},"region":{"startLine":828}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a5de028d665cfe2831fbf39a0cb4f67ba30596f2f4c241b6ab75135503b1c6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support truncation for long strings. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/instance.dart"},"region":{"startLine":864}}}],"partialFingerprints":{"codehealthFindingId/v1":"0000af30065542c1c09cbb83d87e970686bbf715de8149c6a4773e22ea9166d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#777): dartIdFor() will return an ID containing the entire"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/instance.dart"},"region":{"startLine":865}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fe243e3d9400d51475ea001b7d7c4324751e4b36b73316fc143627a60f4403e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin) - fill missing information. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/instance.dart"},"region":{"startLine":906}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f17656a396e2d8916cf1350bf95a27df79063accf06cf766937ad70dc571251"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(grouma) - We compute the frames sequentially. Consider computing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/frame_computer.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"6121d3f77c7129fd1bfd9c012484aa1fa10b479f828433d14cb6e0c91f91a3f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(elliette): https://github.com/dart-lang/webdev/issues/1501 Re-enable"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"d47568d27145d56053646a481ed6ec6f21ab6bb6223dc6f8b206a3d7df876c22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(elliette): https://github.com/dart-lang/webdev/issues/1501 Re-enable"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa5e43afd98b8d38eb36448f68c21542f335461e33faa8378a8089c4bd23a7ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(elliette): https://github.com/dart-lang/webdev/issues/1501 Re-enable"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fb6315996c394474954c78809cea4566137a965f1f23e86d9cb32d766b9d152"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(elliette): https://github.com/dart-lang/webdev/issues/1501 Re-enable"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f42c8d5e063ece5c49c16281090afc4a614d9aa4a5ddb6659a3cab15f71d322"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): Can these be moved to dart_scope.dart? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":383}}}],"partialFingerprints":{"codehealthFindingId/v1":"5394471751b3eb23a8bbb419d9e4141e4e697377bcd26a3d7646c139dd5919f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): value might be null in the future for variables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"a91e91a7adc187ed81bd395ba41f938dfca8800e6be98527ee877cf70ec3227e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): Handle these properly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"da416c7ece65f43bfd26d50732a90745eb2027774245fea23da6bb8d1380c8ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(grouma) - Provide actual token positions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"52c3ec3f70dd226a808b88b7c9a2cb968a06f629ab084e7fed77c01c37d17ce0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#700): Understand when this can happen and have a better fix."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc8e641cdd18a32e3428f9f453a44ba2925f8d6b5349e1e3c407dd69a046f3e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(grouma) - In the future we should send all previously computed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":620}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d90ad13fa1575a60ab93aca73fb2a61afa7ecc02ea33cd44f7420aac48d66a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Return information about the error to the user. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"f75d93f8250d5b5f1353ff68d1f4ac196e6ef96e9330b398df5681bae493eeda"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): Support a version with arguments if needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"97b337ecc03c2df0b6200620a0356cf171dc7a885b77d87017d50388036e0afe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): Support a version with arguments if needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/chrome_inspector.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aed1a72ab8537649cfeec172dce1e7f5fe470ee41d41e7a1475190fa24f4fbd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Handle cases where a breakpoint can\u0027t be set exactly at that line. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/debugger.dart"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"95436c19d6a89f461a619207e7f315e8ef20bb5b93e3ef6234da018f75aacd5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): remove after dart 3.0 is stable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/dart_scope.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"3520bf762419c959e940944323155c35f384f7d845fbc9f8bae32d8833217600"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Try and populate all the property info for the scopes in one backend \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/dart_scope.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"a484f7c3969a9df1efff6adc78451d47cbaa25ff42a5f33d4aab4e55b6b769a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#786) Handle these correctly rather than just suppressing them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/dart_scope.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"74f9986d26555e078a8b00282509344662f2aad1baff39c49b74921c9f40c799"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement the rest of these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/classes.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"352c0a8c243e83b1ffb6781b86ae1c35a3416558430b93a9afa98941348c587f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We can invalidate these in a smarter way instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/chrome_inspector.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"afdfd0d2f4e1e589247fe0602771fbe01a95e58a60f90ee0fbdae3e107af6c64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): Support named arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/chrome_inspector.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00d7a8306f04f9d6220441a7c8949a8bff56734478a542d8d5376aadc20859b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): Consider adding some caching for this method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/chrome_inspector.dart"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"c35b3e25cbf86bc9b1de6ebcb8814473098f4fa874bb260211169d12cb4a274e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#809): Sometimes we already know the type of the object, and"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/chrome_inspector.dart"},"region":{"startLine":568}}}],"partialFingerprints":{"codehealthFindingId/v1":"43adabb74e01be18f5c04cd5d121e5f7efd17183af7540758d9d9e83139719ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Generate sdk module metadata to be consumed by debugger. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/metadata/provider.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"57f7e0da95ee62c11c3ecb1debcffef9848b56de3787ec20f820e7446b4c5e64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): It feels weird that we add this mapping to only this map \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/metadata/provider.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"25ef5289ea04d78bed6d81f8abfcd268dab7d8a405e7b9502158baea6ac82d29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Remove once https://github.com/dart-lang/sdk/issues/59618 is"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/metadata/module_metadata.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb47d57bf45bd1f4c1c1c3873b16171e182fb2ea927f09462ed35c7760714146"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): Update when built-in parsing is available. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/debugging/metadata/class.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b9e125c089bee156928a1dcdc52b145d184ac938be7647589a4131cbfc8136"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(grouma) - Ideally we surface those warnings to the extension so \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/handlers/dev_handler.dart"},"region":{"startLine":1039}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6417b2a300050672cfd22fc30fb2a7bde8053e19f55b14ac8e0f0c0005307b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(grouma) - We may want to log the debugServiceUri if we don\u0027t launch \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/handlers/dev_handler.dart"},"region":{"startLine":1131}}}],"partialFingerprints":{"codehealthFindingId/v1":"f362592b07adf982555b8c8a60a4b2cf4eb964bcb12990aca4a5c9d916f2bb29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Save locations of full kernel files in ddc metadata. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/loaders/frontend_server_strategy_provider.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"28a70bde0ad9b88815632da2a0a56a9e799f032d92b0d718a0be0d5b75667f95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Save locations of full kernel files in ddc metadata. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/loaders/build_runner_strategy_provider.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3d03eaf387859c926249ef04b98c35cefb0a44c269490a41fd10e5cde03428f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This is mostly a copy of \u0060DdcStrategy\u0060. Some of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/loaders/ddc_library_bundle.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"b171cef5a3351efe96760035d8655b046c9ec53206c5604ed8fba7b5caed7b8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Implement a hot restarter that uses digests for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/loaders/ddc_library_bundle.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90181d15e18c82c84f011706eb2816d034eb115534a601121006642baeabf66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): Implement a hot restarter that uses digests for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/loaders/ddc.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"9667960c8eb7b859ddaaaa66f2a128309ea7a1e8decce5ce43b21c7395c0c641"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Refactor code that uses this to avoid loading individual \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/loaders/ddc_library_bundle.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3683019a0d60e460e520a78d4eb2d931dc4d442dcf846c0f713115daae86542"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Change these to URIs instead of paths when the SDK supports \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/loaders/build_runner_strategy_provider.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6f379bdbaa31186dc8394220a9aebf974f2a807413fcccec89370b381534bac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(grouma) - Implement the merged metadata reader. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/readers/frontend_server_asset_reader.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"df0841859f7a38fd0fc5dfc65d1485456163d26954450898821867bc36132069"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#988): Call completeError(WipError()) to match the behavior of"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/servers/extension_debugger.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f233791c062736146726dee55985718141450c5eca455104c2d4512c651c79f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should return an error if the stream is already being listened \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/proxy_service.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"885ec9f27389e7515639e4c7f8a9d9a783445702aed1f68f4b9789f894e23b1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We should implement this (as we\u0027ve already implemented \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/proxy_service.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6528634b026bc7c114206d6c829104741e63cc10dc97fcdcb83270f6a18b1c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): map JS locals to dart locals in the expression \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/expression_evaluator.dart"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"218e8313319a29951d756afc79597a6015b6a9efde1184f3c743da98168fb61d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): modify frontend to avoid stripping dummy names \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/expression_evaluator.dart"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"b58b361e7c629299bb7d95e381b04b7044c36d5a04d8a3c9c3ddf215a5ac7abb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: null values represent variables optimized by v8. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/expression_evaluator.dart"},"region":{"startLine":485}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b34018c97cd8c6af3687b84eee5ac188f904d9f65c5903f029af55b33114f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: remove adding try/catch block in expression compiler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/expression_evaluator.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"273018ba5dd76cf4dc4a51f9093b43f9f51d38fdf71fb57b26cc2698c687f0fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: We shouldn\u0027t need to fire these events since they exist on the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cb818b930e041b6e595b2177552cc64f0d846a0a1dfd476c15338b5f5342bc3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): Support setting breakpoints in dart SDK locations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eb678b10ab4686472f30a16d46883e501f76b8229e09ea78b4bebcfefdd6004"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(798) - respect disableBreakpoints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb3d6f81e055e210204b4013dce7e37cb850226f4f4976f956c67d5cf45711b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(798) - respect disableBreakpoints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":632}}}],"partialFingerprints":{"codehealthFindingId/v1":"47c17b3c29f8c92687a8994829e5ce4b34f9e20861d21e1018d9837b8f4cef0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(798) - respect disableBreakpoints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":703}}}],"partialFingerprints":{"codehealthFindingId/v1":"7226f4ee8d8149978ba917931478e7e694429f5a813e44c13b0bdea275ad606e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(798) - respect disableBreakpoints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"3518395c12b633095c2b52210fe544239cf293ac431156dbd3ae20e3d389e291"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(798) - respect disableBreakpoints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"a83fd25de62889f127000c021920c4c99982312e97f91933a6e0f6b1f67b5d3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: right now we only support the \u0060ServiceExtensionAdded\u0060 event \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":882}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffcb9a945998ba686e60b1734c031eef2ffa7ae0b122c499c62124a744eea7d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Supposedly Dart DevTools uses a kIsolateReload event \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"83958486136d6a0efd0b78f4dc448fdf2f7709bd4e50ed75e4041aed4d5927ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): remove after dart-code and IntelliJ stop using this API. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":1107}}}],"partialFingerprints":{"codehealthFindingId/v1":"97e3a19f5ac65cd621a86e0f9502c50df7351898a3aa94af74bb34d339f21b68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(elliette): Is there a way to respect the shouldPauseOnExit parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/services/chrome/chrome_proxy_service.dart"},"region":{"startLine":1121}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3039a88837722be74745587be21d170a79871c74f53cbadb111e2e1a3da458d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): Use debug symbols to map from dart to JS symbols. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/utilities/objects.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"55e2431e470ab9fdc43d81c123bab827d3092e11fd791973a26fc438dc7770b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): Support creating DartUris from \u0060dart:\u0060 uris. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/utilities/dart_uri.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce5f067733684da0486308d7449fe7ac31e3435765573af9dc1576af93cb61f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): Support resolving \u0060dart:\u0060 uris. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/lib/src/utilities/dart_uri.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"f54ad1bf914a5ffe833010b97a21bbb94663f55f74226bbf547be9233ab9274a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This should be the same as the uri of the AssetServer to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/test/frontend_server_common/resident_runner.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"6eb5478c45fb304a2952746a66bc2c952d00e4739402086922d5be5d87a34bf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This should be the same as the uri of the AssetServer to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/test/frontend_server_common/resident_runner.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"b759578b507c27704576e00e8aad4ece5e12dede2ef3cec7d0979b87fb16e867"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This should be the same as the uri of the AssetServer to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/test/frontend_server_common/devfs.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"33d90c59678a56a3298a7842768917cab859886e46a91125fec97da995a7aafe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): make sure this works when we support hot restart in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/test/frontend_server_common/frontend_server_client.dart"},"region":{"startLine":628}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d5574fa3f0a27376eb28a129f9e080176bcb578a8eac70a766fd14af955c0da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(b/165021238) - when should this be invalidated? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/test/frontend_server_common/bootstrap.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"70d18dff3c15c6c3decb63d91ddf06ff3fcc2365d53f6f681f5ea151b1aa6f18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(b/204210914): we should really be clearing all statics for all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/test/frontend_server_common/bootstrap.dart"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"5655f5bf8f642e92de11f2fbf5a185350865cf0f86ec1612a7c112c7ab02aab0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Verify this is sufficient for Windows. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/test/frontend_server_common/bootstrap.dart"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"72ad1ad098b45394284fdf180c207bb28c4970452090332478e0171f0dd3f3b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove after migrating to hotRestartBegin/hotRestartEnd. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/web/client.dart"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"197b57d0ed992c898b20177d03b0ca7c777701d6263d993695f6f01afdf995fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove after migrating to hotRestartBegin/hotRestartEnd. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/web/client.dart"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"57a88bc7f797f17c3db39e6579f133ede5a55790bedfd8bc4e7459921fe9e7c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove after migrating to hotRestartBegin/hotRestartEnd. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/web/reloader/restarter.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"e13bbf5427bd4c7b1d6450b81ded52bd85f38250e0057d7ca4c86437d1c0a5f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Move these members into \u0060Restarter\u0060 when all have been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds/web/reloader/restarter.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aabc4650483934ef873013d9f2aa129f349efada872fb1f3f254adc2d367552"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/dart-lang/webdev/issues/2508"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/fixtures/_test/example/hello_world/main.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdf8abc583a9535d6e9c249d491da319f9719cddfa81a53edcee82a9bf3a809b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/dart-lang/webdev/issues/2508"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/fixtures/_test/example/hello_world/main.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"880214102075557d42e30735dbbdbd2aca3b34548ed5c01d763a051b67654ab3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/dart-lang/webdev/issues/2508"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/fixtures/_test_circular2/web/main.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0a2f831cf2206327fb456718a4101685d2b8d0c49352f71add6cfcf9739e216"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/dart-lang/webdev/issues/2508"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/fixtures/_test_package/web/main.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"91c7f2175d23e4fb767662900ecba5a2e494030b02eb519d91d2cc28bfdf0eb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/dart-lang/webdev/issues/2508"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/fixtures/_test_parts/web/main.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"141800e1734945e7845407e8c87d02781796ea0e54327a4b93062ea5ace6691d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: https://github.com/dart-lang/webdev/issues/2508"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/fixtures/_webdev_smoke/web/main.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"810a11e41d349098dcc81324a9a5462436802d0ba727f12ec7aa8bd4156ee718"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): It\u0027s possible we may want a library file with the same name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/fixtures/context.dart"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"b54c1042e03099edd03d20437460c8445199854609ccfbe79f9523aba9b519b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/51937): Remove once this bug"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/fixtures/context.dart"},"region":{"startLine":457}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cd67cd7026583f53de607ce92dad5f7b52bcd875c03e30a97d611395bdba230"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Be able to set breakpoints before start/reload so we can exercise \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/variable_scope.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"af8549ec26289b3006aef93515927bb48c41ea8c85e98490a1203b43e84dab0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): record type class is reported incorrectly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/test_inspector.dart"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4f016bf4b825bdce8653542089b12b3c20d58337b02a9a98f8bf4084dcca9d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): record type class is reported incorrectly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/test_inspector.dart"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6a0acacedcc10acf790f144f490632e45ee29ff60f1623c8c6c62eefc85c57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): remove old matchers when DDC enables new type system. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/test_inspector.dart"},"region":{"startLine":441}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d85a07e0ca50d4ee70646c54fb0e950ce194c773e948a71a85c909ad127230f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): \u0060matchTypeClassName\u0060 is reported incorrectly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/test_inspector.dart"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d00bfc87b05d49a2e8bb153722804d0dbfd6a6be03acee44f40b81d68b6f8cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(elliette): Re-enable (https://github.com/dart-lang/webdev/issues/1852)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/events.dart"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb171cb51ff13e8f6e7262b735642b5a5f63d2928ce125bf52f25a7dc5a7801"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/webdev/issues/1888): Re-enable."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/devtools.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a5b4ab0729fa163f5c327fa5bc859116d37e76820a674b24f5d9dbbca5e5824"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/webdev/issues/2297): Ideally we"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/class_inspection.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f55666748004386f9ff7e5902f1c4503cd86555398f16e3feacf0d2ca8e7f5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakemac): Add tests for the ClassRef once we create one, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/chrome_proxy_service.dart"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"78c65b08df8d12c1713e17f09fadd449a0a0b9d5d4c7cb07372a5457ba155733"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: library names change with kernel dart-lang/sdk#36736"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/chrome_proxy_service.dart"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"6de462bde50e536cd173e0517e912cec0c7cb65cc620b58162ebbfb86f50c1c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: library names change with kernel dart-lang/sdk#36736"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/chrome_proxy_service.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa05b8b6f7d6ce30410ad4ad3390930ef41c689ef7142e467293c64d4b7878cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: library names change with kernel dart-lang/sdk#36736"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/chrome_proxy_service.dart"},"region":{"startLine":601}}}],"partialFingerprints":{"codehealthFindingId/v1":"88efcd86f5121eedfa97daf1c19f311959bff0ed087a6fbab42214d4a64c611a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Make this more precise once this case doesn\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dwds_test_common/lib/integration/chrome_proxy_service.dart"},"region":{"startLine":1687}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a6897a8e24e5f9ffb77d993b043e479eeb458a36fa8f2c5c579dbd5fd3dcc18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(b/448095881): the tearoff operation currently fails in JIT \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dynamic_modules/test/data/dynamic_call/modules/entry1.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"70ffeb85e3394bacabe2841d95c811e8229bfa24ef64226046d5ce7e968f119a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): expand test to use records, which currently fails in AOT. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dynamic_modules/test/data/indirect_expose/modules/entry1.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f6a7e4f3bab5a85f1e0bd03b07d0e30a2d47e44bbcce54d249a7c2cd15d5733"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): provide a mechanism to specify options from each test. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dynamic_modules/test/runner/vm.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"480224591a6bd68c96c82b112cf03895794615d7628235998da02291b517a108"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add support to run also in the ddc-canary mode. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dynamic_modules/test/runner/ddc.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"e330873b04a560630790ac62f073365165ef43bd0090775966fe79bd7175d1c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider specifying the module name directly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dynamic_modules/test/runner/ddc.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"10e85ae1a2c95b8cfafc38c7fa67274da6f25e3339af09c5b7c7000c83d67340"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): remove hardwired entrypoint name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dynamic_modules/test/runner/ddc.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb00174989b736524541e886756b9dda968aa75983d117be482b241c400a8f5c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54798): include conditions for VM/AOT/Wasm backends (current \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/variations.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"734aedb3128d50bcfc733bd2748d22fab559ad208daf79fc44b083b1aac6a276"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54798): update this dartdoc to also have a link to the standard \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/variations.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"431bbdd4b190b6f82090d9038eefd2397f8d0ea92112234919c4d1e768452c7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: If information can be made available as a constant, use that. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/variations.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e3cd5a7ec779f9fac034f3b65df917a0aa1c46c76ac330bb806519b51479ac3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54798): migrate uses to directly import variations.dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"a19cbca8116cb2a7c09c7ff2acfd6f00951cd19f7e2c23087b842d2f8f848875"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54798): migrate uses to directly import variations.dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"440cbbaa6d238dcac1f35b357a822da21fa96d62f4f1660ec5ff2cd89aa44cb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Rename to \u0060same\u0060, to match package:test, and to not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"98ebf44a7fbc191abcc8fd7a4e133837a8add5ec67653ca726e1dfda2e6ed22b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): It would be more correct to change the return type to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d0e71e8ab15f96de67a59eab33a0edc3f05b2d0c6fde64b9bab3596a996d46b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sound-null-safety): Remove. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e8e5ed7138fbb459f9856863963aa75f86c4df0266c55a39167ee4e93fdf966"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Remove this method, or make it only do runtime checks. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/expect.dart"},"region":{"startLine":959}}}],"partialFingerprints":{"codehealthFindingId/v1":"eface5bbae20a38a20e28df3cd0d6506c4387327b1763f095b7f9f1d9bd0843e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): It might useful to validate that T is not bound to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/async_helper.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"675dffebc9f0c6b4f95434dd78265732955422ad652edb0c5686bf955e0e40ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Do something useful with the description. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/legacy/minitest.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"e246665befdb09386f9983ff9cf4bf3aef8401dd24337d54687565d4af0d107d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Do something useful with the description. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/legacy/minitest.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"581e273735ba2395fbc4956ffd4fdb99523d3363fc65f6f0653ccabd977ed366"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Do something useful with reason. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/expect/lib/legacy/minitest.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"307b1ee2e21a55b5ef8d30ffb0f4de18b6e6c66665bdff02b95553d8f4a60d65"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Could we detect what ones are changed/added and only test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/presubmit_helper.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"4730947ec38f5fb47f685e54bfd3d5af5c27bd6d14c1bc76b445d912c4d1fda3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Not here, but I\u0027ll add the note here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/presubmit_helper.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"489eaa906125ed6e42f1bf2312e2b4c2568840d6086880f18043d147ca0fb509"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should Zipf\u0027s Law be used for \u0027first\u0027 and \u0027last\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/benchmarks/patterns/test_datatypes.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8a73cc40144fad4dbafd0718f4145a252eb40d174310ebc88849aa1e5c21de7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(johnniwinther): Support using the full dill. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/compute_platform_binaries_location.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"d274e9a4a7bebff13b2a6c9760845591316715ccf94285e6a439ae118858d44b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Empty schemes should have been handled elsewhere. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/standard_file_system.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d8e1c0b8457c4ebbf41c04f4a477b9febbacff292686a0f7529ee20144741e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(CFE-team): What about [Link]s? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/standard_file_system.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d1b99b2d701251cdba0e6387ff1270dc62b59c35ff1caa72199ace1c8158055"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(CFE-team): What about [Link]s? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/standard_file_system.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"832ee72f72059066717a8eb94750756361e238005ba7a9053f38f9a1ebdb44cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Rewrite to avoid \u0060as X\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/lowering_predicates.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"d640ced871020dc3f7070ba846b89c59a8a71e6b043b5260ffafc49bca998add"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): rename to kernelForScript? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/kernel_generator.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8816b5521df1a1895148653a62958d8a65bb6bea2613c976702d969b81c48b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Rename to \u0060platformDill\u0060. See also the discussion at \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/compiler_options.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dc9395f5993b541e56722e34de769f19ac0c9c14517aa65dd625f72c25693b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// file system.  TODO(paulberry): fix this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/compiler_options.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e3c0f1336158ac6447bbee134c812a77b8bbdffaa70dd10254802fd88b2009"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): improve the diagnostics API to provide mechanism to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/compiler_options.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb66fcfda4472f0eac53be2e5d869b91e81fbfed32b84f19e722f6049e759afa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): change the default. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_prototype/compiler_options.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"2723fd32acad99342cc27fcd19cbb4540fb3b3b00d1841bda117505fefe6d658"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This is - at least currently - necessary, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"73bb6f4a82a18fd2a854f7cd7dd7c10e984f3252143901a9076a80bc91db31d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): use incremental compiler when it supports our use case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/api_unstable/bazel_worker.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8d8dfe0486ceeeb0e0f6a1e0ae7ab4f8d1a56ecbd9d9ea1477bd9b5fb690bb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund, ahe): consider expanding this API to include an error \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/uri_translator.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c54e561eb81818b39ad88420ff90973069bc366306b5af2b9718d4331153445"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): once we remove the \u0060parse\u0060 API, we can ensure that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/uri_translator.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a5882f2b4453e6b90ae2eed7d74d1154d0a1339f11695e70b386a09b64e8a5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): catch a more precise error when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/uri_translator.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"50407f545e27f94f544898c7ec0a4b5e4b7d0da01b25ae16d94976737ee06a98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund, ahe): ensure we only report an error once, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/uri_translator.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"978a88e14325c405c7d90ed9c1d7bb6ee6093043b3ba5f9cd355c97a8833c169"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Can I move this to Scope or Prefix? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/scope.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"043309cb8cede82ef6e077bbb6c611b60a34957b6667d572abdb7749ae8c1fe3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): We should probably use a context object here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/scope.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"16431964e9f8a62cc0a45f1fedc7f781c7ca73776b756895f022839135556f3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): We should probably use a context object here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":483}}}],"partialFingerprints":{"codehealthFindingId/v1":"6df7033ad27874bafd3af09f49f35d7760e4972a89d5a2d767def29ccdbbb489"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Copy the map when kernel_service supports that. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"be46349ab2cfdf2c44783545e014b7e354453b9a930667870675407bab20608b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund, ahe): create ticker even earlier or pass in a stopwatch \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1ed7644defa97e3807fc17af03318b47e55f0ae949e1fd80a27348776b31320"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Remove this and direct callers directly to report. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"650040fee017c29fa1db90d87eaa87016a2bdeca22d4b0c847ad9be84c2f8901"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this check, the compiler itself should handle and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"569e8e2bfc10ecdc7ac97f543f5292c300a3566a3d94ad5518923f266e0a545d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): move, this doesn\u0027t feel like an \u0022option\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1b97f1b81efb428c6ec5fcd1e3d7ebc73b790f01cb43b9e419687e1df00fbe2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): move, this doesn\u0027t feel like an \u0022option\u0022. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"41666dc259246ef8488e0d620e1ef31e505d81e056d7ab99b41496563ea898a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): throttle # of concurrent operations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":548}}}],"partialFingerprints":{"codehealthFindingId/v1":"498f255b20a2326403696594d24ab46c700c868a73cbdca4a300b85d0adf2927"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Control lazy loading via an option. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fbade8019ee7f8e21a864e1a2fdfd4431f13fd4855fa055ce8984a16062da18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider not reporting an error if we would infer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":668}}}],"partialFingerprints":{"codehealthFindingId/v1":"d65aef2ece6e892235a752d0df839451944a5dd2d2aab1d6add8a7fa549369a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): We need to compute line endings for this file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":695}}}],"partialFingerprints":{"codehealthFindingId/v1":"488a5e98b43be43a38abb43789028621797aa4138ac9886fbe5b7f0b8a8d0d24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): implement the algorithm for finding the SDK \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/processed_options.dart"},"region":{"startLine":893}}}],"partialFingerprints":{"codehealthFindingId/v1":"90b6d81d83e4d0a1361387b00c7e7568ef0fc06bd4eed2e36a7609fb584631d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we have a map instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/operator.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"1516b8c4f2557b29eee298cfb0abc36d80d5042ae996f5e0c1c064f823721aa2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly save under a different name and move the file once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler_cache_impl.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"599525eb5f210c02329df19580845082ff5a9732d6f1963e1565d24d9ca73550"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj,johnniwinther): Given the code below, [componentWithDill] is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"78140d9f9cc0f1450570f38f0faa49aca6287c87b02796759cc8b3ec594b6800"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): .contains on a list is O(n). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ec854480e6ec3547cc676343cda7ccaecb8b851353e366ab35a36569098132"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): KernelTargets \u0022link\u0022 takes some \u0022excludeSource\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":957}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7f79d78687e90aeff5d7b466dbb3404f8122749794320771936721ce3997ea6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): For now remove all the original from the class hierarchy \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1158}}}],"partialFingerprints":{"codehealthFindingId/v1":"69341e2c43726415bdd4fe56a8c6dfbb6520811797d76951c8bd0ced4bc2a6c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly just treat any such libraries as bodies-only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1311}}}],"partialFingerprints":{"codehealthFindingId/v1":"533e377bf442159d2c5ce2f583424ce9c435b096952a532ae48f1d9fab8b6ca3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Check for mixins in a smarter and faster way. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1410}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ec2bff959414627231b2b8a533ab03b6a7beff305173380a07d05863517989b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): We can probably add this to the rebuildBodies \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1428}}}],"partialFingerprints":{"codehealthFindingId/v1":"7beb6fdacfde0a925e9e97649ea5634aaf34c94c516711c017bf304ba698711b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Come up with something smarter for this. E.g. we might \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1449}}}],"partialFingerprints":{"codehealthFindingId/v1":"277465c3c86918f35dd28b1399af15c4f635693726924bddde6c89102dbbb8ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): We can probably (from the maps above) figure out if anything \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1534}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f69a49a0d2aeee7162aaffc12468725400ae0b0c7d90a6c09eed88b9cbd7fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jensj,CFE in general): Eventually we should get to a point where we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1611}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda9b598dd230a3f92f289a3532547d85a092da502a4bd0fc9109cef0af59884"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jensj): This could probably be a utility method somewhere instead \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":1613}}}],"partialFingerprints":{"codehealthFindingId/v1":"13da8651ff6d989f4c11d07f966fbf86ebc6feaa8efbcc20490cbebced92d6c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report an error? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2029}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad6139d3781f6a331af9c420a61931f28dd3469da05b1fbac386f5af03ffe5b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report an error? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2072}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5e7a0a1a9b7ddee986cf3494c3d695cf3dfd849aa4fa4b8e9ca2d396f838cea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): If the found class is an eliminated mixin (and we thus do \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2046}}}],"partialFingerprints":{"codehealthFindingId/v1":"55c6f8081432ce6a4366a61f4361ec9de7fdeb1883e5cafa0b3a837318377d1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pass variable declarations instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2379}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bdd138331f3b4f0e5c30d1a5c75fd9367696cfe7c6f781b7d3770340c8ecba6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): If the package has changed do we need to check the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":2707}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b7ebd3c5ed23a4c472ab414399a647cd1efcd39408c9d199a63fd24b106b39a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Anything that doesn\u0027t depend on it can be kept. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3528}}}],"partialFingerprints":{"codehealthFindingId/v1":"768f069c2cdfc3b4291916deb20a602210e7028b7bfa3ae806c35471ac7d5b37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): We have to handle defines too. One way could be to keep \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3729}}}],"partialFingerprints":{"codehealthFindingId/v1":"57943b46c880e7f8e1983fe5480fdc18b0c7d6c136bb5c17b46fbcb584c7c56f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Depending on how we invalidate things here we should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3800}}}],"partialFingerprints":{"codehealthFindingId/v1":"edc68e86058bbdb727797e1b05a77398df67ba89c6d849e71e131580e3be8865"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Not necessarily invalidated because of package update. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":3834}}}],"partialFingerprints":{"codehealthFindingId/v1":"c65424b46d96515c05b501698931d3b5422e6088aedd45b9499fe53792c041dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Split this into multiple values that describe what led \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":4073}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d3426d9adcae085af2b7948d9f6f1239ede385d580fe56bee8ed51382f2ed6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): To support advanced invalidation this should be the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/incremental_compiler.dart"},"region":{"startLine":4226}}}],"partialFingerprints":{"codehealthFindingId/v1":"7267b4834673c692aaaa999620d8d231cb9ff60620d6311656e3465c4053d291"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move computation of dependencies to the library \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/import_chains.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"08f424031e0e4f815108bd01049491efeed2013113dbed4ad640f01555db6967"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(ahe): Update the above specification and corresponding \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/constant_context.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"72fe61db4b5a24d48d7aabec8f9d3238f7d5460974d33a1b0a2bb4a51e5d6ca2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): Move here any method in ProcessedOptions that doesn\u0027t seem \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/compiler_context.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"70004e7db95cbd676c2d59bba019cde08e0917783e3897049d1a4aa6e8072659"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Reduce code duplication of all the format methods. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/command_line_reporting.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa66654aabd91e3841fcbd6b14d5861e846c139cabb1b9968733702d89b8fa5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Throw in this situation. It is normally an error caused by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/command_line_reporting.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9b873680c0cbce335aaccd9909aa61d3f7f5dc3e091abf5ea5330860a39f456"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Throw in this situation. It is normally an error caused by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/command_line_reporting.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"1323e4878b4cd6b2dbc3d05d8e6c4f42b2ad9f24a7d984fc0ff4ce66a9ff1c2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Throw in this situation. It is normally an error caused by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/command_line_reporting.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"103d7ddaf3a02229e09caeefa7fdf251d518eb4a16bf8caa9b80c046604f1930"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Much more could be done to indent properly in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/command_line_reporting.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"44294c86c24a7ba07a66f3588d0a23282ae2bb2355fe59fcdc037f5097297ac6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): What is the right name for this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/command_line_options.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2c5afc119db47a6cc4cb6771d0099597fe465234dd43c842bf870112908f10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jensj): Consider removing this. Or renaming it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/base/command_line_options.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"19510f2d6a26406fcc0eab8f95c5d26c1183db73559150a7a45d36e96aca9a48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Provide these. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_parameter_builder.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"dda75d7196dc4cb6d7a3458d75221a335011465ec35aec3e9d0b4bfeecaef0a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Provide these. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_parameter_builder.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc39be58c1393ad1524e1d844d364fcafe6a91dcc79904e62e8aa03763fd503f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Provide these. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_parameter_builder.dart"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"4031c95698577d127a7666518df5b6c9657639f65e958b7452eac10f9a6dfa25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Provide these. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_parameter_builder.dart"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"90eef4f2d81afb2cee325396f77293aa047a1e25171bb791afc6cd0f25a64b1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther):: Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_parameter_builder.dart"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"e168e4eb05a60f022145c8eb14e22683ae8ec52e72398cc0b1fab9538c5bb4ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This doesn\u0027t currently have the correct value and/or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_builder.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"41076b77877737924125a31bcc815d7a961ae1b100f0b4ca59474b96d477f971"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change from sealed to abstract. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_builder.dart"},"region":{"startLine":306}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7b9c4dc646210e112967e5b9e8bca60b69864a01898f5b0ed09b80b9a20a086"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change [NamedTypeBuilder] to hold the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_builder.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f78ebd459c61a4596f85a6c5a12cdd326d306171b2860d9c14902315867cb8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we handle this for all types or just those \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_builder.dart"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6e7c2db1d369634a66dbacff5cb692605a9af6c427cba76818a0a11f45af130"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Used this instead of [unaliasDeclaration] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_alias_builder.dart"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"51010342009b8805c0d7b995f117d44b0e38f09e226d34323febc2585f34f3d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we enforce that [typeArguments] are non-null \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/type_alias_builder.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"de6c9acc8ac58763e6e7d0f1d38259e8dda398e836128bb3e5ce293c8c0000b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when backends can handle record types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/record_type_builder.dart"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c9a0b0bd0b77db624b58e463c74af4e37edb7d5f8ac32d5c0ae5cbeb5d0863"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we create an [InvalidType] if there is \u003C= 1 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/record_type_builder.dart"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae2df744dc3c101f23dddef2be3466c7b37a34c49037cc9d4f42e00e47ccf6c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when fields, getters, and setters are in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/property_builder.dart"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"367a0d28192c47bb037e32d8c7ab8a9499aecc361fb12b75f2aadbf17b944365"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/null_type_declaration_builder.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"671f43ef26b9b34eee8fe71c57050ee82c8e58acd3bd17af99f8adeef110466b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/compilation_unit.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"31df130c5db24998bda9cb6db62358704c7dea2e34424e6051a73bd8b267144b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/compilation_unit.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"34b7449ac016df27544b713a583e4e9027fe5ebc274270773787ea867e7c382c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab2ee2f61c00ab7655c325888b3120b83adbcff5d7f7677ec3701763cd34a15a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2679}}}],"partialFingerprints":{"codehealthFindingId/v1":"1931bec668f385e749ef53f06e6517f503ee4d2f5abe366b5a9b8624d0c292d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"511594945604006fc2a62501afc945f4e9a090db7cb653c8057b91def7055789"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"003e52356642088406dd95aba9d2752542a2002910d3952f90aff6566f18487c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":2131}}}],"partialFingerprints":{"codehealthFindingId/v1":"44dd87f7f9296587163eec9d776e68a33f07e7d39053e040cf94086cf388aa26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":2221}}}],"partialFingerprints":{"codehealthFindingId/v1":"80508559418786f86e1d327ad6650658055630d587266aa2a7f5811ae3acde89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we retain the declaration to support \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf73dbac31393a26bf355fd4e6a0922ea2897af104ea0d6b28be2e29669c695"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove check for \u0060is SourceLibraryBuilder\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5d87d9bbb87330ac4e00645333aba15d8559240b9be7dde70d164c7a79ee53f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Create a custom message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7630ee75f62143ef2ce8a5567c64490bccf46291ebe63471f35b428ac963ad3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Remove the dependency on the deprecated Null \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":695}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f10a323b247e7fdf667ae8a3f7c42aee35b33e26b71553e9d2f88c28ef88c5c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Remove the dependency on the deprecated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/named_type_builder.dart"},"region":{"startLine":722}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc25a92d9deaa236423592c15d037fecee35a56dfb2f7a4ad799075e60d2bc9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): A a kind to [Reference] so we can use this instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/member_builder.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"c08865faaa75dabdb1f8e50741275cf30c91a1c0fba7bf723348c260f666b5b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): A a kind to [Reference] so we can use this instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/member_builder.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4fa402182ac7510662c87ee13706bc05d8ae0acbe84463adc20762da4fa6eb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): A a kind to [Reference] so we can use this instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/member_builder.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8fa7457cdd49d5981e918d4aee37ffe4b94f97e67176ce4ba99f42bde416b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This code is similar to code in \u0060endNewExpression\u0060 in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/library_builder.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"182c8c42bc619af382a85724b5c0ba728d064a4a74dab89317052d3f62e6ab7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Consider implementing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/invalid_type_builder.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"82984edf692dc878331d5b9db5aec1f0c72ab294bf9a57e6e7d6fd221b1a1fac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Consider implementing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/invalid_builder.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"daf253ddcf48de805a361bda21eb778350271e4a8ef7fc81782df2d7cbe09fb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Consider implementing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":993}}}],"partialFingerprints":{"codehealthFindingId/v1":"96643db2e45437ea78ee4a26deccbe5252459e7c563ef439d0883dd1c4e16e56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Consider implementing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1000}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d7d11d639f9905a81855694339c861ebc3ba04472be378aa6a64886fe4531e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should probably return \u0060null\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/invalid_builder.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"8657e4369b1d88cf6fd9f0f2c60df85b129dce41e155d67fff45adb83afb7720"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid multiple registration from enums and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/inferable_type_builder.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"84d02e3912f9faa8df087baba664499e01c1c7172b844ae19fd7d42e6a37d480"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This was previously named \u0060isOptional\u0060 so we might \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/builder/formal_parameter_builder.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"499a30500f082464f827533a56e1e53f90c01db174239d7a119a59d3e08f7469"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Throw internal error if InvalidType appears in diagnostics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"f48001c2f20118fda52131990756c9603b76965a868e653dffc3a9a35aceec83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure enclosing libraries on classes earlier \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d993f5ff987037cf37dd62baf0b48da635697c732f4b854be5d4bb0496bc3a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure enclosing libraries on extensions earlier \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/codes/type_labeler.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"9de79503398b0356ce93043acc2a3fc7e15de1612990ee2890fde91b733c00c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use i2b here when needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_type_alias_builder.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"8125714f53b898898a555bc97ba522abc0b286a2f6dfcf7b524e3f0ba4d1198a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use i2b here when needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_class_builder.dart"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf7d826ecdb5dbe35f505d4529d38b787b9157dde0891eb24f126627699ef28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use i2b here when needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_builder_mixins.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"7aba2cac80995b9cc326b45d6a656d78eaf41384051b2e02c96df70be9fe5efb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use i2b here when needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"125555ab0548308dcd02d0a55b2693f6bb7822eb6b9914ef3e4ca3da57faee61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_loader.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"b282d726b2deeabac93dd7dcf36a4c2c305a175b58ec062ed94d8a07c40ffdd9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): When all backends support set literals, we no longer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_loader.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"6294ecf838eab5919cba3cf08ed75d3151aefc4fa089042ab8e79121c598e9ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): When all backends support set literals, we no longer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":901}}}],"partialFingerprints":{"codehealthFindingId/v1":"df089247b00754eef93753c424841040b5e65ed6426b849d8caa5d906d486ac2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the need for this. If this is ever used, it is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_loader.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"b49907281778dbd1a8b57a22986be0facca53cd83bcaa88304f25867b6182bbe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): These 5 booleans could potentially be merged into a single \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/dill/dill_library_builder.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"94c57639fa946ea36a31eb2a2eb6d97936756d0d3a39752e5aece2bc969dbcdb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This matches what is passed when parsing, but seems \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/primary_constructor.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"b74c8946ccaf0f523fbd0a05aa1128b9ab22c001949fa7d302e2e49feab351ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This matches what is passed when parsing, but seems \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"589b4f79ce0d360e956c84f425f61ab2e1cb52266bb2bd283077acfa1e39cf43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/fragment.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe881e6315fb8efdf73c5a860dce64e36f93669d166596edb2dd20773ed1a4ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure building of const extension type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d45fd2a9b9b7dde81f06a1136febb244cf14584f1021cd67d7b71961228c40b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Provide a scope here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"40cc2ac9373ea17a6d892cb6cc55658edaad26f879cc5be83d6cd350b85c1ad5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we avoid this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":869}}}],"partialFingerprints":{"codehealthFindingId/v1":"350cb12f6989bb908bef5fc8a703f81320826c9518f70b367da72089165e8dc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we avoid this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7953}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c75af819520295fb20149edb80106f3bdffc79250a5b96823e7358e13c0f34e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we avoid this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f0d7a2250c56bae328a0de1e95d397edfa400554ea76fecf38e61e9391b5415"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error for this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":930}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb0ae35a21789ae0fe7ed9828bce063e1fccabe2c29445207d0f09c2baf26ae5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update this if redirecting extension constructors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/encoding.dart"},"region":{"startLine":1146}}}],"partialFingerprints":{"codehealthFindingId/v1":"2143f5db1a34b201eb201007da28388eb7298618dc5de064f883053f17963119"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Report an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/constructor/declaration.dart"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"865527669b1f4e304fd0e0887007d1f657f94dcb6d2ab31914fad4ada9ec8f87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"b615f1e9182cd8b8faacf22ed65711bd44934368ae043dbb69490feaa3873e91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"7617dc6b939d1fd22708d0e71e6a3ad9a607e5bc319a5cacd5772ed80980c6be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":518}}}],"partialFingerprints":{"codehealthFindingId/v1":"c95abbf42fa9dbac50622e62fe5d02d9b665afeba7b13fceba20e3b5ce14315d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"be7dda84b24b0d4ac011f0296371790fa97e13cff1d39fad8576626912c7efdb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5bb6c8316e52741ce5af674c1a6c304627417a9c299eebff166741d7c982e4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"310bdc69a7a8e3338c1baf8a91bb31e24fbf2ef4b1a6a5c4e103bae504f8ff2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e0eb83cba3f00d29a3511a902ef214f6c4a1167395fce3c566f1af446bcb5c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"dac678ebdc5951f76d2288cb4849f3e26ded0c9d0d2b40cc93b63993520784af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ec352c9ca3d6014d91c8d88e482080a0e2379cf701745f2c646e41adab453c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a7f0332a75d35835bae7648d5d77fbf117a7800e8a2ce1369640fffc070ec2f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): DDC platform currently relies on the ability to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa8d0d6b0f5ea033e20ae602c14b859cb96768ef24164a8a7a1dfdf92599f906"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova,johnniwinther): Handle this in case in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d09c1d1692bd5e4a7b1c99880759e607c00cbc984eb1792d3f063b978e2adca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hillerstrom): It would be preferable to know whether a failure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"53a90aa5095861686dea94e0d21c166776f37122427007f0a6da6cd293788725"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/35294): Unfortunate error; see also"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":695}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a9fc545c667a3f3d591457bf36b2d349f5ef7ae83f87985e1648e3f5071c27f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hillerstrom): In this case, we need to perform type inference on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/factory/encoding.dart"},"region":{"startLine":781}}}],"partialFingerprints":{"codehealthFindingId/v1":"10d340cbd396c789902056affc90cd36c46c418bd9cb215026badb175045d94e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this assert. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1232}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c08d9aee81b964f5f3c497ee4f55d5f13658e73854af76cdd2eac091777fbee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this assert. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1553}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5a898047fdde86d673ab46b016d02bd543af1d267ee26fdb52f610243e7bcb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this assert. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1799}}}],"partialFingerprints":{"codehealthFindingId/v1":"fffe45d34a4d2cb0c2c08c5c6c3898a748855040a052d2dc0c6e6f3b912aaca3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we have an erroneous flag on such members? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1886}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd8932e2234fd2bb624da2e7885be4497986d40e2af7800108358e11ca1fc2eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we have an erroneous flag on such members? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/encoding.dart"},"region":{"startLine":1894}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d1d41eb368c26a221f6a59e0ee6bbf1138b8a4f694b71c37b4104d49bdfd2f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Isn\u0027t this handled in the [fieldType] setter? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"540a66a106737f3b0005c33582c3af343977d76d110668509b6ac40750852b2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should this be \u0060hasSetter\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/declaration.dart"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"27c8041701f91934555515f8841744b4a849bbe56f6c01b394149ef1e5777de6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should report something better when a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/field/body_builder_context.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6b957c4cc8858428db66add38f81ac5a41a928ca806ecee652a7bf9a084027"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ambivalent analyzer. \u0060!\u0060 seems to be both required \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e9e6c5cb2f244da45ee61b77e366a57c140a37f2944e74b842888f959db2c71"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ambivalent analyzer. \u0060!\u0060 seems to be both required \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"74572c6a6dc43caf1e979ae9bc7ea08efb5dec44b26915aaae2590be85cc0132"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ambivalent analyzer. \u0060!\u0060 seems to be both required \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/setter/encoding.dart"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"5529142e1e748a701d45dae682d2596bd2a0f7a3af140e46eb5384eb38f51682"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ambivalent analyzer. \u0060!\u0060 seems to be both \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/encoding.dart"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f477fd0a01ba5286c6c3959941958b99d35c9bb20fcd732c3466c46d1076154"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ambivalent analyzer. \u0060!\u0060 seems to be both \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d4860e67b594d895f370ffa0ce41120291d710f0496bc9ffaa14615a99dcc3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ambivalent analyzer. \u0060!\u0060 seems to be both \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/encoding.dart"},"region":{"startLine":715}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9cd50334c6245bce8cc3b31100ae805e990b2c9eea7fc183d02e4a548cddf8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ambivalent analyzer. \u0060!\u0060 seems to be both \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/setter/encoding.dart"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"39068eab04954e307eadb58128475b348f81701f8154a5d776f416d1234a9050"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be set on the member built from this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/getter/body_builder_context.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9fad4c653d138a6d173f871dc082df610e1b586960047f8c14833d47b47018d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be set on the member built from this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/body_builder_context.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7845b005dcec147b5ca3c4557852d9e8b8e0332305c5e93a213cf2927e1eeec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be set on the member built from this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/setter/body_builder_context.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"c786768ef4b56eb508b3e4dd03d2d64ebef61e724cf602f6147f3ffcd4ba0d49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement formals \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/method/declaration.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b434343cbf981eb2de56c2d68f52142311c05a8a5f5ca7e7e4fec2369ac7193"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should have a consistent normalization strategy. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/setter/encoding.dart"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf3ef63de0d2df3e88bb9b923e5c14af37011c9b9d9f8f42eab8a15e1a2daf3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Update scope to handle the insertion of parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/fragment/setter/declaration.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00e5e1d6b7d2f89ffdff47b6c1b9a2c53afb562b8bac9f4568052dc3f07d8f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vegorov) find a way to preserve metadata. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/utils.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dc881136323594aad60d896d694bf70e111965cfd10b39ad7063af7f255feb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/type_algorithms.dart"},"region":{"startLine":759}}}],"partialFingerprints":{"codehealthFindingId/v1":"eea7c318046b3f737f3d5a3fff90a5c1f1e88f7e2628ed816de4be5bec8a7e4e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/type_algorithms.dart"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"d83a2a1394d6aa9adcc7d1eeff8ef03d1084ebe2e808ee5e156e367baa115dd6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":631}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c091b1cb0c0d292f1f4e7673bbfee901a250cd2e8723efc5d582095855a5308"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Unalias beyond the first layer for the check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/type_algorithms.dart"},"region":{"startLine":921}}}],"partialFingerprints":{"codehealthFindingId/v1":"5090efd8c06796a6635c85aafd062bddf3040286460c31d834664c41bbc7f704"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Add more control over what to do with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/try_constant_evaluator.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"d89fdf108e1bfb3e7dadf70d425c605fc74525679da7bb6972796fb135a48120"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should this be \u0060ConstantContext.required\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd36f11bf50129ec078056a2aa299fd73a8a3504edc62b4ec38c1c577c72c45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Is the parent relation still needed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"47ea69ffa1d3908dbd698a3aaa4c7a64bc614aabc144d9fc4083d92d05c2f96e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We need to process annotations within annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"d132d7d4eb36dd398dcbf65c2aac6a246ed1593113f8d82f01f42b823a2dadcf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): don\u0027t re-parse the field if we\u0027ve already parsed it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"59c3ea685b76e467795174c53578be05bc1deb5c165e5a8b4cd6079497c0b7ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Should a [ThisVariable] be created here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f1ecd63addb45e1835c031a6b9da6faed536a02122c7016cf1f819da85157f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Should a [ThisVariable] be created here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"307145839788da2820727ef07bdbe91222907ef58e2a8b1986025ffc68d8f5f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we provide this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"260adf772b6b3af74e438db97ce319c5026c54d589a706ba4c02b41b5e1a865f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we still need this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5cce8bf98443bfa946546b66b71a090645f6aa7f74a662244c3c45db5b887a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we provide these? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"7330c5c5a7877c7f3a6b9ada7f9f9cf8d39eb826ec1f0a0c05ef2495fce305d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(62401): Remove the cast when the flow analysis uses \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":1325}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e4c65fe95fadf2c2a224896411f328bac505c6a141d176f8f8e1e06e0f91217"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that the scope object shouldn\u0027t be passed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":1379}}}],"partialFingerprints":{"codehealthFindingId/v1":"32ee5e124736ea41120b713cd9eab256f1397511f0598db1da70a9088aba3748"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Should store: originParameter.fileOffset \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/resolver.dart"},"region":{"startLine":1468}}}],"partialFingerprints":{"codehealthFindingId/v1":"342bc7d779b39eecb71aca3c4c00ff815e28d807c1579e4c2591dfde0dde7932"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Consider if we should add a flag on class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/record_use.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea9239c9bf2499021393505842ad4205f4776804eb5989006c467919786665e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Cache this in ClassMember. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/member_covariance.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dd72486a0dc34aecfc3f17a6eebe6a4725993a14ccd470eba1bf8df3b17d3ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Maybe compact initial positional masks into a single \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/member_covariance.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcfbe026c47a2da4064dfbfc31b62d9a809bce5938ed1a9ea7c291832ef7adcf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Why isn\u0027t this using a FixedTypeBuilder? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b08b1d8863cd001d8d636a9efee462819f12302c5bb72ffec3f873a1bf9485f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Why isn\u0027t this using a FixedTypeBuilder? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"1acf91154bb6bc793cceeebbcf2af213d641a17aca9cb38c97a525ccc1fcd289"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This could (maybe) use a FixedTypeBuilder when we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"fde7e57951da190227cedd2dbc8c3b5186381789f17cfb0e35183d7e52e917fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add an interface for registering delayed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"07a1a8080afe1fac05976001a183a29d2b0f9901517e5a6aea8b5b01f46c797e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): do only for full program \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"f86be9626805286f07528a8dc2cde8f78065e2508d9049f4d8671eba05aecb57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Make this check light-weight in the absence of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":891}}}],"partialFingerprints":{"codehealthFindingId/v1":"47be8a9e012336f3e9c36931cb99dc5337f4144e292af6c2c407c6ff4807c32b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we add file end offset to synthesized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1166}}}],"partialFingerprints":{"codehealthFindingId/v1":"100fac88494eac4c3fd95818efcdbaf379ca760a47cd0d62317db28c02a3daf2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Investigate the reason for the assumption breakage \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1240}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d89b6f6712816d6e4206021318e0438edfee1322df8f05a858b5058ab164774"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we add file end offsets to synthesized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1310}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad8a5fee1bf8f350e56e52bd7c02455d5f4213502bb6768199c70fa75ecb37d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This is working around a bug in kernel_driver_test or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1387}}}],"partialFingerprints":{"codehealthFindingId/v1":"448c7aa7ccd8277c6f0a792fa651c00d390732308fae4a2d939f5bb59fe34e84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use external getters instead of final \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1720}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2168736a11ed92bb365695dd981f138534f48a28cc0d476e9462f0e3cada95c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): How to handle errors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_target.dart"},"region":{"startLine":1941}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aba195bebc2135241f49db084097c2cef366361716851683a5cb81130bc96f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): It is unclear if it is legal to use type parameters in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_helper.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f10699378e1a814e54964bf505d1ee79f873b1d1552ba4dc5a740a643ad4a5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Handle the erroneous case of missing names. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_helper.dart"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"a83af30dde7986892428246339f4b9e1dff804ad1e5183d802e738fa4a249921"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Probably a part or something. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/kernel_constants.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"65881d1b576568714b912fe200dca007369bf8cfd58415c4af51ffeaf834e57b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Check defaultTypes as well if they cause cascading \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/invalid_type.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff3cbc59888283e9005e44605b9cf9da17e162e593dd8d5231be4abec04bdaff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This has been broken for some time. Do we need it? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast_helper.dart"},"region":{"startLine":2110}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca43250ff422f0250c4e2c94812acba67427bc7b7566bc5fd0d2bcbe8220630b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this in subclasses. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"575038dac194a3c628b30f5e2b68388f6170dbe71caf39a7eb682faea836b754"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid the need for this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"31464e09bf3bc0964ed2441f2fa37b537a2a0ba7da44f681cef191f653898675"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add offsets. Maybe add \u0060isExplicit\u0060 property, since this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"9993198dafdb3e3f03c9396dcd9fdde3aa550dbb5435bb1d6916df6a2301bcc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change the representation to be direct and perform \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":725}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4359b97bab9a833348ee463a8c2e34a3f71e8c78849f4afa1e337810f9e02a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"6542b95083c60c78017911d6da22a07cb004ff35fafcaba16d7ad89b5e480b3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":5045}}}],"partialFingerprints":{"codehealthFindingId/v1":"66139e8edc56b3b74c3fdc7432cf3a96f8d8c8b20bbcefe84450be3379a33c47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":5081}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cdb9ba0245353a96b86ff23498d92db68ae52446b8fbaf3f1a2c59f63a35208"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":5115}}}],"partialFingerprints":{"codehealthFindingId/v1":"d56195da6dbbbfd04c157a7a016967d2c17209bc55cd6814643e12bc6854c7e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":5196}}}],"partialFingerprints":{"codehealthFindingId/v1":"466ade54a78d1bf9e4d6c9f4ba4154d3d883fd334fecac1d68439f72a63b72e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":5251}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb311714c78a50597f242f11c73562b2e43b07e1f149bc97a81252707c5bc1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":5313}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c995dedb1b3c2a2b45ec0e7245d9691694e7ef457499abe25a454ea4ec73d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":8446}}}],"partialFingerprints":{"codehealthFindingId/v1":"a07a4b33d23147bea756655ea81b1034b796ad237865af8e4d0f2a413ebf52cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":8515}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e7ad941b7b9259b3d51dc1602432023ea238ca586dc22736e1f65b2ac8873c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":8746}}}],"partialFingerprints":{"codehealthFindingId/v1":"a79cb0649458709d9ef92a8e1963f951ee96a7bf805baf9a1bd20cd05faa0875"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":8825}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b774a6dce3139a79eeab5a2c25d0b575ef99a5393028aece88831aedf6d0ee5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence on internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":8846}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfda3165d882330a30f3d09b738f7c0122d9c0530aee8d4a0cf9a725b21a149f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Reinsert the file offset when the vm doesn\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":1624}}}],"partialFingerprints":{"codehealthFindingId/v1":"666d3bd2dee3576312e9f4a4609756b4c905d74ab6d4c21d5ba1f559c9c14688"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Rename read-only to side-effect-free. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":4475}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bbecd81749f1d67f936aa8522799fab170df3dc8cb140b7e3ff86a908fcba4e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we avoid creating a list of ast variables? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":6650}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6fe76b9923ae2afd95eedae24586c98375b755f5d4552827ce254616bd9c6ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should this be accessed through [variable] instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/internal_ast.dart"},"region":{"startLine":7345}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffc14e40116ecc8e2d77bf64b562d93686227dc1185c1ea9971a9085f9c8fd25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should this be accessed through [variable] instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1391}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9d37be7759a906eee8353b1dbe81f8edfae033050a813c4caffed67f5bef443"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change member signatures to use location \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"42622402a62402359a013bbce6bc2db9a6e92b773d021ed089917d4efbc0144f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. This relies upon the order of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/forwarding_node.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0d44b408938eef0635540211eb1c742494d75e78a470badf37822f2ce0655dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): This should be required. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/external_ast_helper.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ecacd26c2dbf7a03bd208f9e37928fb9258ff966bcfb2d1aa1198136b2d77a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should [fileOffset] be required? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/external_ast_helper.dart"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"890e8e3276d68449040cf1e9676e3b03516af42b518142b8a0ff8a58ca9aca81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge the use of this with [createVariableCache]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/external_ast_helper.dart"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"07db2daff78ff3804980281b8fc6ef7905c817834762c8f445c93c3fcd0530e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this required. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/external_ast_helper.dart"},"region":{"startLine":1721}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e693e263c8b8a6daba15bb40109068feb2bf15dbe37fe084351ff2bfd266076"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should return the [InternalThisExpression]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator_helper.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"276cd63e0b0c4d41dcd51cc5176587a18909e8b29f030db18eb82dd755bae8a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve the semantic precision of this property or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"0acfc8cca703cb9c2c0b4338c46c289742e4241469c4603aabe9cbd8ecd7d307"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We are missing some void contexts here. For \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d685424580270e15610a2aaf23e7063d7bbc42a6ec5ca281cec1e03f85ab90a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson) Fix the length \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":1588}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4920aa52f6fa339bb00326336d46b9577008667d4e3020262c69db9669a7f86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This could be something like \u0022super.property(...)\u0022 where \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":1611}}}],"partialFingerprints":{"codehealthFindingId/v1":"338ef38f42afb8fd63be1efe92642bca8dd858482c8630fe06eb901050ab2999"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle static access to extension instance members, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":2636}}}],"partialFingerprints":{"codehealthFindingId/v1":"898dbd8dc744d800cbbf36c31204146a95f8954251bac9b12f6e80bd1e7787cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): InvalidTypeDeclarationBuilder is currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":4577}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d76da8760556e16aeab9cb0e427112efb84e2d24fcd46c4c843a79393f4cb97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Report an error on more than one found members. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":4685}}}],"partialFingerprints":{"codehealthFindingId/v1":"49ba79ad6ea7f16ee2883aafcf2277d713c0a22ed04cdb9065491b98231003ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update the comment 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":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":4830}}}],"partialFingerprints":{"codehealthFindingId/v1":"8361a5863d97ad72b540d7f033c2cb8985413dff5cda945820f8c59f121ab123"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Provide the type arguments offsets. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":5191}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c649bb59adf218b7d4dbfe8194ec5a74fedf659cec67922b8c5649bcc99773d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Check argument and type argument count. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":5194}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7e6e71ab8e57e0be3cd13182868592147a0c7293243cfa4ce27fc8fe3df9c8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The read-only quality of the variable should be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":5463}}}],"partialFingerprints":{"codehealthFindingId/v1":"3198947ff2d21e5b3d6a7976761ed1e63911e8fb68cc549badb85c27a3a92af8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This is not the \u0027super\u0027 token. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":7031}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a24d2925ffdccc2d01fb22913ba833d9308f2fca8366c3802f646b804cc6746"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This is not the \u0027this\u0027 token. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":7040}}}],"partialFingerprints":{"codehealthFindingId/v1":"89210769775bdc33975f7098c0e3084da9fc37129f94dc53e56d046ac7cf3e9b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Passing the library builder to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":7179}}}],"partialFingerprints":{"codehealthFindingId/v1":"982585679d19ecab8e52a36561b9a3a825e285a7845cf5c35fee052b98b602d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this in favor of [ParenthesizedExpression] when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/expression_generator.dart"},"region":{"startLine":7404}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca15df69448f0313b3f72912693990b3d06b73fe0c0cd27c3a270a096586225e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Assert that constant value is available when the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/exhaustiveness.dart"},"region":{"startLine":841}}}],"partialFingerprints":{"codehealthFindingId/v1":"deab276fc96535219617f0c94ea3c2305168e2e4e70157da5c3aff6bb997d016"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): perform this check only when compiling the host app. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":1221}}}],"partialFingerprints":{"codehealthFindingId/v1":"63b8f3df6cab07742acfaf2592af264158835242f2576e828805becf7f3c011b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): check subtypes of dynamically-callable classes defined in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":1222}}}],"partialFingerprints":{"codehealthFindingId/v1":"fda42815a270c872f6e25f7d70fddd7a0057a06d81bad0caf2d7f0eb7921f61f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider reporting an offset in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dynamic_module_validator.dart"},"region":{"startLine":1230}}}],"partialFingerprints":{"codehealthFindingId/v1":"55588fdacb38d665ca03ee8c984116fba3a00eac67ad53dc39c9dfe58bade5f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This shouldn\u0027t happen, but inevitably will. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e06a60653e0329bd55ae13b0377876f482e619a77bc5effe05131536260287d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Look into rewriting the matching to use patterns. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":794}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb833ca793c388ba85f3c7ece5e72a17d5345cbebaf7849ba9a63490950c2e9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly move the file to package:front_end and use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/dart_scope_calculator.dart"},"region":{"startLine":887}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a4640c83a7d7acc36b0352b5ad52d5c61db92dfa7bd0d548ad7e7a1100dd61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): move all lowering predicates to \u0060package:kernel\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constructor_tearoff_lowering.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a82e7fb36f53d0faeab76e2bea9ce7858edca748914de495bba45a037d175c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Verify that null should be passed for scopeProviderInfo \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constructor_tearoff_lowering.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"af0f796f0980fef5662d0a3a1b0c9352dfadeeb5f0760dba436bd6f787b15baa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use \u0060PatternSwitchStatement.hasDefault\u0060 instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":943}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c94269120af7cab3da6c051f7b7961e7447da652efb404b6909588f9b651fe3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when an error is reported in case of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1096}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8f0015b941c92a088f21e4d607d4dee370100e9b84c19d06cc06181160275c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Make sure an error is reported if the variables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1113}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbf0bc5954461006fd55c45211d59f73c93cc403aea75ecd49cddaea224b3817"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a more systematic way of omitting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"77ef61f94006f1c88def0fabbd5a9bf85c637757ae252dab484d6340fd3c99c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a more systematic way of omitting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2051}}}],"partialFingerprints":{"codehealthFindingId/v1":"b281707758a1d43ee793e026b0c5bfc39443913fb91dedbbdb3a9b6c8daf391e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a more systematic way of omitting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2142}}}],"partialFingerprints":{"codehealthFindingId/v1":"3502ca1af089de2346f4793a88592c9aa9feedf9af71a6a93a2774cdd8e7f1be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a more systematic way of omitting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_cache.dart"},"region":{"startLine":1297}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ba2928ea4a2cc1bd9a502ccae93c39cfb469170ebb0f6a5f56681e0ab1d24e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a more systematic way of omitting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_cache.dart"},"region":{"startLine":1327}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2037ac01710d98643fc03349db80b770b478f1bce08c2bc34f7db4e4cf11587"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a more systematic way of omitting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_cache.dart"},"region":{"startLine":1340}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9e77ae978fb3a05fb28f10906146de6cebcbc4fc40f178f014c888855fe819f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Is there a way to avoid these name clashes? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1133}}}],"partialFingerprints":{"codehealthFindingId/v1":"149847385ad77ca783dd5212220445907c91cf5dabbcebf03139fd229ebdb4c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): In this case it should be an error to have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1147}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8fa3e32f605302a2a7b2dca8780e1117b1d5b1942804621df125b2007602a70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support irrefutable tail optimization here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1173}}}],"partialFingerprints":{"codehealthFindingId/v1":"877113578c4f950d75da654c873aee13fc72701bc4f8467de770670de6994d72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Handle other label user types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1317}}}],"partialFingerprints":{"codehealthFindingId/v1":"8863b7f48fd463daa001bcd3388b52efb6440ac7ff14bf585be0454f9887a4cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a better way to avoid name clashes between \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1403}}}],"partialFingerprints":{"codehealthFindingId/v1":"899a9212fc604d2aa023af937154a316a7e56504b75b379d9bcb0ad68430988f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this work-around for [getFileUri]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1480}}}],"partialFingerprints":{"codehealthFindingId/v1":"47d5e16e7623a22b5a4e6a2415f7ce72e61b979b0515701a061546d58caec734"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this work-around for [getFileUri]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1810}}}],"partialFingerprints":{"codehealthFindingId/v1":"009d48a1465148f8dab20cfd94b25771aa2b1eb272cb7de76d195e25ca818d9b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this work-around for [getFileUri]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1914}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a4ab6adcac5b78287f1c5888390f155fa2bd54a1cfd2e6710d8ad6ae676ff1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this work-around for [getFileUri]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2312}}}],"partialFingerprints":{"codehealthFindingId/v1":"c96568d627fc2f7f2488a4c0697404490af96fb418cdd35221ab955d39b7ec0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid transform of [replacement] by generating \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1482}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae7a7431ae830c2829e52b5152c8b70da489886f8a369484b635fad090dbc3cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid transform of [replacement] by generating \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2314}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2912b6d4c64af38216d1552bcc7d9d02e80b46fd24b558de77d3f89c814366"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support irrefutable tails with guards. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1629}}}],"partialFingerprints":{"codehealthFindingId/v1":"65904aa8617c5e4059c950c7613ec39e65130a1a69b73f23894082aea1ea9e1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support irrefutable tails with guards. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2179}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec487b59fe1891d0bb0001d352aecd7807d1091bfe006a6f8b1ea29174c47850"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Provide a better diagnostic message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1771}}}],"partialFingerprints":{"codehealthFindingId/v1":"117534c06ef7b046230257cb8fbf2075d5d7b70452388b7b57a2fba34f75b537"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Provide a better diagnostic message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":1882}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f3517a041b5d3d6154cc590d821653a67c3a7779a80b3699130796ad4051f0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid generating the if-statement in this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2190}}}],"partialFingerprints":{"codehealthFindingId/v1":"10bfa9294c3bb093721ef132bd95112a3b2e34ae360b29902afea140bf3343a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a more systematic way of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2234}}}],"partialFingerprints":{"codehealthFindingId/v1":"61385e6a706ac7c27586d7cc2652be99ddd4b7636361dec30ec263d81f2959b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure that we always have a uri. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2752}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9c8aa9815bd316ff3185294a2cfd16fcdf18373bd9fc2d2a9fb0ea3d4ceb75f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure that we always have a uri. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2767}}}],"partialFingerprints":{"codehealthFindingId/v1":"514dc4e2cddf1f8643ed946dbb888b0f0410adbad788c7e5b3f61319ec32495e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this by adding a current file uri field. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":2773}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd02c1c6c141cd56c8f1a895ae8974ed636f43c29b855c2e86ca669a31fa76f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should call [_evaluateSubexpression]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3759}}}],"partialFingerprints":{"codehealthFindingId/v1":"41cfd631fc4c87f4bf970b69b76daa8649cacbcf4ae691cd13a078a58f889ea6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should call [_evaluateSubexpression]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":3767}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fad29a2a26137b2bd45700f769d8cc9e4aba198f8401003bf3a28b24cbc80af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should call [_evaluateSubexpression]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5389}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0de7ba6a7e9b86979a12fdd425030e86169a504590dee0f332efdd7fc3f6859"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should call [_evaluateSubexpression]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5397}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e7a3c30385e1277c646d3edbb06ba5499ea273bce843d90e5a82b96e1b8bb82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Handle all constant toString methods. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4306}}}],"partialFingerprints":{"codehealthFindingId/v1":"c713348505fce6efd2d0a97a1e084abd6c2c29db4e989f236b76e550a153117f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Implement [Object] class methods which have backend \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4558}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3642bffef0259dfcf20ba2f2a02338c4950fa8b866f10208ad9440a440bddfe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make [typeArguments] and [namedArguments] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4564}}}],"partialFingerprints":{"codehealthFindingId/v1":"a18e8a0a3a726578d8216bd50a8146332428da2a1634c93c16ab6a254171174a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): case \u0027iterator\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4791}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fd6e78aa0a855d53f312f4debf4ce97fbcd2f5c8e933643706f659aa98a5318"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): case \u0027reversed\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4802}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd74593eebbb4d6c726cdf0850e3656c192261fc70b070d7db425c97d238e2f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann): The heuristic of allowing all [VariableGet]s on [Let] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":4944}}}],"partialFingerprints":{"codehealthFindingId/v1":"431be470269e444be6d93a90a527ad9e0f3448d25b5d8d8b46e911bd290a7c54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this. This should never occur. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5025}}}],"partialFingerprints":{"codehealthFindingId/v1":"94b9f0ca9a65ce475ae9bd40e4088f295e6f341f11384a9a82689694478e0dc2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Once the frontend guarantees that there are no free type parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5863}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a868fed28284404b09f78243c45fc53b435c316823754514a36be4b5a5f406"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Maybe we should always report this in the body \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":5884}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c7dae2b3b318e2f4d4ed1136c201cf05dd0861ba1f4443b2f2e41aa9727f6c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Store non-constant exceptions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":6383}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f6997f9aaac420b30cc4dffd143b374c57ceac27b7e0e2e676cb7bcaf8ceb0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Store appropriate stack trace in environment. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_evaluator.dart"},"region":{"startLine":6391}}}],"partialFingerprints":{"codehealthFindingId/v1":"571341bf874bc2a9ad0c53d6386845e3d956251ff2527a1fb91037c49db32fbe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Handle partially evaluated [isMutable] lists. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/constant_collection_builders.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"49e1ed4ff3c53ac9735efa4a2ee7e060de8a41459b7d32bce1c4f6fb417844f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Do caches need to be invalidated when the static type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/const_conditional_simplifier.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ec569b9b720d4008f6151fec7c4af453ed4ca30e705452e4bc19954cf6e164e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Make this more granular than [TreeNode]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/const_conditional_simplifier.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"8289b9103660cb08a4e6774b26303c8f386084c2b6ae201b9df999e60c9d64e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This is currently used under the assumption that the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/combined_member_signature.dart"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"69773fa98f489582a3ac1dcae49c6c0cda3981e4a9293999625fa32b5f323244"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Why do we need the specific nullability here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/combined_member_signature.dart"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3fe5cfda96bb6c3c4e03c7f44173672c4f580625c5912201b88cab3acc4bcc4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this and ensure all nodes have a location. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder_helpers.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"03ca392adfb0f2e313aad5006998e69a564edea8d80f7f4cc872818ac19342e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replaces this with something better. It is not only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder_context.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"b21099ceece67e1d4c29519d3a0ae1f46a97d338cae2cc6b340ae9a424758775"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replaces this with something better. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder_context.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"bca46679bb18b96fb9efd06359619000d34f6f4808b5f3220d2b728189a4a76b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder_context.dart"},"region":{"startLine":378}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d2b07179e160bf4005dfca647383b2fc0c0fae031e74260973ac9fd6a6235e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid reporting errors on missing constructors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder_context.dart"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"4140614255baea42c1bee36e3009a34b7ae1eb45b4c2d7489a5169a60362d31c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder_context.dart"},"region":{"startLine":679}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3cfe1fe4d7fc1475c163bf6b430aa3a90842fdc01f19852b1cef1a77857e65b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1537}}}],"partialFingerprints":{"codehealthFindingId/v1":"28b41acf2c3f104869f618e21284f51fdcd4caca352bb5288f7e4441b4aa44da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1542}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d3a3ad2880203d3650a29a0cd643ffee2be2b883b3557c3aeba4c66adc9e1fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1548}}}],"partialFingerprints":{"codehealthFindingId/v1":"98d5ae1063ad8c010e641bcf133e69a807f8b17442cd2124369810b77da39208"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1553}}}],"partialFingerprints":{"codehealthFindingId/v1":"76711615c390320a6f6bd439de90cf1791b3c2d5a13fd200c5a27e14896fe63d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1559}}}],"partialFingerprints":{"codehealthFindingId/v1":"edb18dd40325649f0258789667845bd3a5a4cb8ec927bb53205dafba34f5e02d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/libraries.dart"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ebff0d185175a361490f49d3d104c6d22e01ae8adc61bd3a0fb2e3c8daa412d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/libraries.dart"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"4679f39ccded5fb61e485110e62665bd43041c3d32681562bdf39f058cd2f33c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c74be2478780f78f2f8e67416df693db890e33717b6ee606ca73bcca43e24fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/functions.dart"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"5470f0da445f1265bc81e51b75c4a62d1006baa863519dfc428293b1a5c8418c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/components.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"b02d0979dbd5031b2c18e62378b804a43d4c6630fe8ee56ce5de70e54d294903"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Consider renaming [uri] to \u0027partUri\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"40a72ae576a03b9bad1854dedf9ddc623eb6746daafc630224ae14d2b61246f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Instead of deciding on the severity, this method should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4885b8129b229a0f20e316a8daab55ec2e30b604a3d365d3bfd207b45b04f4e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): consider removing this when control flow support is added \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":827}}}],"partialFingerprints":{"codehealthFindingId/v1":"36a01069f38c5906af51dcddad3b8c2d9003f9afbc33b9bf3ceffd15308d2dbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Should validate this is a goto target. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":1023}}}],"partialFingerprints":{"codehealthFindingId/v1":"2576e92e27b6f5c554332af318bebebe439b3ae61dc4190c65398b0073f47022"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): disambiguate between class/mixin/extension members \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":1461}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fdcb7a9e8de8e65a0aeb70205e138753ab94113ccf9befc955af55d091ce9d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): The type we compute here may be different from what is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":1486}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e918bbf2caa0e0ab595a6b2b5272e82df80e878ff49450fc355582e18f20d29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use [arguments] and [rhs] to create an unresolved \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":2149}}}],"partialFingerprints":{"codehealthFindingId/v1":"35d34e02a5689ccb45a23f512891ec95c4f83a09f26f5e38a81a1669a563396c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kmillikin): Find a way to avoid allocating a second list in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":2975}}}],"partialFingerprints":{"codehealthFindingId/v1":"19a8277af22727ff1e1329347935e63f7d0c2046eba8544d68f37a44673c506f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): this really should be condition.fileOffset. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3018}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6886c0afcee03231ec7ed61d2ace0bd854f47c6d1456969381e559d58f9503e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should this be final if [leftVariable] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":3200}}}],"partialFingerprints":{"codehealthFindingId/v1":"07f2f2db8e9bfd6df992c06d130419c7258e8e80daa0dc80e74e8c5adaddc33d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Is this the offset we want? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4236}}}],"partialFingerprints":{"codehealthFindingId/v1":"2590fb1460942fe3610630b448fcedd616b2df09af04ae5313afc3d829929af2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Is this the offset we want? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4251}}}],"partialFingerprints":{"codehealthFindingId/v1":"47cea38711a488de19a4c9e86b80608647f89c958b94fa07bfa9fdbeb342adf4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Use [InitializedIdentifier] here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4528}}}],"partialFingerprints":{"codehealthFindingId/v1":"e359b71288d9077ff5a06cff2d966bdcd8fe4b5ba57f8065eaa87ec009d7b109"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Emit better error on lookup, rather than not adding it to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4540}}}],"partialFingerprints":{"codehealthFindingId/v1":"5934af787da28b13e7ce84f8337f3a5bdc0595499128d045739857e5ef9f4d51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Does this offset make sense? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4583}}}],"partialFingerprints":{"codehealthFindingId/v1":"11e89ad96bcc1c6ae69bfa5482a550e436492b4827f611e8d4b2dd168a6ec4fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Derive the message position from the [node] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4594}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1144346138c6522fe7f49d08a7ebdcf5d87de8a333a7d872f13746d63d31ba6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Stop using the type of the generator here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":4894}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a4448937b06d666c3c40fd984bcafe6bae215b378c52c83314cba43e4898d16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): How should we handle annotations? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":5281}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9c6e23bf3973f2b2fa24ae0ade1a677d0c1ac732a0ad408919371bebb0f31f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should [VariableStatement] use offset from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":6032}}}],"partialFingerprints":{"codehealthFindingId/v1":"af9890943c504037adedd7ab98300f00041a9310e00d5a4c4e6a6a1e288a5d64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we use \u0060void\u0060 instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":6226}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4f22d4a368bee43a2956a0b9c34a24855316f74af6f4ba0aff84cfe3562c817"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Seems like leftParen and leftSeparator are just popped and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":7078}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e6d16923638da2c64f48ab3428fd514ccc7bb002525ea21b21af8d05ddf620a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The file offset computed below will not be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":7489}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cc671364ae75019f17442a19c8e4be75945f6bb3b3acd0dfa0735070aa4d14e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The file offset computed below will not be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":7599}}}],"partialFingerprints":{"codehealthFindingId/v1":"226978e23dbd79b8a37404ee844790c40766a308ee862851d8143be0147997ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need a ParenthesizedPattern ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":8078}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8ea7b93463338a98c733b603d59e89b8b098d3e5649d60d16771c5bb45a72c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Handle metadata. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":8191}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7d1fc37c8a5e6072bc17fefc69d6ec310f4d510082402dfd9b982f5f7f2efca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): The scope is wrong for return types of generic functions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":8715}}}],"partialFingerprints":{"codehealthFindingId/v1":"c23b79d8a591f2845b31c537b55670bc1d73ce211106041ba77b20835bb712f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Could we just report that error here instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9245}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b6629e87a5c7713f90a639b54dbbb96d9d13bbb36d79a68252ccf91aab3d6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should exclude identifies occurring in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9248}}}],"partialFingerprints":{"codehealthFindingId/v1":"958e0380b5a2c9d4f1aff7ed37e963809c9a1f866c814eee0ceaf13db17bbc12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Create an \u0060InvalidGenerator\u0060 instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9304}}}],"partialFingerprints":{"codehealthFindingId/v1":"73b3f65a3d56913758659358369e0479d2327a8674101d0f3a98c18d189035da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Provide a helpful error related to wildcard \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9495}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cdf6a9a9afb9e55b08c091e4642b3da9362601484db58ea7db147a99cb68060"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Shouldn\u0027t we provide the start offset here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9627}}}],"partialFingerprints":{"codehealthFindingId/v1":"b08e6917711160e249ee9dd562e68c50079879257e4a67a0f086dadcd1016275"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Point to the type arguments instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9849}}}],"partialFingerprints":{"codehealthFindingId/v1":"541528663aee2f6b28d6124185a63611fe0f80132ece06410e857ea142412438"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Point to the type arguments instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9996}}}],"partialFingerprints":{"codehealthFindingId/v1":"135eab0b2002b9d6a4fa8e6b8128d8b5a1da3979cf87a0423ca2dc97a30a8315"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Provide sufficient offsets for pointing correctly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9896}}}],"partialFingerprints":{"codehealthFindingId/v1":"8732c255bab7cc3ca916929789e4ebca2f7bdc231d8c3a4d8424d02bc03d02fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Always pass [variable] to [assignedVariables.write] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":9926}}}],"partialFingerprints":{"codehealthFindingId/v1":"527abcfa04513dc5ee4368b9208401267fc98604578cbedd8d51230d9a6ab710"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Use position of type arguments, not nameToken. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10012}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75bb79a244d311d308afed8c9a37f6362cfc2d823b0fb74cf3898cf1702e15b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Use position of type arguments, not nameToken. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10267}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfce1d0d33fec18b1f0caf48735ac308a7eb895b57f48056b005733a85daa951"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add shared interface between \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10103}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff14ea6d094b8bf57839958b009cbda0a25291b6897a67c0f1013a61006cbc1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): This is a wrong number of type arguments, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10189}}}],"partialFingerprints":{"codehealthFindingId/v1":"338150a35ed3619c5be59029001b461ef9b133f7eb6f9e8943702d73d485f82a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): This is a wrong number of type arguments, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10286}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e038023415ec1948918ffc73f09b48552603834f033d100754e70bb63cda816"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add a shared interface for [ClassBuilder] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10321}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ab1b4eb3f7fbfc0f5d00c9304333ba46d77da3b6e4eeb63dbcd2c5c750cb206"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Could we use [typeArguments] here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10359}}}],"partialFingerprints":{"codehealthFindingId/v1":"b18673e9ea71843c2d5a445c484c07afadbfecaa3082451b319a92901beca824"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This is rather brittle. We would probably be better off with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10677}}}],"partialFingerprints":{"codehealthFindingId/v1":"341682edae41dd206645a4a444b956031b582d5bcd659a8b0dde6e5de6f0ae14"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This can be simplified now that we have the events \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10991}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a615d0ae2b1e2388e7a46ccb6c109da414a94bacdcbc1f930531077c51e4692"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid parsing variable declarations initializers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":10997}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9a4544895f2e995345e37ebe2bfa694b1d6c347287e8970258933b40ef0e406"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid parsing variable declarations in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/body_builder.dart"},"region":{"startLine":11075}}}],"partialFingerprints":{"codehealthFindingId/v1":"20e53d65cc463c34654d272ae36f4f2002ce918f084b2b2494fa3974a7c22172"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Delete this method when it isn\u0027t used by [InterfaceResolver]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7d39d74276b1c3d92d2fd5d610d773921a50777c15ffee155b07b5357a21d59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move this to the creation of the shared \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"7451009e38e6e97ed5c5dc2ec412a9337c76b5585d30b024f454f9f50442a0e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid duplicate override check computations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"39690329720d9c511e71c6bd7f26bfb7498fbe5ea6e160e07dbd3a3139843d41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure that a class member is only checked to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":982}}}],"partialFingerprints":{"codehealthFindingId/v1":"db13dcfa06267c4533ea7e63d12036c4446082d3764f33d66887ab22e53ed7b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we avoid putting static members in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1275}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cfa328fad9b0539c619541980d3b7f85cecb40a98dce3a1ec781383d2734cdc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove extended and mixed in members/setters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1759}}}],"partialFingerprints":{"codehealthFindingId/v1":"b22fc181a91bbeb475000a1b014b58030a4949ac91398d62e654cda32f4cb3a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we remove [definingSetable]? If we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1905}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd68c9ca6c4960604429f4d9536571cd5fafd70e86884ac2b0020eecc09e2e2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle declared members together with mixed in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":1911}}}],"partialFingerprints":{"codehealthFindingId/v1":"881399ad88b3d1c10c93a9f243136196638e23eac033db179fbe10b2f8c7e315"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The extended member might be included in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/members_node.dart"},"region":{"startLine":2449}}}],"partialFingerprints":{"codehealthFindingId/v1":"02a2ea9e5c341186373f44eaccba2db821da28f5c1aafaaa1c3769d2bac4f37a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we remove [definingSetable] if we have a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/extension_type_members.dart"},"region":{"startLine":916}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d4b606b3a3b5c6532aa42579063627c5bf1a2fee3a4683fbc8cbe6c2d236262"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Combine [getMemberResult] with [getMember], \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec0e57340f8a2229a0d7a8bbaf178fbb665d4556fd8b2995ff42919187c6b02e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We need better semantics for this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"87ed67dddf10cbb975afb92f9b3d20b102d2798428c7ec7bf2f382c554bb964a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(johnniwinther): Can the use of [toSet] be replaced with a direct \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"856f15c84d3af7876ded0b8637756bc41699c89721b1ae08bd66234ad20ef38a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Maybe we should have an invalid marker to avoid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":591}}}],"partialFingerprints":{"codehealthFindingId/v1":"355572c0925a8929c40e7bab816e7d2462a7cb81732acd73388852ca04d6fe37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Maybe we should have an invalid marker to avoid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"622d84a914d3d42ad10c2a83d03199d97a9681023b0759e4f89f95586eefeea8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Optimize this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":688}}}],"partialFingerprints":{"codehealthFindingId/v1":"87183046811f9ad0f7295fe5ce90239ea0e5c3b90a5a70f02ae6bc0c0e62e818"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Optimize this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"360a704ec0aaf6350fbee37634d50d7eb0af4c8fc2d3fcae2a1b7ab4db235809"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Optimize this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/hierarchy/class_member.dart"},"region":{"startLine":1099}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d07cbd043c2c710fe2ffac9f781c0eed8ea4b52ce99a54028d7628b9a6d0710"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support extension types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/kernel/macro/metadata.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a4c1a120324c0d4559c0196a0df226e191c3183a6341787943b6dbb05fd6efd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add [_augmentations] field. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a70441419b76f9c8d41697f6dbd7c7a451bb212c075a2c9f907b70735ae8239"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Using [libraryBuilder] here instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"118ed4c92ea70228584cb3a90f3b3293de02ec4d6f70dbaef940613285f80bec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle augmented constructors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9571ff78d9fded495d7cdaff73575dbcbe03bce5acf83d174b3a638146282f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle augmented constructors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_type_alias_builder.dart"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"2cce0a2ec4650d0127a4b04836b3ed1f9a160f32b9b323d38d95e5b3b50b071e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should fields and getters have an invoke target? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_property_builder.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"28153d2f198e285afcba87915367ead6b6f634efd68ca57b86707f943e6f7224"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Generate the needed augmented methods. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_method_builder.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fbe47dfba2c3f05e6142440d21fc4f0d0671d050f60dd77285af9bb9ebac8b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support augmenting a concrete method with an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_method_builder.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"06717ce5a6171f3b7d8578e7c05fe2e9e2ac73868de659383fdb83a475d83189"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Updated checks for default values to handle \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_method_builder.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bbcfb1299bba61f4b179b8fe03b9fb613e16667a462c080deda982997461dfe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid this or define a clear semantics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_member_builder.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0369b21328e0d87b24037a949f24f61c2a24830279d6a63780b1e483d336fc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Replace with a \u0060singleRoot\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"821b7ad68bf07d8f9ba9858d37fcfd6621279c8696a9bfcb45ee56249309ffc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Store compilation units in a map by file URI? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"3308c04d8a41ef58233a643c79df27c918cadb7d1dd9cb47f4c7f049b7d31f75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should really be libraries only. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6c49decf9974e9603b8a8459ca456e8aa4642cb0608508b4c4c7f86cefab228"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Why is the dill target sometimes not loaded at this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f99595323941ac650b6a17c127c04332326e010679ed347c81be62f31e87f3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): If we save the created library in [_builders] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc8ad24e836e353088e27f20fcfc1d8a987808867748b906a1f5aed9ae43deb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid using the first library, if present, as the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":813}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd44e997beb61f9f9a08f29eb16a3a6a0d8aaccad1376ad8945afa5815c332f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use augmentation-like solution for patching. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1237}}}],"partialFingerprints":{"codehealthFindingId/v1":"19446cfaceaeb4a403fc23af1851c2a6a02c77cac4d75a8466937cd74085f4a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support expression compilation in a specific \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1527}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e15430d80f18bf0f2734cd15c8432e75ed036162fc27cd48de28bec7283cdb2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be the body scope of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1541}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3b3b865ae35c2cfe2b8e9d49139aaeabe5d953806240d4bd569374d1d4f8d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should be the body scope of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1552}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa01f27092aec861a815b29465a60bd2208cff266d7866f7dc1673a11c167bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Shouldn\u0027t type parameters be in scope? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1556}}}],"partialFingerprints":{"codehealthFindingId/v1":"6311a1dc2b603bc4fdf252909daee654982d2752a338903421b93de06b18512e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle this case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1560}}}],"partialFingerprints":{"codehealthFindingId/v1":"8787a37ad8f7ffa6894da2cb56d8847b257c606b096769317e155cfba3f92a99"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Change how we track exporters. Currently, when a library \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1751}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99963f788a24737c7fc48e0c7c822cfc762068f757cc8a1716b247ed6baa169"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update the message for when an extension type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":1998}}}],"partialFingerprints":{"codehealthFindingId/v1":"f161a0f92ec57b20a9e14f0e787015235398dbaa75235cb622e19f9df370a343"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Either we need to check this for superclass and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2155}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b00cfed2096ee1aa9fe8c6ae731081cd08471c001ef784722747cd649d0c4c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge supertype checking with class hierarchy \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2212}}}],"partialFingerprints":{"codehealthFindingId/v1":"76fd3d5502f80c4fcb23125c5e48a2251387851cfdc52b22338302309aa5899e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge supertype checking with class hierarchy \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2330}}}],"partialFingerprints":{"codehealthFindingId/v1":"b09c0b6e487441931851f371ae84758381359015bc742f19473f665293321000"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Avoid over-reporting for with clauses. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2380}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb982f95b3bd098d15f02dca7db5932738998bb4d29df6a38f4717dc6cdfe18f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Only invalidate class if a member was added. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2854}}}],"partialFingerprints":{"codehealthFindingId/v1":"cee4d434aa0d796bb1fbfddc56196ff18d6726b48c23e2084ff8f2a4ec25cf67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should the member be added to the extension \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2857}}}],"partialFingerprints":{"codehealthFindingId/v1":"661d83913ca1918399d47a74af7c354462e45962f947ec5e51d775c2b1930de6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Move this to [ClassHierarchyBuilder]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2882}}}],"partialFingerprints":{"codehealthFindingId/v1":"93e45560254c3a73b22416a459d163c54867455942f62043228ce8a45188c20a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): what should we do for augmentation libraries? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2905}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec81bfe7eafd718ff7739abac4f9808ddfca9e888ba424ed44a387c6dc572a87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this work for when the mixin declaration is from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":2925}}}],"partialFingerprints":{"codehealthFindingId/v1":"03af85f694685f26789530394c6249bab199fae918d11851b9a154d5e6624d5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update this to perform member cloning when needed by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_loader.dart"},"region":{"startLine":3643}}}],"partialFingerprints":{"codehealthFindingId/v1":"565bb4cd42d5db2dd653cda92cbc0a4694aefbde6c4e1095b5cfe38b5a5061e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Consider if we should use relativizeUri here. The downside to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":931}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa8d8dd74666a2358f0821f66520923df4e5b5d9770713f8f3f119ee0c065898"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Is this a correct handling wrt well-boundedness \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1505}}}],"partialFingerprints":{"codehealthFindingId/v1":"4afa864651d917368165bd6b2448308be88d372af9b2312a318e053f98c465b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we allow super bounded tear offs of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1521}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c9a8426afd403421d4fa8e1023e488e58415241fbbf3bfd7e9d1b20692a2b85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Check/create this type as regular bounded i2b. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_library_builder.dart"},"region":{"startLine":1534}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d4c0856e692a8d91dce67eac7440e0952fbae75fa5cf97610b151f7391f51d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Check/create this type as regular bounded i2b. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/bounds_type_parameters.dart"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"976b658673bb51dff57f4a601fec11ebed264a1a0c8bb361ce96de87b2ca7c0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Check/create this type as regular bounded i2b. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/bounds_enums.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"04103cb1e0517f5408db2aafa2c8c8465fcaa6c17d160391c545978d363c73b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add annotations to tear-offs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_factory_builder.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"58fedf4c451b53da68074972b85252f9694e71d68a6d3fcbf2fc82a97eb6248e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add annotations to tear-offs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_constructor_builder.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"c224bdc4ad06b7a9680262f4dafa5800a63c9d80f6efa5e130605f5d2aadb8ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Use \u0060inferrer.helper.constructorNameForDiagnostics\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_factory_builder.dart"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2da2f68ba9a3594d93fbf481f78338c1d68a8dcea4d60e10c7bd7cdb36d3895"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move this to the [build] once augmentations are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_type_declaration_builder.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"e91323e9bacf1c86e74ef6bf4b0d046d8de49d733092036c830bbea1bea128fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move this to the [build] once augmentations are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_extension_builder.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"a49247da785697910f15bee31f2f8d7b08af875209dbcba145a3c53cec867ea2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): These types shouldn\u0027t be looked up in scope, they come \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"17206011514e24414b92431343479d2d777925bc8d827a8eb373947c1a8d958f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Ideally, we would also want to check that [Object]\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_enum_builder.dart"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"f724e00b6fbdfd067706446956962f6520fd44ccd692ba7aa65accd5c6683bfd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Pass only the [Reference] instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"99643ac6613d182c243cc993145705733c87849466dc4c627f7b67786f27b16f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Create these in [createOutlineBuilder]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":613}}}],"partialFingerprints":{"codehealthFindingId/v1":"40d4cdb632a9aa8f3771560ce12fa4ce4cbcdfa5d9d492fb56f6e9fcda96c849"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report an error here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"03b437bce11d6aa31c33a6840fa40e6f4860e7c215ae46d0ac32c796debde792"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Include metadata from part? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":1103}}}],"partialFingerprints":{"codehealthFindingId/v1":"898fd8bbe238c9dfc8e8508700562d8f4abeef15cdb2aa5e90c141f49e598baf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we create the core import as a parent scope \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":1282}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b4f479689b3318e7baf7a35d5aa4398c31f72fa7d8b2ad55ff6acba0ab6326"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ideally the error should actually be special-cased \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_compilation_unit.dart"},"region":{"startLine":1449}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1f5fba665779552b438302e25612bb8eee9c9fe1f6842be2be5e6895593c75c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid creating [Class] so early in the builder \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"47ee526c2829d34a9f996727dd8ac3c06af738edfb2620930fb9fe1a0574130b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should enums be marked as having constant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc5c7cc36ea6af50bfa6248b7829cc35c3325e983786364b436ee9be90b9f07f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update the message for when a class depends on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"52521628a4445d88602b2548aac056477cfee2b1cee5b2143cc2c6e71be964bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): If \u0060cls.supertype\u0060 is null, and this isn\u0027t Object, report a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"09f905a9f8c86a37cfd995f38d7d1dba1967f2fc1888c4c289ec19d1728b09e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Report an error if supertype is null. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"1110a94fc635078a301b28c553c5da4e9c9d5f9d665ec890a5c6909649f8f6d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Investigate if requiring the caller to use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":727}}}],"partialFingerprints":{"codehealthFindingId/v1":"874afafa09c51a1b9502baff1dc4a01edc90b3027c9d0ed32b7344521a0adc6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle injected members. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbd6c40c98a75e4fa95b6aa901d74af2d96bfa9a52b82dd4ce96b95c0b7cb6d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Should gather \u0027restricted supertype\u0027 checks in one place, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cdb3bba00308a163bc6e59dc312fd3c0044b24f63915c68ec49879ea34c148a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Have all \u0027restricted supertype\u0027 checks in one place. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1088}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ce6e77f246577923224c671398e631ca266a01610187dccd316814e8a83b84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Handle other cases: accessors, operators, and fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":1616}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3ab7346acdc512a6c20563bc5fe143e333c8cb4ea76bff86d1d9ad49cfb700e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe, kmillikin): Should always be true? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_class_builder.dart"},"region":{"startLine":2606}}}],"partialFingerprints":{"codehealthFindingId/v1":"b19e9a47f93653be7954f8885088d7f265f4940612adede43929e97ba814a955"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use a different error message for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/source_builder_mixins.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"66ec0b0b5706ac3553bc5da5d1fb1ed54c3c8fadf255d9b4613e1455b69f8018"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Pass uri to [libraryBuilder] and verify it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"7db6fc9db655df1f536386e8400b85f4caa69d7ed993fd0a9b3dbc8916cf8e0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly use these instead... E.g. \u0022class A extend B {}\u0022 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1364}}}],"partialFingerprints":{"codehealthFindingId/v1":"3deb7463917497325b86518a8cf41060dc8e00783a9779f1d17788e1d110b44b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly use these instead... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1378}}}],"partialFingerprints":{"codehealthFindingId/v1":"99707c3d9fd611f5ef17a459616daa1cd813b61a06a29726c11fecde7a9edc9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle [ParserRecovery]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":1818}}}],"partialFingerprints":{"codehealthFindingId/v1":"eac350c0dbcfd447d6115e58c6aab1746ee2f5464ad88550b29e3ff85f179ffc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle [ParserRecovery]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":1199}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5c5835aa6f6585cefb4de71aa0823d960448cf93da24c5ab2c63cd6d0fdaa23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a uniform way to compute this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2455}}}],"partialFingerprints":{"codehealthFindingId/v1":"533c48e63fb73e0f7bb0737fe4fdd8b3198e7b2ce42f275bc9f32d877f11ea12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): consider removing this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":2550}}}],"partialFingerprints":{"codehealthFindingId/v1":"c57485ccc327bd456812c62d9dda41058619210988ab8eb60d80970ade38d6ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Write a test such that this does run. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":3158}}}],"partialFingerprints":{"codehealthFindingId/v1":"996f5bd29e6e2cc8a08e1264fbf00d258b05f9baf9004db9e07daf81d1a3c6e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Make sure that RHS of typedefs can\u0027t have \u0027?\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":3952}}}],"partialFingerprints":{"codehealthFindingId/v1":"eccb4d9ebf12b3751716ab75d37ae2ac794130e0a75b73ec53aaef8dc70f71e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): We need to start a nested declaration when parsing the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":3996}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd8524da3db8d516de8ef89aca053c4f3b7c654a8fc3b5f9836cfad0285944c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Improve this error message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":4024}}}],"partialFingerprints":{"codehealthFindingId/v1":"36c4cc28dadb0a9e5b6cd0c9ca784371d9f0ae582284f1d3368ea8d8f4ad793b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Do we actually want the position of the \u0022,\u0022 or \u0022;\u0022 here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/outline_builder.dart"},"region":{"startLine":4756}}}],"partialFingerprints":{"codehealthFindingId/v1":"16122129961947eee1dbdca1e51a3913aa960bdc912304571783c390d5d8010f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid passing this: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/name_space_builder.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"d70fbfcb81a71361f8d6717061ab4b08856ce86a34ff1767d0812e0066061c3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Check these closer to the member declaration to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/name_space_builder.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"20c3424d79ea82c83efa342dc66e8f162d2cff83a7b36e21216f3f32177908b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Test adding a no-name constructor in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/name_space_builder.dart"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ae643434777233c1f50c4da92d7b5725aea257159a077f1187638b59d939f29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Restrict the use of injected public class members. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/name_space_builder.dart"},"region":{"startLine":359}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f10e9e0aec211fb670422f56850107e3d53ce01adcdfe9c8469680e1dc107e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Why do we need [isSynthesized] ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/name_scheme.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"a887a395d5f197036f27ab7ad80d0d9a5ab5dc2e700775e6c011bb11b15f6ce6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add a helper method for \u0060isPrivate\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/name_scheme.dart"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1090512df8375f8be25354da59d138c573fe85e1f61fbccdd7006792158c176"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this once parts support augmentations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb54a2845af58cef301d40144355fc17cfb2786c8326fa48523c95af135317ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): [metadata] should be stored, evaluated, and added to [part]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"33b92f687d9eb13a264bcb620713a5cdfc6d67eaa861a775a1e126de49084433"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This will cause us issuing errors about not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory_impl.dart"},"region":{"startLine":1515}}}],"partialFingerprints":{"codehealthFindingId/v1":"16aa7925cdc6556e593f568423db1347791cc872c0f80afdae31b07ddcdaac6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid returning the type parameter scope here. Should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/fragment_factory.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"0232cafb1fb723b9ddf0fe23abbdc4354b4f063de41935a59d77ae851821531b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Move this to parser package. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_parser.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e16a73ba26fcbfaa2ba9a3370659044aa602fd01b7213815f5e6391e3c17614"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement record type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"d52dd0c3456195405f55e6f371286f8339ce2e90c31d49d6d3c110f11382c1f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement record type named fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c0220a94c5d86e8d5f0021991364fd7831dd324eefc43e1aec01082af90f2cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement record type entry. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"6463cd0d582ae818dfc89bd105a3ca59b3dd273b1103f607b1d9be9c74624c20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider removing the beginParam parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":861}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e06e00daa92caa8b65df94b510e1b4fb51a8f64c809e38c80bb1373db6ebc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider removing the beginParam parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/diet_listener.dart"},"region":{"startLine":901}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb3247f31453dc1ea04663582a3e9e125af984a58bdfbe4da58272081416418"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Position should be on type arguments instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/check_helper.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"407beeadac61421a6b1cccb86b3e6f33810075d62d4ad92cb4adb566399350d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Position should be on type arguments instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/check_helper.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"5605d740035cb8c7a797c1fe815f5a86135da98a26e0c5d6c86680bd7444bb45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Special-case messaging on function type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/check_helper.dart"},"region":{"startLine":455}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b5acf758fa0b869b7973a25380bf93546c4304450bf0c935a8dc84a2ebb21f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Find a better way than relying on [interfaceTarget]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/check_helper.dart"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dc20e8cd89f6cdade243e0570e998b9f58658de1cf0d140d13bec81250c023e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Also handle declaring field parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/check_helper.dart"},"region":{"startLine":1043}}}],"partialFingerprints":{"codehealthFindingId/v1":"83a503e750e3adc159eb2e09d7ab5c6d0ab2a171954b071a55f6b8c645296dff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Specialize more messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"629ae05498a9a8c0f08f9aecbcc195633066cb604c539966e5c806809afe6223"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Check that other modifiers are consistent. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"840512467eb0a4b92305c5818faa7b6ad5ee09616d22b1106016aeaa00577ff5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use a distinct message for patch/augmentation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"0252dbd73474016dca948d3f786027cf3931ad8b9aa5f0e6faee89143981ec95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use a distinct message for patch/augmentation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb95ee21068da4fc1d9b3a2e313fb63f9fa66a72b1c605e0b762d1923fe34450"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use a distinct message for patch/augmentation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":832}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b0370cae6729fcad0189c6b060d2c7b6027f181ea7cf5d59a97983f45f44604"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use a distinct message for patch/augmentation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"264be8d17a67ee20939e1ab4b33541e5eef3e85d48d37f8af81683d6ef08e7f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use a distinct message for patch/augmentation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":1126}}}],"partialFingerprints":{"codehealthFindingId/v1":"d698fc3df39fe1742c845581290318e1b4e97dff9a191d9a4a5f9c56d0472d38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support typedef augmentations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb4a22c31b2d46d5e601ce35a1ac4c8a18cb4ee8c3ad644df6c31309aa536956"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error if [fragment] is augmenting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":1419}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8c3dfe87571a45214900e8c10c15e5be5dd2295658b08349e6b19ba7737a127"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error if [fragment] is augmenting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":1580}}}],"partialFingerprints":{"codehealthFindingId/v1":"bece303af7df3e3d69947ef17ab82046afc3540a0fb77758b4243a975e45735e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report augmentation conflict. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":1446}}}],"partialFingerprints":{"codehealthFindingId/v1":"1079b80e9acedf132e829a1fb0f12797c3b0b0757328bcb57a262d71c583d074"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report augmentation conflict. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":1603}}}],"partialFingerprints":{"codehealthFindingId/v1":"3044b8935275c83bfd097d82c1e76a2cbfc0c78cd52c11e3cba9cf62a4810087"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Mark [declaration] as a duplicate so we don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":1665}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4748ed3e0ca36ab9c9dff6e7eb08612304f4a299c4a627e5d714d4cd2681d00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error if [field] is augmenting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2109}}}],"partialFingerprints":{"codehealthFindingId/v1":"15430a8551295edde04700f1f2b0c32c3d608205c0e7e69dc8639439826c945f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error if [getter] is augmenting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2135}}}],"partialFingerprints":{"codehealthFindingId/v1":"8175721758dda9822a900a15322f86c657559898205a80db0c469f4f4b202b89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error if [setter] is augmenting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2157}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a74af36f08feef6681b5d3dd1d27e51da48ffd35e98a4f534cacc9f51b0ad28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2225}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfaec93ecb78de309d02ec9c380ec25fed0f9efcdaf0887f16c3a5f8795f201d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2311}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed472025ec444e137d6f2d36209c8eeafd27c3ac5f6c39bca3fb91b560a86e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2436}}}],"partialFingerprints":{"codehealthFindingId/v1":"d98f633a1535fd1fea35c001a26246ebebe31d074b6dfbb99edea67a3f96e3f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2488}}}],"partialFingerprints":{"codehealthFindingId/v1":"af85f579f8220dc4de1ecb73e18d0f5b2a36f285dd368f339e23a5d35a424237"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2553}}}],"partialFingerprints":{"codehealthFindingId/v1":"a21f0c5158adea53b0f8540049969e646326003c8b684acd0efb9eab228aab40"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle field augmentation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2425}}}],"partialFingerprints":{"codehealthFindingId/v1":"33ec8056c00ea7f1d870554248b1db8e597694c6d04aba2555de4d5affa55e5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle field augmentation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2544}}}],"partialFingerprints":{"codehealthFindingId/v1":"9355a8800415f2de2db643ab4b52fa98ac64ad50eae10102dee3583fe914708b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should the augment be absorbed in this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2437}}}],"partialFingerprints":{"codehealthFindingId/v1":"2daa1e184577892da99c4c876740df9d2a793765b23cd9eadea36b7d015271d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should the augment be absorbed in this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/source/builder_factory.dart"},"region":{"startLine":2554}}}],"partialFingerprints":{"codehealthFindingId/v1":"12bfb48b44b0ac32fdace8c9113f891bfaef0d84c7e801ce204f69cf3e9ec1f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): It is unnecessarily complicated to just \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/verifying_analysis.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"a25517e0fa8f5970c25a69ae41e45211cac90ca73452599ff9c360be571ce7ca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Tailor support to redefine selected platform \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_testing_helper.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"a90fd5a209b83bf7bccff92b337a5dbd63eff07e76541ef446d3526ed3d0cfc1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find out why we something have no offset. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_extractor.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"884c948b8ce245efed005aed5def8e9a05ecd5af33dc36c5bef348bb964f77bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find out why we something have no offset. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_extractor.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"c99aae7e00f994de8bfd3f5bb34b6fb87ab68b4d555f16a9f395c8cc3624cc03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure file offset on all method invocations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_extractor.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dc6f7dce170138005c5d69aafefb9fe38dbf152b117f5173493031687672184"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when synthesized local functions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_extractor.dart"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"35181164343ba937d6455c69182557bd6eaded07c1802ba75f42632e792e4574"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Call computeForNode for label statements that are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_extractor.dart"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"f836302a74f12859e7fc196d5288c4481494261a3c884e6cbf1f51223af3f841"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can [skipNodeWithNoOffset] be removed when dart2js \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/id_extractor.dart"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2259f14eaadf25b415c670a2da14872dd582d6a99ea560122c7251235761e85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this when it is less noisy. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/dynamic_analysis.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"dae6f840a2f0029c47017be4586868c0f94cf0d611001dd0cefac9c9ce3eea53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support member lookup. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/analysis_helper.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"3459971bea764b77dfc0861cf1bb804284a859b618e39719973241f6b9379fbd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support member lookup. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/analysis_helper.dart"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc3347ba3a3e9f1281e9e20f15c32892178036270f03b7b0ab9349ab06dfed1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update this to include all files in the cfe, and not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/analysis_helper.dart"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"8793dae972ee11576f9cee045f408c53c68fc426d0f98a5d004355098bf05259"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update this to include all files in cfe and backends, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/testing/analysis_helper.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"44654fb4bdc4bff93c36a47e383fc40eceae098a2ab1fd68a08487540a347a9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should [context] be non-nullable? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_schema_environment.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ac611cdb1c58dd20989b7e3be2f6070ebe2d52506c82495da886188ca6e3785"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // context.  TODO(paulberry): this is not spec\u0027ed anywhere; do we still \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_schema_environment.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"d12aac04b8fd5db398225175720c06b39a92846107510d174850ab21e5a9eef7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(64052): Determine whether this member should be supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_schema.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"c259b0ab7a33a2875e675b11c3abcb19703d7a73ea02460cfdf19b658f3bb6f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(64052): Determine whether this member should be supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_schema.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"966a80fbfcc7c8d1b9eb10a57588313ca93bfdf359a9d40f6d1b58523bbde6e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(64052): Determine whether this member should be supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_schema.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a21f44b3e837ee69b46e1aa6a83f783bd622dfc88e266593df29679acb9d8ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(64052): Determine whether this member should be supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_schema.dart"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f1ad6a6f6942f023ae4c294b0be3f293a2a3d19fd027bbc411995d96266b68d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): experiment to see if dynamic dispatch would be better, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inferrer.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bde8541c1fc941827b2fde29b51313938b506459e8933ee94ee2c4c7981fff5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Unify [toBeInferred] and [typeDependencies] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"46ff9432ee34330fc5cd74cee401825d89bb9f38e57a8b8c35f270224df328bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we remove this now? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"c10f3d40d8b60701e588b416694972549db9a5ecc05f830e804fdd9f0bccce5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Merge with [TypeInferenceResultForTesting]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":416}}}],"partialFingerprints":{"codehealthFindingId/v1":"24a55bcb81b738d90ceafecfaba3dd9c0beaee40559f827e32586e603c9ece1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Pass [typeConstraintGenerationDataForTesting] when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/type_inference_engine.dart"},"region":{"startLine":1110}}}],"partialFingerprints":{"codehealthFindingId/v1":"92b59eb4f0687a773f0074205dbaf862dc7522e00cdd1b2f2be225acaefd998e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): figure out how to do this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/shared_type_analyzer.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3cc9ca0c7292b104df97853f0c1373e3ac1749f4153df3d85e9fe9c7df80758"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): How should we handle errors that are not report \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/shared_type_analyzer.dart"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"03bfa9763d2996df08486e408b68f27485e44086578b3531d285b2250dd51737"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov) implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/shared_type_analyzer.dart"},"region":{"startLine":199}}}],"partialFingerprints":{"codehealthFindingId/v1":"869f880822e69705edfb457cb10241f4bfeb6e1e4caca66f4d687f26a90756dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): implement unnecessaryWildcardPattern \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/shared_type_analyzer.dart"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5c1605cf77614ab1e2ed5b28b6da3ada2eb413066975d7083b64072cc709c30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Should we have [FunctionAccessKind] elements for the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"108423423dbad97ed5d0ff974292a2c7a7df6e7012df03295bf2b41c29249460"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Unify stub kinds. Should we always make this a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"1376570b16f215093ae6046748bb16de927c2355a33c8b232eb4e07e73878746"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Normalize use by having \u0060readTarget\u0060 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":578}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6049392ca1010eb756ca457c0ed210bf135fbd4a67e2bd63ade883abe796c04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Should we insert the nullability assert somewhere \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"158cb8aa2394514c2b7d6bc07d3f65af6c50f8f847ddbc62cdc08805b4131316"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Cleanup [getFunctionType], [getReturnType], \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"28d484edbc08a20d5db4649a5d15ab43fff675d8f2bbe902bbb9a55e53f9e221"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle implicit .call on extension getter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1169}}}],"partialFingerprints":{"codehealthFindingId/v1":"837939d2245e1db7d1992716bd4c2c196ea8f0e7f2ea9a7a9d4a40e307430ee6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Normalize this. [ExtensionAccessTarget] has a tear-off \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/object_access_target.dart"},"region":{"startLine":1616}}}],"partialFingerprints":{"codehealthFindingId/v1":"1144ba1945990f4f7e7641129e266f46a7c6b44bc3bb1b057b670dd982c5c94d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid hoisting variables for irrefutable tails. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_expressions.dart"},"region":{"startLine":915}}}],"partialFingerprints":{"codehealthFindingId/v1":"8516b35d6a11d5122eca31e6e978fad98fb16403c71eb40c1a8504cafe2dde11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we avoid the need for this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_cache.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbb30fc6aa348ced1b2de682a7c388791b1187970c4b4799b6112f361607c7ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support _not_ caching the expression if it is a pure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_cache.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c3b97826e720c35756141e9ee1926d8a4598434de1a3af0ecb924ee5dbf4b2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Promote only when needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/matching_cache.dart"},"region":{"startLine":1150}}}],"partialFingerprints":{"codehealthFindingId/v1":"954e81ba23cf499508f67ca4803490e0b56d9a561cb42f8f68ec62495a2e2313"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Replace this flag by implementing the default \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"61104634cb44f8a05cf3f224bd59de86ebdfe4b99ed7ad789f4e127637bf3d40"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): do more testing and then expand on the comment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"a01a2a67a186308661f0e613b49ead97b02e31f246e6d2b6a713bb40c92ee744"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Fix this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":713}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3f0f4adbea1740cb8077cde385f138b6218bdeec8363cdb5bb34c5d6bdae758"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Fix this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"633e3bcaa1991dcecbefafab720a29487049f8c096dec8b4b5081373cc4ea921"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): The outline phase doesn\u0027t correctly remove invalid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6edc01b42594ffe15b6dcc37ba305a32432a609ac03d1af8028992387063b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): The outline phase doesn\u0027t correctly remove invalid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":754}}}],"partialFingerprints":{"codehealthFindingId/v1":"7150d1c49696357f8acca2cb24a04d4039273f7b98d03fab684c1275bf504f12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid null-check for non-nullable expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":799}}}],"partialFingerprints":{"codehealthFindingId/v1":"a398e293055230d31119fba495dfdc046c7b4936814dbfbe92c5fcd013e82547"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): use resolveTypeParameter.  See findInterfaceMember. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":872}}}],"partialFingerprints":{"codehealthFindingId/v1":"54b134dc3d26ada29f1198e1ca1ab7de0d2b88c589d66f712b94e5120d621321"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(Dart Model team): Seems like an abstraction level issue to require \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1367}}}],"partialFingerprints":{"codehealthFindingId/v1":"66b0a41f9bdeabfeb8a2d48a3fab433440053f9fc416a2d01b7948edc603ba05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): this rule is inherited from analyzer behavior but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"08e8dcf4539924f223c52d84f61e21fd7fae1b44abe0464fdb90c2e108521513"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): is it possible to find a narrower set of circumstances \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1768}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2dc49c63c7547ec89644b915e9bd69c3bf28fb09451d234752625b1e5920278"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): if we are doing top level inference and type arguments \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":1859}}}],"partialFingerprints":{"codehealthFindingId/v1":"99cd2c75e34350a9066d08b48fefc06f57a5e1503be72a109323931ebd9aadd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should these be the inferred type arguments? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2651}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf92614ad9e58a90ca954e349c3fe7f7d515a414ddef44c84383e89825e6ea75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use InvalidType instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2663}}}],"partialFingerprints":{"codehealthFindingId/v1":"b30ba0473a6ab8ebe1e1ce6237079079589d64cfb549402417b7d455f766a4a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Check that type arguments against the bounds. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":2981}}}],"partialFingerprints":{"codehealthFindingId/v1":"c951592a74d9e89e8d3b334b68798819cb7fa90dd5b31659400bb90031f62d2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): would it be better to report NullableMethodCallError \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3438}}}],"partialFingerprints":{"codehealthFindingId/v1":"f18d04041e35a280c1ea02ce305bcc2208546a1d3f8da86ca1cd78fb5a457582"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when dart2js/ddc supports explicit \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":3463}}}],"partialFingerprints":{"codehealthFindingId/v1":"16480f4c0266d3068f57036be4b1fe0d6af644bf0e8f7efb7c844fa2f0f500e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Create an [AbstractSuperPropertyGet] if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":4199}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e63b8b3bff46d3dc65dfe9933938f1ba749e2059868f5c32eb4de3b0538e4ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): If [type] is a subtype of \u0060Future\u0060, should we just \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor_base.dart"},"region":{"startLine":5058}}}],"partialFingerprints":{"codehealthFindingId/v1":"99bf3dc3890cf4d6d0c800ab97b829edfeaf1b0817116d3ca0c10104ebe8095f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Probably all \u0060_createVariableGet(result)\u0060 needs their offset \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c000da9757642a165f55115b784382fa29cd07a09e801dc611f6c8f9522b9d6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This can be improved by detecting whether the assigned \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff43f0768bd327b17676824858abfa8c0f82ee91e22ec3c8b93b09ea495ff83d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): The [wholeExpression] is an internal expression, but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9997dc6ae78e63600eb2008397d7f75d7e2fd74b24fd62b236153a71d982dbd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we use the type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":3259}}}],"partialFingerprints":{"codehealthFindingId/v1":"05315b4f45b5c69d792338bc0ff0c510b611efd1426600407548f0c8ce5403d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should emit a better error here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4304}}}],"partialFingerprints":{"codehealthFindingId/v1":"aba48ea77b3594b0d47423437c3723c5e0e4261781073dcfcb70170f4b817966"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should emit a better error here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":4322}}}],"partialFingerprints":{"codehealthFindingId/v1":"be901806a7e27fdab2dba00314f1fb1c2deca04bcabf3a0980398d0503390771"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should this be a [LocalVariable]? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":5041}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bc1bb69f6365f1c9d14965704e7a94ac85db9a7b2ccea2d72dbed7c94eaa3a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Special case \u0027unary-\u0027 in messages. It should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":8013}}}],"partialFingerprints":{"codehealthFindingId/v1":"e23c76826b153e4e24ee86db0d9d4418a61b1628b4875cc68be9ba47ce03edff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(62401): Remove the casts when the flow analysis uses \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":10610}}}],"partialFingerprints":{"codehealthFindingId/v1":"e706901739079f1afc4e67b8fc7a7b71dd29571c87dc4c0010be0295157789bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we use [isPureExpression] as is, make \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":11190}}}],"partialFingerprints":{"codehealthFindingId/v1":"26fff9a4067b6149cbca08921118bcc7940e5707171cadf7521151e0d34ad044"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we use [isPureExpression] as is, make \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":11215}}}],"partialFingerprints":{"codehealthFindingId/v1":"b51aa6e221b529b51d0e852317e79b5b1804e23dac1d709e35232f3e6adb3284"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when backends can handle record \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":11255}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bf16b8a1599e3364d228d3ea1ff3bb37a8704bfe6f244a55c94cd4a1ecdd1cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): make a test verifying that we don\u0027t need to pass \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12030}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8d648a7be9a730997a131034b13d2543aad12bd56c69f9717a567f0fbd46b50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The required type computed by the type analyzer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12477}}}],"partialFingerprints":{"codehealthFindingId/v1":"f25eed59c90811410654043376167e2bfe77fbc4cc8a87b9ee7d1dd9b9b5ad47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): The required type computed by the type analyzer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13096}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ead04ebea56e123ba81917e9c04101b82933f8161328dc0d7ca95fb9b00e7b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we use \u0060isSubtypeOf\u0060 here instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12646}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d6c5c48d609bed2e4d455a297d69a13305db091bc0c79b5ffe3532ea8f11b3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Extension type getters currently have no \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12814}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bfc5e77fbb13867c8087bfa533d6a0c1eb7b49da2823078fb74ce694e781f5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use [fieldTarget] to compute the checked type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":12826}}}],"partialFingerprints":{"codehealthFindingId/v1":"6299daad93bb30e99a02ad35bd54599cdf17fdade58a7784d56018a8a0724dd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): How does \u0060recordType\u0060 relate to \u0060node.recordType\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13251}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d082fc016c82aac7b7e9dc2853dee4d8cc18514b6ca053343486628f4bf08de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Share this through the type analyzer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13354}}}],"partialFingerprints":{"codehealthFindingId/v1":"83c8cb81c0f95fbaa1cff5e6f8072317e659e6c71335cbcf908ce409254ee438"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we use the \u0060fieldAccessTarget.classMember\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13609}}}],"partialFingerprints":{"codehealthFindingId/v1":"53f8f3408b2f2acb1ed65b14d5b8c166e8c7cd1987dd9cee1a86daaaf6436d8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Reuse computed values between here and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_visitor.dart"},"region":{"startLine":13740}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a22651613e463fad9ef815c5a7f7f1504f234440bdda8b7155cb9c620ab253"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This doesn\u0027t seem to be used anymore. Remove this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_results.dart"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c5677b508c020544ab1a5da439f298b113b3caa8365410f84edbeb8e54fff32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Don\u0027t generate null-testing expressions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/inference_results.dart"},"region":{"startLine":618}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5713c9bc413e1fcb12dac37b6d3fcd417629158b71854fe6ab077e7ec9219c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Should this be delegated to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/context_allocation_strategy.dart"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eb010939e1094bd4aaebf33b574f9c8d6ba080a305fcf50affd36460c22c631"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): When all the back ends handle set literals we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/type_inference/collection_encoding.dart"},"region":{"startLine":2173}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea6857c5da2cbb6a38c3f9c12a9474c57de4fd17f641ca892eeb907f4a0ca7b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Better support for not caring about preexisting spaces, e.g. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/textual_outline.dart"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"6042848b660f1d0d7e95e9320fbc83cf4c8aa476ffd9b70a253b0113309012a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Specify scanner settings to match that of the compiler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/textual_outline.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"74479efec46a1879208dc9a5d665d864b751e865cc28a0b977e8b6ea8da2046d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Canonicalize show/hides on imports/exports. E.g. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/textual_outline.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"16f41d3c0d24055bbb015b3bda660bc5597c1eece826997d15861744176e06e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Compare two ASTs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast_helper.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b87bce824d2d764477d34ec45959b1e5b6d08a732aa59db58792a83ba5959c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Compare two ASTs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/parser_ast_helper_creator.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"2edefb99c4105a00bcc5f86c48e460328ee3e0680d9396fcc8445a265b2e76ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly all the enableX bools should be replaced by an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd833c1b6740218b7fbad9cbde23350e9dcdf6bedc699cdeda8d5e31036e0af7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should we perhaps update \u0022allowPatterns\u0022 here? E.g. if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"71d656e5f93865523e8637d6ec7f7ae685b8d76e9c9f415c0ea5fded1e12c831"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly this could go into more details too \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce771938b307af81dca733639a57189ed7b4bd1ae1d6bae9e804fa47500fde40"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly this could go into more details too \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fe38fa07ac931e4f296b6546e93cb187dc5dccf9ca5c0c0a464e3f09d34be91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This might not actually be useful - we\u0027re doing a lot of if\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"09cbd3fa794d1cf9dac70c792a4a6412448956fe411795b775fd9b8f9f258a62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This might not actually be useful - we\u0027re doing a lot of if\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/parser_ast.dart"},"region":{"startLine":1097}}}],"partialFingerprints":{"codehealthFindingId/v1":"370b02e27786e98bb9779f116e3392d88ef05da41a404a1bb935df09d2193ca0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Overall TODO(s): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"84ad2def11c939ba9afb74f3b13f97131347b4a62140ff161f8fda2973ed7d43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Support updating the configuration; also default it to match \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"638213b24fdb2b35080d82472c18b402a5b43b494eea1e7c301034ca4da4ff1f"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack: Put type variable declarations into scope so any overlap in \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"924c5f2d527573c5a3729f825844c1e7302ab56f140812416590b3840ad65cc3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Maybe put on a list to process later and only include if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5b986be81483e6716d876a6f5e9d50d030ef009ad036b99d2d682a0aa82a180"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Use \u0027show\u0027 and \u0027hide\u0027 stuff. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":834}}}],"partialFingerprints":{"codehealthFindingId/v1":"00ef0b80214322230bc0d9a322e0df6c84e56d7886fc981312ae8e058de0f24a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Use \u0027show\u0027 and \u0027hide\u0027 stuff. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"a33c56fd5deca58f8e628e68669dd688dc80544af21d7ad7402d75d87bdbca61"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: partOfUri could - in an error case - be null. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/outline_extractor.dart"},"region":{"startLine":988}}}],"partialFingerprints":{"codehealthFindingId/v1":"b834fa4af6f8b5d238e827d50a4a165d338efeeb358bdf5f9829d28160edb667"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should the data from \u0060node.getConditionalExportUriStrings()\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/import_export_etc_helper.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8e2303cfd3b4eb91eed88e18acb7e39939bf0670a9ea9af42d3f7f8c58661a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should the data from \u0060node.getConditionalImportUriStrings()\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/import_export_etc_helper.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4baeb0c8653a77622f64abd82ecf0525f91e51ff7e208503954b2602404d77e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This should be done via the FileSystem instead, but it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/error_reporter_file_copier.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1253b57438c16e2b21c29950a5c0f8f02d978279c55110c33f9b797c8394853"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): https://github.com/dart-lang/sdk/issues/28316"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/bytes_sink.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"88c41239d340bd1870368ad662f21059cf3c4312a6df9012c41cfebff24ccabd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Possibly this should be different... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":265}}}],"partialFingerprints":{"codehealthFindingId/v1":"a49653bbe0a95e3e289311995b6305658903f6686edaafd5ea31e00f5c3004a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Possibly this should be different... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/lib/src/util/abstracted_ast_nodes.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b52335ec61f826b03c133f4a19bae6c08cdf2761589240f15fbc291d914250e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve error recovery. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/parser_testcases/primary_constructors/new_in_initializer.dart"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c07a349e8c98e116d77a6e79d49cd1e1b8e4bd98948716552dfd5d91f3c9413a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): test trimDependencies when it is part of the public API. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/summary_generator_test.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa72ff8e2711bb74b216bce14c59e3eceb97aaf8d43a4aaff8a500cc80b42da3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Maybe actually calculate this? I haven\u0027t looked that up. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/simple_stats.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e37874281c4c25ed3cc87e98d979c266b1792f4fe42b7e34122cc9ee2409719"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Should be 5? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/scanner_test.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b4b610cf29c315ea21a7ba2234bfb3f682e8b6da4bbba87663fc1af1461f8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this when http://dartbug.com/11617 is fixed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/scanner_test.dart"},"region":{"startLine":1600}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb2ba8c468ef6ad5ded6c93951d87661f2cb298bad28976d31a5b1b3cab144e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this when http://dartbug.com/11617 is fixed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/scanner_test.dart"},"region":{"startLine":1607}}}],"partialFingerprints":{"codehealthFindingId/v1":"03d61b9ba9f476b39f549faef5d94e99d0ab238cda135a3ac1fff4b9a7fcfa36"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/outline_extractor_tester.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ca3e1838b7182095225e77f4307190f46b543a1411081b79ba77bc7d15ef31f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): switch CFE to camelCase conventions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/messages_suite.dart"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea0b92ca25cfa8b9d958afd2b924d0b5405d73972fdef7557b888764ecaaae3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Technically we should find a un-used name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/messages_suite.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"c83ea1ebcf6b2b43ddb888f7f500b86b2999b46979c6ad4139b0b3537f477851"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add tests discovering libraries.json \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/kernel_generator_test.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"53d8ea3f2f5231633ddfb6a5261bcc03d01a49ccda83a4d0763c9b594d1e6854"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): add tests with trimming dependencies \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/kernel_generator_test.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a2a4f803b765cb77bd10e9ef8b2871940eb63ba880f70a81857e323349fa4ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,jensj): Document all properties. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/incremental_suite.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"a795eec65bded3d3537cbe723a33f25bc0021e9961145fb0b6e2ed39063ec888"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,jensj): Document all properties. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/incremental_suite.dart"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"e935ebbf4480966433debd49208ab10b5b6e2aa07aacc7505cab58babff51d23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,jensj): Document all properties. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/incremental_suite.dart"},"region":{"startLine":2942}}}],"partialFingerprints":{"codehealthFindingId/v1":"bee780d34238f369ad1a3d0b985d9dbaa60eb8541435fabb6d774819785182ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,jensj): Document all properties. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/incremental_suite.dart"},"region":{"startLine":3706}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ee7feeeadca3bca208d1bda1bde14e4f0b412f409167bc61bb82e368671057"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This is very much alike _loadModulesViaAdditionalDillModules \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/incremental_suite.dart"},"region":{"startLine":2522}}}],"partialFingerprints":{"codehealthFindingId/v1":"d460695fc52eb57be0ebdcd69d8915ef34cd0b43866086a3e47a2c46a4d58435"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Verify that the below is also true here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/incremental_suite.dart"},"region":{"startLine":2662}}}],"partialFingerprints":{"codehealthFindingId/v1":"63a2fe56992309eaf930d509e1ab995e24825461010f3dd8e81a52fc2cf1832f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: When needed, we can do this for warnings too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/incremental_suite.dart"},"region":{"startLine":2912}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5024dfba12a676d7b65227fc427942eb5cf2c9967e2c70a70104ebd59f23797"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Reenable this check when the discrepancies have been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/incremental_dart2js_load_from_dill_test.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"f738061be1025667c77c1bbfe60613a3b5a522ab255435037f98311bc0ae07e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): We could possibly also ignore if it\u0027s less (i.e. a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/incremental_compiler_leak_test.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"c240d8a6edb11774e89a159e44712df87691290f18a728cd401ae10afb8b18b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): the incremental generator should always filter these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/hot_reload_e2e_test.dart"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d19faa38b3de3fcbdda372636811141fb11d233bea16d381aa583bef3f0ff3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/49304): implement dart:ffi tests"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/ffi_test.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2993bf73b9fca73bc1307b287dad3d4f258124ce3258c41690ecb1347f9364f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Ignore context for now. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/expression_suite.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"a07a07a5ebd511dd4b6b2fa628a4344ec52d9ae096e8fa68d4c789ae7e466f83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(CFE-team): These files should not be included. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/deps_git_test.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f860755e64580093ebc0cc9ae3f3b56675d708db0367cdc4bfe683dc04fbb60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Run in non-silent mode, but capturing the stdout, to verify \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/dartdoc_test_test.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9fb7da02e7f5839f8d854d10581fe2736566b4a10fa25e6d2e7fc16dd84a0f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): The different cuts and inlines in this file aren\u0027t tested. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer_impl.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1649e83d08ecbf9e7b54355f91263235f403019875ff1018e6b912cbf6ba65c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Can we \u0022thread\u0022 this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer_impl.dart"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"6749ee1b8f9257ba8dc5c6511bca055f14c2c17c0d5b382b37075d5ca501ff3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Maybe inline slightly bigger files too? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer_impl.dart"},"region":{"startLine":563}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fc5203db3dbd3fcfe4aef7919fd67a3b69193ca019a02e155ed7616a3cc9f1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This doesn\u0027t work if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer_impl.dart"},"region":{"startLine":626}}}],"partialFingerprints":{"codehealthFindingId/v1":"339326cff5979255d5da4877be05bd2d2c625a8472727e7aa9baef9ddd43579a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): don\u0027t use full uris. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer_impl.dart"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"4caf92698991b68600f386ba491d649d38edad3b088af19c5b51c1d347c8d866"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Maybe if the relative uri becomes too long or has to many \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer_impl.dart"},"region":{"startLine":901}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a91cdc4a178583e5b7f2865b544d38635c2c7c2531e5fb449704218736a31c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): The below removes from the \u0022extends\u0022 (etc) until \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer_impl.dart"},"region":{"startLine":1611}}}],"partialFingerprints":{"codehealthFindingId/v1":"057b32949cee096f4a6211560f59fdd76622c12e0038fc129e52e9d710c657ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): The other ones too maybe? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer_impl.dart"},"region":{"startLine":1831}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2e4666ecfabd264b8152b8a3716883063cc80b8288c948fe715d424b57c0eca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Parts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer_impl.dart"},"region":{"startLine":2030}}}],"partialFingerprints":{"codehealthFindingId/v1":"a535df5db032b476ef18e6014d9ddfa66fdf0cba1f0dd6d1aa7da4e569719b6f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Option to automatically find and search for _all_ crashes that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"d382863d06c9e6423c48a1b664546a444963e1670da3d772dde5828948e0aebd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Add asserts or similar where - after each rewrite - we run the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/crashing_test_case_minimizer.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"503f3d7f3fa51644918190bdf2ea42fe226ce50a603fd7abffa76f8a9fd239e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): More info here would be good. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/coverage_suite.dart"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b9e8390d5e284c5b2079e7e2eb01c92eec666b55dcf5d7123fdca2e2ade84bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): why do coverage results vary based on the number \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/coverage_suite.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2081fe648fb8341409bae12800cf134096a8b8b68af2f9ec4f95dab48a6125d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): I guess we should look at the isolate group; also we could \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/coverage_helper.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"28b9c62d1cf7afbd3851866459f5c1c567b8452a5dc17047d8cd7fbe3a9e98e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): I guess we should look at the isolate group; also we could \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/coverage_helper.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3b0cf6235cb146a66ee567f5396d04f13ff181a5633e0f8e3c64ff72e22b4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This will fail for getter/setter pairs. Fix that. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/compile_benchmark.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a66efe4b07725de365a661ac4d03a6a2769c5761cbb07c609dd3f79978e447a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): The target has to be VM or we can\u0027t compile the sdk, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/compile_and_lint_impl.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"f74635045a7a51847f8674c7dd43f1ca6901820fd4e45c50f0a459276f0ad420"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack start: Read ComponentIndex first. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/binary_md_dill_reader.dart"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdc7df75f0f7712e197cc4bd032337240556355f3f21fc566c9ff7e1eee0dd3c"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack end. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/binary_md_dill_reader.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f4f8a7e3f48279a49308cd458e69191d3411aaaceb654008dde54fe1daadbd9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Support this more elegantly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/binary_md_dill_reader.dart"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d476668f0b165a50a69ded08a765aa20c6ef6c9ad19b56b0c1ab82bfbdabfab"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack: Use the ComponentIndex to go to the end and read the length. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/binary_md_dill_reader.dart"},"region":{"startLine":635}}}],"partialFingerprints":{"codehealthFindingId/v1":"82a6429b72c8b00b426869176e9e978b7aaa24fc91736c2a5b21d9215fed35f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Also compute member data from builders. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/id_tests/inheritance_test.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"4fa3e1c2541e8709402e64f00f04401ecf0e1d7c480ab4cf73c6c7f3a1c15e8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): dynamic, do, other keywords, malformed, recovery \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/parser/type_info_test.dart"},"region":{"startLine":1643}}}],"partialFingerprints":{"codehealthFindingId/v1":"b716f1ec95c4f908586ac2bfc5d0f6396c9153707fe0e2fdab42106c8fa1bae4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Update tests to include required and covariant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/parser/type_info_test.dart"},"region":{"startLine":3458}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb8530e00fa0fb4ed27efe98695a71f1ff0eaa2f8306c5cc6130f8b2835614b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Move (something like) this into the check-all-files-thing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/parser/parser_ast_test.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"169258408950c078d0d12b651c4bbe8152f34da19c465acf0f42e7186d00d8ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): update to include lateToken \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/parser/literal_entry_info_test.dart"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ccced49f155119fe9788d4a3feb20247145b74271cf2ba47e11c36d95e5303f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Ensure static type of Never access is Never. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/static_types/data/never.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"92797f9568f6ac74fe801312bf2221434225b2c60bfa3776818ac91e1947d6a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support running dart2js, dartdevc and/or wasm. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/testing/suite.dart"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8b4b45c31befb44f7c354a0b2d2e3a6a7b9c749b84f9a353b8f80ca82f91f4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable verification in outline and modular \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/testing/suite.dart"},"region":{"startLine":859}}}],"partialFingerprints":{"codehealthFindingId/v1":"f546ded8f4b37a7c25a1f2dc5f12406b883ce3861d1ae601e582165291168d0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): When we get errors we should try to verify it\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/testing/suite.dart"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"d22140734154e5a6b58461415af57da2ddc8ca9ef1623d77fba14dcf7c237bdd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly sort stuff inside of this too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/testing/suite.dart"},"region":{"startLine":2107}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a095bd4857dc6060898da711635ef3551fecac91286dbb2a8674025794efb0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly sort stuff inside of this too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/testing/suite.dart"},"region":{"startLine":2128}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6cfda52d55ce05b0315add4ddc0730448494792755f12b35effdcc3b7e0b227"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly sort stuff inside of this too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/testing/suite.dart"},"region":{"startLine":2139}}}],"partialFingerprints":{"codehealthFindingId/v1":"23f45c9239bc79ea05e6571b7b5d51fe677c4c870c017ef6b6f380d98baadb35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly sort stuff inside of this too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/testing/suite.dart"},"region":{"startLine":2170}}}],"partialFingerprints":{"codehealthFindingId/v1":"0050d621d267897e3e5029ac586dbdf6eae09bc414cfb857c32b948e05fdc5a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly sort stuff inside of this too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/testing/suite.dart"},"region":{"startLine":2181}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e8b0513d72bcb6a48c05b84e466b9581e0b26cedda8e45b67d2f3c6504a718"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Figure out why it fails. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/testing/suite.dart"},"region":{"startLine":2800}}}],"partialFingerprints":{"codehealthFindingId/v1":"596f4009421be4f5f57359091f5d0b1958447fe40e93d69d2768d0ec968402e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Test toTextInternal for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":690}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc0f217a49370e13db236ac26b86c77716df07603565db3c475d6906730e4fea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add better text representation support for internal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1322}}}],"partialFingerprints":{"codehealthFindingId/v1":"56a273fe0b472772ace22aff49ab215d9ec41c2155ee4365beb5401f0907d839"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1808}}}],"partialFingerprints":{"codehealthFindingId/v1":"43c4fdbf3d8deab47766116af9639fc4399348389fd80cb44d39cc06b2389340"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1840}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2d342067a1cfb382d706c7ce25d15c38ea9c142df28bf8a34edd178d7c89ee0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1880}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a4f4de95e8afe03af4b9177b22b5bee9b8b717d16ece8d702082df1ead45b1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1894}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fd71e437b825b114ee6d42fc55da6e90929276ca48f266239d54c5682861586"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1917}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1c76c4be60292f1997e9494d483e67cb4df51f949603235acb3410fb1d998f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1932}}}],"partialFingerprints":{"codehealthFindingId/v1":"de073876e6f15713d53b8fb8769586144deffd137ad21e35045edd4a22d9849c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1945}}}],"partialFingerprints":{"codehealthFindingId/v1":"1525af7e945a75b24a063c36889befe60abadb9e2ec8c7ec81c4ee79ee8884ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1963}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a8374236d355a5e5ff35b0c70bfff09619b018c9fa0cad1af6d2fefa56b8345"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":1979}}}],"partialFingerprints":{"codehealthFindingId/v1":"e873ea8c9f93d3c7f562026b9d8a1148f8b44384101d854e9d30ad9421752770"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":2045}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa0f3d21460dda6c0f3a3550c3e86189cd13668f2993c8e1622c79f6201e276"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":2060}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba7d19d9a37d26a145a3e8221d47d1a81f10b26181039348cd18da8f701d3f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":4487}}}],"partialFingerprints":{"codehealthFindingId/v1":"16bf50bb13ca85bf6a9079ee162923506b8a7b0cfd1d7974db1e8b505a6da11b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":4498}}}],"partialFingerprints":{"codehealthFindingId/v1":"157595257633e146bfc2d45877f0d8a9fa07400cd41807eb3aa4e862e4e1e1c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":4512}}}],"partialFingerprints":{"codehealthFindingId/v1":"60f6a4fea3b5fdd9381bd8b1f2706d78a443235448833a2adbeba7f4a43fc191"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":4533}}}],"partialFingerprints":{"codehealthFindingId/v1":"bda62df9f613297c9c2ab37f1642d688284174626ce01d05bbbb3d8b75674a05"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":4554}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce167b382a7c9ca523b760ad82b32f128432505b7eb13e28cf2a144eded0cc99"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":4575}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2cbeb99ed024c77445e4b8aa2d7a93075893fcbb85e105ece55b850e1c09a66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":4588}}}],"partialFingerprints":{"codehealthFindingId/v1":"6919120567f8ceadd30207500e3c245a36493156139aeaca2f07554152e669f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":4598}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f4b1279d784db4705ffdc429969916d94ca90f6ad7122a20d26c745d94a132a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support precedence in internal expressions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/internal_ast_text_representation_test.dart"},"region":{"startLine":4614}}}],"partialFingerprints":{"codehealthFindingId/v1":"145e41f356522bb11a298b2db1a0cbe053a24f5558a2a4c85acb9205aca7f196"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support interdependent structural parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/text_representation/data/types.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"b66f97126cbb61b9eef565182431404ead938aff8917f7f5abca55d5ed7e584b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): provide flags to configure the vm-service port. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/tool/reload.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dc3a75c650b96d2b7e447f479fe421dacdca597028f505326695e2e8cb8b0ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff1d6eb5b00fe63986517d733380f36140473f39893c00434d3ce9d2e58483fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"40b141ddccddbbce303c2ed0734e750deb230e84f494869bd16c60a4d74aa092"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":935}}}],"partialFingerprints":{"codehealthFindingId/v1":"be6a270a421ce71f7281a9d31eb7e36f44a368614ccb3a5bb6f1cb1536224c3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb5d891f7c99f2ebece8370aac630cfcfbea314634e5f3d4d7afdb947514adbe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":1253}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5e6be8fd491aff20ed6d6fdb4cc8d4b608500b943e3e651a0f460b6b8720731"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":1543}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1028bbc9c4a78c260a610c22ee05e8aca0396c37cb2239247d64604ae5e98e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":1664}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b26f7d82bccf1cace98df6ce184ed413201b71082b56f0863a5e5762705b8f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":1713}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a4065cf0fb2bc8a0443e9d6df264d4744c0e992ef7f0f363b1017a283773b8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":1770}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f0eb197bb950768f187daac99995d2dbb938f68756e1723a7dc0caa00f46bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Test for various nullabilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/type_inference/type_schema_environment_test.dart"},"region":{"startLine":2313}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a32cdc16159c187819740074b6782f2c1afaac10bed342368b534d98b315820"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova):  Uncomment the following when type arguments are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/types/shared_type_tests.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"22c59c7606892f1582f60c90c24a5c678119ae1d07d47379b709a3a64842088d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova):  Uncomment the following when type arguments are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/types/shared_type_tests.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5c0fcdbbdc6ef34a4ecb7d66573273ce6f711ca3ba7cf625e0f83cbe9e51c57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Uncomment the following when type arguments are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/types/shared_type_tests.dart"},"region":{"startLine":1213}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8effea893f5347662f94d935b561062fe3bff2a5f52b492f7cfacaad2adbc6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report error on this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/utils/symbolic_language_versions.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"efcb0a9c894910430aad779aa62832bf69612c7aa6c3b71953f290203346f49c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Delete this once failures are fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/utils/kernel_chain.dart"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"9be7434199b62d6f8964c0f84aacf26926c2cb3d7116dcd6108ac5a2b0d6bb19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Possibly reduce these cases by updating tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/utils/kernel_chain.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ea33f5b6988cc197073d1ff24e46dc954775d9b2550a09f60a8c17ae5d6f1a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Find a way to avoid or verify the discrepancies. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/utils/kernel_chain.dart"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"aad706963a07ecacc4858dadd9916f47fefc97447618d03dc00b11a2e77a30f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use library filter instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/utils/kernel_chain.dart"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b26960c7d43bb1254782630d83073981fad011a0df5f527cd67d6b650d7b2dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use library filter instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/utils/kernel_chain.dart"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"40a155b3c8fe2b112d055db2a89c1b16be9b0dc705fa2308572e8218a37c3bb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Work-around for Windows. For some reason piping \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/utils/kernel_chain.dart"},"region":{"startLine":748}}}],"partialFingerprints":{"codehealthFindingId/v1":"30f02cf4b96d61e944cc9d1a4f025617a42c54ed3a4526391dab66733cdefc4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support patch libraries user libraries. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/utils/kernel_chain.dart"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"217478da3f07e490150105b0af3e87dfbad85eaa5405de93aa5510fec3b8ed1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should not be an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/constructor_tearoffs/private.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"2179a2c1a1b3483e71b475de46ba129d2b7e29ee04ed09e05cd4dc6437ee7fd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should not be an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ec32e5de57be18da454a499af4dcdc75e6ed75f404578874e9d6f653066faf1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable these if structural equality is supported at \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce5f3cf8267c8991cc4c3460dbef7404114e1198e610bc04bb352214fa9e7fb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable these if structural equality is supported at \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/constructor_tearoffs/inferred_non_proper_rename.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b53e37f5d61196cfa02929335739221d6c0c7e6126088f407c5dfbe3bb24b01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable these if structural equality is supported at \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"675db3be873a9f950c361a6f05e09fefe4af7fc1a01bae94bb83659362452eb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable these if structural equality is supported at \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/constructor_tearoffs/lowering/inferred_non_proper_rename.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"51438937eea4cf97dacfd30aed6ba4210f38b06d1f9a7ea83f4c3f2ea7660a12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use \u0027var\u0027 here when dependency on inferred parameter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/constructor_tearoffs/lowering/typedef_from_dill/main.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dbebb380aabe25b5dd9ca130f292b2ac0bfaa84b77686871d0048406068cdfe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Test operator -() and operator -(val). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/extensions/other_kinds2.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8674e09000c079763b781f81cf823256e31426a17b307105c1e062a85b05409"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report argument/parameter count corresponding to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/extensions/invalid_explicit_access.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"6040ae035ab79531c69f06ead75d6f1ed85fd024e0cbbfc441b36d73ae956774"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use the declaration name length for the squiggly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/extensions/invalid_explicit_access.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1cf56067b0a4fbeb14b6db5ef6ec6a7d19c3e4ee78ee20049131ce981502255"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): https://github.com/dart-lang/sdk/issues/28395"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/mixin_covariant.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a09e1cc8a316cf45bed74cfb62a7a4adb55e32626dd45ebd706bb891fad26b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): https://github.com/dart-lang/sdk/issues/28395"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/covariant_override/tear_off_type_test.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cc9ea87e00be6cec66bdde0286f65e22683268e39982ff1ebba9bbce675b0bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This is wrong, it should be \u0022a: 0, b: Object\u0022 or an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"02711ce8087fbdcdf49c557e2cf1726c73684eba18a0fc3b050f361115377322"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This is wrong, it should be \u0022a: 0, b: Object\u0022 or an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/mixin_constructors_with_default_values.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"47b6204a4e32d219e0296a8e37665e663a003f025e7d108501953b2d5f5db7e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Update this test when we implement magic constness correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/magic_const.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3d7b102ca9ca0b8915aea426a49b7d9b2fe5db0d126d2929504861d7cf5e2fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: hover over \u0060listenToEvents\u0060 and observe the tooltip \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/issue49208.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"a17127aee468b91747aa75a4b4de536f62e39d1347a457547d3a5f83c5abab5d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,paulberry): These cases are not supported when the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/general/implicit_constant_in_switch.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb0242a326361965a1c110d1b410b1e05ed42e66248f43af13e7812e10a389ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report errors on annotations here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/generic_metadata/erroneous_function_type_parameter.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f85159019a0c4f61cc2e267707f0030fc1ea90f9b4bd5587ad4e0f93542806"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Report errors on annotations here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/generic_metadata/erroneous_function_type_parameter.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"02356a99e1746743dc9cb0eedff838d3479fdcb12ccc7982cf19ec86f314f50a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): this is broken due to bug 29689. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/top_level_return_and_yield.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"3df6d5b5f5877153e62cf0c7d91d80112288db75202c484792b24169f946005d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): this is broken due to bug 29689. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/local_return_and_yield.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"a245d0003a55179aff1e49e1f63217b5f376dd2afec2a4beeda380e264af1847"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support testing of internal libraries. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/inference/generic_methods_infer_js_builtin.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"973a551388a4582d5dc2c582f91a8263443fc9fe862f327d98649170fa122658"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this when super access of late final fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/late_lowering/override.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"180a24edf481d7d8866fcd6607ae32cf6d3e2e97fbf8816324db50cfb918970f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this when super access of late final fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/late_lowering/override.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e50ae2f1862f94a2754e3c62601d9f9253d48348cdf29156a4ec4baa237bfc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add test for override inference when the consolidated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/late_lowering/late_future_or.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"835e5601e1927d38eb5c5fa9358386897936514d68c2db9c8aad180fa2b839e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Pass the required property to the function types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/required_2_legacy.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ca04ba8a2fe0e7a2158b83d544243c6e742ee88da4c74dd4f0d06fdcbfc9331"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Pass the required property to the function types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/required_2.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ec6ff1a73e0cc34f4f2bb89ae5b359746cb3ecbc9be24c0d45371d5a256519"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Pass the required property to the function types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/required.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c861390d9128bd024bd2621692740132091bb61a193abf3f61a4c98439bff1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Awaiting spec update about \u0060==\u0060. Before NNBD this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/nullable_object_access.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e3c1a06e3dec2665fc902dae99f485ec11290ab47c463628bcce0af3014c6f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable and use these when #41951 is fixed to test that"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/issue41697.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa71cd491e47140f7eb5bce895e3b394a31be83767ba59e8a43176b5e26d41de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid compile-time error here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/dynamic_object_call.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3836c61e42f0224457c36020c846a690d447ae4225da47cb812155d49be4cb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Awaiting spec update about \u0060==\u0060. Before NNBD these \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/nnbd/covariant_equals.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"990edbd1bc17df751991e872ae9b4e98cf47532475d5a69b856ea336128a4222"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Why do we get an error here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/patterns/invalid.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"1242eafd3246bc1d2d79ada772e6010197b85847060e3f7ae0b47ae3dfd7ea54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve error recovery here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/primary_constructors/new_in_initializer.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"c95b61eee86ffb509c3f0dc541086af80ae95842acaf306955e3e524466f1655"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support these: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/unified_collections/set_literal_const.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"3073015303aef521d564000452d60b40447d0f729867701df3a39eb9fbc3b865"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support these: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/unified_collections/map_literal_const.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad2ab2f5aea8a91db4244d51d1ad7f4f561e238d64f763940220e5379b9aaaab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support these: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/testcases/unified_collections/list_literal_const.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e35b1afaab5aae4d17fc6fb4815f1bfcd1391e6ffedb073babdad11f51ed9de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): We could make the visit return a bool? instead and use that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/unreachable_if_finder.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"9831e45dcfc7d9f29ca9861369b164113c3673aabdf8be9801037fc327b31df7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): delete as soon as the disableTypeInference flag and the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/perf_common.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"e092400034d5ecddbb88d579107ee1d406c56c12a44b7d5e0f7cfb7e2d4b7022"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(sigmund): rename to \u0027analyzer_perf.dart\u0027 in sync with changes to the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/perf.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfdd2681fda5225923529cd8ddc7c0eca0c6ffea55e58a100242ab116134627e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): replace the warmup with instrumented snapshots. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/perf.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b182b6ee4ef6469ab53f881ef422b92e9da12b50b2be8ca4eb44d2cdfd5a8f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): replace the warmup with instrumented snapshots. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/cfe_perf.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"029b3fc3dec17a1d2391400a2a0d3eb3860d28f39d1ebcf1d745577af42dd7a0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Setters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/parser_ast_indexer.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0d5cd7b3040ea2f1fc39c951542a8e03835e6e2663143b34a2d24b4b1b26de1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Setters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/parser_ast_indexer.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a6971aa86436e94d87ad0399d80b40361baae5cabca009ad97c90fd6b303f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Possibly wrap a list for instance of a non-writable one. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/kernel_ast_file_rewriter.dart"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1600befac91a5258dcbdcac348dbc35f22c89a9b030b2290585113745b2a8bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Handle redirects like this: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/kernel_ast_file_rewriter.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"0060d978dba3c392e0f903a58522d596041b492cee97a624c86f412ac23a90d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): switch to \u0060vm_outline.dill\u0060 (issue #29881)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/incremental_perf_test.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"45631b28e2ad91bf450048e8b7c2aa6fb4f4971d1e532a567880644366da3530"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove mode option. Legacy mode is no longer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/incremental_perf.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"298b134dc9b34440158a17f4fc9b7c38a3fc1f44d8e8af30e7cc7ac286553a59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Extend this entry point so it can replace \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/entry_points.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ca677e9da7a6d4b8248e8eb3c3d752546e3425e7e61289d8f04df2db7b7b7ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Work directly on scanned tokens, or use parser as well? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/duplicate_code_finder_experiment.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"73b422c7d469a190234bdca17fc8c41f3d19a9580b79bfd7805bd57d9aac2ccd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): The already included approach is too simple. E.g. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/duplicate_code_finder_experiment.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f410848c5658d21d6b25e3c0f94e69237b28e4f8fa01630d7022f6e2b7f897b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This doesn\u0027t work on parts... (Well, it might, depending on how \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/dart_doctest_impl.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"31c0b379efec7611c7075cffd7d2c80a2ab0f6a6e8e452d510035c5b5c4b2029"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should the fake url etc \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/dart_doctest_impl.dart"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"568f51aa0e8484a540b657ac5d1bc44d0439b2466bf96b5b59156ac0da883fb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Possibly it should be launched in a process instead so we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/dart_doctest_impl.dart"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4633f7f2c6c342b0a6b803ed9377c7c517cbe7351840ef1b6b2c173f4eafc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Target could possible be something else... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/dart_doctest_impl.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"6daf64987995d533d97cf058c2c25b599a4b4c293dbc00b8dd6025ca2221ac19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Get coverage for the isolate paused at exit, then resume \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_runner.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dfc95cd4ea76ec9d92c2d6ae5dc4424473dfab589e9d8f3e547fb0636e861f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): We should allow for comments to \u0022excuse\u0022 something from not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"c530728f8f47fb5b8b1a2f0ecfde48ecb3927b037c23cabe1cda375db951f9b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): We should be able to extract the \u0022coverable\u0022 offsets from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d1476b28da08c671f26da08a04f7c9a557afb57ceeb6863b16b962722bc3aca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Things that are not covered by one of our suites should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c97767d613e6d68fbc694e8fdc1ef9a6244ea9f24be0fa72675e9d60ebdcf9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): \u0022allowPatterns\u0022 for instance should use data from the package \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"273c97d2b83b7a7ce2c082b9c28ea42fc58c575c059b887c2bbfd95f7d2d062f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Extract all comments and use those as well here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":582}}}],"partialFingerprints":{"codehealthFindingId/v1":"5af358b5eb05d92b2af2b5ddd079110e9b7c6e23159e1318458733fcacb0701a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should some comment throw/report and error if covered? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":583}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cb25b3556e904ea34240c469aba7fc21cb902313ad109127bf06957167c4973"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Squiggly line under the identifier of the entity? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":679}}}],"partialFingerprints":{"codehealthFindingId/v1":"9828c8c0a549b61b58e4be637368c31e6ac6eff05f5b23e221c2ab0efe9c13d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): allowReplace should depend upon if there\u0027s anything \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"655fe629a573055bd513191cff430e45205ede57667649f050f0740e49b49029"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): allowReplace should depend upon if there\u0027s anything \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":1679}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0576f388d23c2151b282cede3ead40baf5165dc34f9fb500fd10c38fa2f0de8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): allowReplace should depend upon if there\u0027s anything \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/coverage_merger.dart"},"region":{"startLine":1725}}}],"partialFingerprints":{"codehealthFindingId/v1":"378da4b434042dc7e3fc6257042d2109af08e845987b9689c854a196486b6aad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): remove also when fixing StandardFileSystem (empty schemes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/command_line.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"b917111ad410f07c9b008b55974b524651abaa4e56850b7f78b37dac2d97aef7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Don\u0027t use [codeUnspecified]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/command_line.dart"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d8e518232a11c91963af63ce5d82a3f69f4f6dc368b5412fa649a54db38b49b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): enable when we can run the ast-builder standalone. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/cfe_perf.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"59606a28968420af91c6e54e7ece49673b627fd0c087c7e96703583a620cfd18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this is here only to compute the input size, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/cfe_perf.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"63d624105580eee4bdfa5732b40772ef66d1ffac07d899f55af5f59abc4fb615"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): fix this: this is broken since the change to move .dill \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/cfe_perf.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d374c76998a28f0b3ff42443e4a7a4c680f8d1b1767dd5eeeebc8eddc3aed7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove legacy option. Legacy mode is no longer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/cfe_perf.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"1310c4f66179d1382d615d03c234961a59cbf299332765690252e1d194556e3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Should we do a (number of) run(s) where we measure memory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/benchmarker.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"78552dcabeefb616cc3378f0d06fea0ad3f99f6a0298162825504a19893b2b08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): [Variable] should be here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/ast_model.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd2119719df67d793dfa087af45eaeae0f3306a7cb93c5ab211018a17541dfc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): [Variable] should not be here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/ast_model.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb87e24746382d7a4e836d720534ce67c7a46a714b4dda7fcb95bc6a830f258"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Is there a better way to determine this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/ast_model.dart"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a90f017dce3d8c439702015bd2d346b008a36015cdc1222d05cddb5812f3adc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Check that this is true. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/flame/instrumenter.dart"},"region":{"startLine":512}}}],"partialFingerprints":{"codehealthFindingId/v1":"e445cf88025f367e49df8738cf14af4013280e09cdf585432cb6afdc195ec586"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack: Join them. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/fuzz/gReader.dart"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b1d2f7ce541ebc9ddd949ad45dd45a7338de6196d182ee6b698ec492aa8009"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): We should extract the correct stacktrace somehow. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/fuzz/analyzer_helper.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"b52fae17e76c6cf0cabdb66fb1a9700154a86ae72ae24401b4fef5b0146cf1ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): kernelBinaryFilename is too specific \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":1580}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d247623062a7b10575a631e8119feeeba20f9efbfec9937de253f92bec8ad54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): do we need to add asserts/error reporting if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":1590}}}],"partialFingerprints":{"codehealthFindingId/v1":"37a93afa5ef2236c7a2b248ab01a0e6f386e130c1b6492c951945abf43c0d950"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Deprecate jsModules as we never use this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":2029}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b01e829b526ed0418e59339a8ad367fbe889721e6b2d9dd27791632d026d29d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/58265): \u0060moduleName\u0060 is"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":2050}}}],"partialFingerprints":{"codehealthFindingId/v1":"cae59e984ae159bac0e0573cd76fb0a004605cce4024e129c38363ac42096ef8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/58265): \u0060moduleName\u0060 is"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":2210}}}],"partialFingerprints":{"codehealthFindingId/v1":"eadba8c0bf6dd67ad14e802692a9e05e41169182f6ac235c60f8aba29d6ca451"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/58265): \u0060moduleName\u0060 is"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/frontend_server_test.dart"},"region":{"startLine":4675}}}],"partialFingerprints":{"codehealthFindingId/v1":"1648a6d441a4527253baa4e360e94f4aa6bfec94ac405b6bfbb8175cefe79fd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jensj): Find/make a better way to combine json if it\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":2071}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cf4e059133b33c3ea4857f98b08f7914b2be8006f4dfc787dc5fa3f555d0dbe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Use shared constants for these. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/frontend_server.dart"},"region":{"startLine":2161}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c198beafeb6ae3da5796ef9d19d76af2dd16810505195b10c3b8f046a099d91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/compute_kernel.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f0a9df6f69dde2448fce9be7aef1388f21daaaa5e1c6adb3ef314aed0d21d9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove the macros-related options. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/compute_kernel.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcaef6b274ba44621f0c9f3ef40b2346da6f90868037a964d9dac39a9e29c1a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund,jakemac): make target mandatory. We allow null to be backwards \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/compute_kernel.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"1457ae1a27c45e514179be60876c8d4c6babe5a36bb303414fa450fa1a52ca97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakemac):If \u0060generateKernel\u0060 changes to return a summary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/compute_kernel.dart"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"7acc77146861451dfd54810c41589e4158ea4af1ef70b12fe73156c8a882ea4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): pass an old state once we can make use of it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/compute_kernel.dart"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"a62f8d7190832bf2a2583f0f35d022b6f0f361cce88a0faface18464ae96f17e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace with a MUCH more simple, random string that matches \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/uuid.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"bae06240ccbccd65a6d692a5db324df041b9241235625188400dc0a5a476579e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Fix the race condition that occurs when the ResidentCompiler returns \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/resident_frontend_server.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"31ad6c931d30a7406cf8e72771f2a92394000db9a2ac1fbfe6974ee26d6cea27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO Fix the race condition that occurs when the same entry point is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/resident_frontend_server.dart"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d8067da5661adc6a699fba184e57527d5a9c6b91f2b14f2220b49a8cdf26c14"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): If we can\u0027t delete these what do we do? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/resident_frontend_server.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f10b7f9591bb8f2ed12e9a5703a19c0eace86319f6c7f3ebc519d2dc023e92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This should be changed to print to stderr so we don\u0027t change the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/lib/src/resident_frontend_server.dart"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad8b1d6e1f4c8a5e429d14969743ff0e18181c431d635e88852c057d63446200"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): This is the javascript version of the above. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/frontend_server_test.dart"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"c23efde3d774f85a30496df6813115f41181757d5683eddda8b46262ee3d77b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove these two flags when library bundle format is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/frontend_server_test.dart"},"region":{"startLine":1180}}}],"partialFingerprints":{"codehealthFindingId/v1":"90652d0d71dcbd088fa3131293bb636de508a36858ac285f7cd42bc38d6cf6c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove these two flags when library bundle format is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/frontend_server_test.dart"},"region":{"startLine":1283}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fca49896b644d220d8d1da35f12df1699c0f7a6d77b66014c7f0ccdb871360c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Remove these two flags when library bundle format \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/frontend_server_test.dart"},"region":{"startLine":3064}}}],"partialFingerprints":{"codehealthFindingId/v1":"9616e23cfb4214bbe1ca614bd55cd360bcfebad55f5b31749b7d282b21d20489"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use (required) named arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/frontend_server_test.dart"},"region":{"startLine":4522}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb53efea265173f45040b960c834b7582b6fb81effdf4fbafa2b3438cde650d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use (required) named arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/frontend_server_test.dart"},"region":{"startLine":4538}}}],"partialFingerprints":{"codehealthFindingId/v1":"3616f160ce9ee9dbe76e198e19e1a3e08bb80ec57cbe7ffb8af518a9b8d7b69a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use (required) named arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/frontend_server_test.dart"},"region":{"startLine":4586}}}],"partialFingerprints":{"codehealthFindingId/v1":"f007a4151c5cc7cb52f2cc78ac524a2cc6a8a3d873684406655370adc6586ea1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Figure out which tests are web-tests, and compile those \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/frontend_server_flutter.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d78bb59a9dd8a1b194c6fd4d9346899036bdae6143bb7cc43cf7a7547c815d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Find a way to do the second compile again - with cleared \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server/test/src/resident_frontend_server_test.dart"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"be2501a871d15bff17659a52c65089c1689b4cf54e1d732eabdac51b5081d323"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support hot restart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server_client/example/web_client.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1aec59466689dfeb19f8875aeda82dc1cd9c0aa2dd69c4a34ceaf768a13c0d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Document \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server_client/lib/src/frontend_server_client.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecbf961a27d240e9f5182c7b242fe06243bb5fa740658160924f1f87efd5da56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Document \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server_client/lib/src/frontend_server_client.dart"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab9b0592cff51d68acfad6b3dc8e06ebd2a54926908d3577c7cfbbb5415f18a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server_client/lib/src/dartdevc_frontend_server_client.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d34793c7cbfe2aebccc9d2f2c1de2539825b0d8317ea1d38eecb5e484e13ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The examples don\u0027t work on windows \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server_client/test/example/web_client_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09347c178089bff07fd9f07a58b7dc9f26b82dc8365de587075f87e6a8f1681"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The examples don\u0027t work on windows \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/frontend_server_client/test/example/vm_client_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"945c4c0e5fa1a193ec63609aaf642e5c3e4855d5f59df9c10c2f31c48a0cc5e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // - TODO: The *heapsnapshot format contains actual length but it gets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/heap_snapshot/lib/analysis.dart"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"42b6e8a30f745485dfa4476db7ac86b15ba6d1ef910b2666bc2bc7731caec54d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We should rather make the return type of \u0060instantiate\u0060 be what \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc33d8c6ac62c34824dd2719831849774964fd831e3ca0cf2b546d01426b9628"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Process immediate [InterpolatedNode]s, permitting splaying. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fe31d051dd1dc53710931c0faafbe85762b87cc5ef897dd62afc3caf9945b88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Avoid copying params if no interpolation or forced copying. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":739}}}],"partialFingerprints":{"codehealthFindingId/v1":"9acf63d2ef8d2c4917ee0c3183397f579f92ca6de0ca588bac923fef3b5f07f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Avoid copying params if no interpolation or forced copying. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7d9e7f9ddbacc7e0e419b90bf0cb3fe723037abcd53db72e422ffd5fde6aa85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): This will be different when parameters include destructuring \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"21f48c4091bb807aaee5d87485ad18b527fc6d185824e599152693b1ababff50"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Implement splicing? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/template.dart"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"39df70615be78b53b8c953768da9957df099fd9be4cd4c95ca2ad10fd3b11413"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The following is no longer true. Revert to \u0060=\u003E false;\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/printer.dart"},"region":{"startLine":1945}}}],"partialFingerprints":{"codehealthFindingId/v1":"d382c3dde2c574e1dba551125ec8b3491847e5b8207e1c2254eaf85349ec7e12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Should existing data be \u0027sticky\u0027 if we try to update with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":621}}}],"partialFingerprints":{"codehealthFindingId/v1":"415a9e521cc8fd3cf180bf3fb53885a8d73eeabc55e0c9f66133329e170d56cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Figure out why [Name] is a Declaration and Parameter, and where \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1454}}}],"partialFingerprints":{"codehealthFindingId/v1":"730d6d8051180f83d2dc95535bb07b4a0d8b18a90c50b7700e54c2ad3f1085f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Can [VariableInitialization] be a non-expression? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/lib/src/nodes.dart"},"region":{"startLine":1645}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9de407106c10f9550abc0d43256da53ff452998b61593893d6e1bea54bdfe37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: ES6 option: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/test/string_escape_test.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b1107d14e0878a3ede9d356520717439a43097c58d092158043141bf78944e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove \u0060replaceAll(...)\u0060 when dart2js behaves as the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_ast/test/printer_callback_test.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c8ecda8a7d0d370f519f2af65aca4bb094738e15958c08ef9b7ea4174ca2fb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): should we rename this variable to avoid confusion with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_runtime/lib/synced/embedded_names.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6b923f5643244511929d6d571fc6fa00085e9ea524f8bba3aeb4200c5882e7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): should we rename this variable to avoid confusion with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_runtime/lib/synced/embedded_names.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"65f6b9f26f7dbe4ff4f1960d75f97b5ed63499585312c7f2d9c854713973fa68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): should we rename this variable to avoid confusion with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/synced/embedded_names.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ec3735d913625f11e44b691812e1829fd2a3818fcb893269f550a13d319b3af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): should we rename this variable to avoid confusion with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/synced/embedded_names.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0a8386e492d1246886ccfb4d79e32d02c7995d64f8426a959729f224b32fa8d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51016): This might be moved to improve deferred loading. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_runtime/lib/synced/embedded_names.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"23124c4a177da54c7c79d2a57c0ebe98195bd3d79648af9d07151a67b1c8505d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51016): This might be moved to improve deferred loading. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/synced/embedded_names.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5bc1007febc98887ae9afa29ed4cc79b2996eb06b12383c03f4f68f8e3de417"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Make entries lower case (as in fields) and find a better name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/js_shared/lib/synced/embedded_names.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"21887e94e91e5c6889f96ad699b1d9c7fd36727c7f369250e2460b024a6f2708"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(herhut): Make entries lower case (as in fields) and find a better name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/synced/embedded_names.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe76dde50f50fb5d89c3155bd43b881c47f5119fa40a8d3e55e5e4c3aed2c2ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move these to [MemberReferenceVisitor]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/visitor.dart"},"region":{"startLine":1608}}}],"partialFingerprints":{"codehealthFindingId/v1":"34e560bcaa39dad70e07ca3687488658e302dd0cb937973bf500c48e6fc6d1f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move these to [MemberReferenceVisitor1]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/visitor.dart"},"region":{"startLine":1664}}}],"partialFingerprints":{"codehealthFindingId/v1":"c39dce4c109f6617cec115c737b3f8ac84681a5ebb1316ba722a65a48813c515"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Fix the compiler instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a29f1adc1833aa074d66cd414d1483f2f0bb8af9a5317fab58fcf0d40be91dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Let variables are not set up \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"34373ac61469fceb686fe28064feb5e1f2fd2aff727786668397caabcd5917be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Let variables are not set up \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"52951706070d30d697e907594726a1d8f425f8d8cd608d7c14f02f018b1ba276"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): This looks like an internal error. Should we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d6671eaed8a8f5ee5c4a026aa72634788157c510a86cee023519c4d98d8fc24"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Support new variable model. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6655e7f83f6dc3fe8446f7a1daea039cd439f886641d4c62767b2bc36a75255"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we add a flag on Field for having \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d623b7b91c7b0ea757e6ff795d6999790e912d4f482654fa1ae69140cc4a4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this invariant. Possibly by removing bodies \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"c93ee895442c2771a7fe426e4639e2bab58cade1127c454c78a8deadaa2fd1ce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this invariant. Possibly by removing bodies \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":1023}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c43aeda4e9d215e1be7df6f5fc6a1c0cb5c255c30761c98999ba36447360428"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can this be deleted now? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":1365}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa441b33acd5c8471ac2dcbc76c2c443c3e1b3e53b2a131940fd717e1a074ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Enable this check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":1733}}}],"partialFingerprints":{"codehealthFindingId/v1":"76311a2105ffb514241ee3c034d24c5003865c3ad2de0e6169068e35733c81b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge this with enter/exitParent. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":1825}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a91f1ee977fdfbb942f1134055803366788cd9d546a0d695a34cf3b74d2a8a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Investigate if these checks can be enabled: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":1951}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0f18cecd0e5bb52902b6e5eb513ab5e35c8bfe7259cc86f8989a160d2ee059a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Make sure the \u0027errors\u0027 are reported, then remove \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":2339}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b898cc3a0462a0b9b7d2a88cc733fcbdc26020baea47912c9c1ebad9b877144"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): I\u0027ll add more here in other CLs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":2366}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd41d92c3d15e57887d1e75215976aee54333d78ed54aa0e7493e0ec7ae88415"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":2433}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae968d9e8fdbca85f43fff8142a6dc961bb3e65e06a7fa542755b4f3d2f4181e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":768}}}],"partialFingerprints":{"codehealthFindingId/v1":"39bec98c14f5742bf32d674a3716b1356e8662ae74339c4eb185b1ae80827af3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1107}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8cd329ce65bbaf46efc3e2d02deea3f67acf938aa6de67781713db31c3da35d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1482}}}],"partialFingerprints":{"codehealthFindingId/v1":"c63706c4569b638bc5d03ce030012ca7d128d7e03b3164548aa40fbf3d22194d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1778}}}],"partialFingerprints":{"codehealthFindingId/v1":"f39d8e883176956bca70b851b7820023d7372fcd5f785b489cc3dc048a911985"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":2178}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4f91aa9ba41bbe0a5771f713d3131a9cd919aa882949c6e0df28972a78e2883"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":2537}}}],"partialFingerprints":{"codehealthFindingId/v1":"477fd5e587644a4efccf51af6fd833e99c46ca3f6d9a05ac6ff1c4876763c094"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/replacement_visitor.dart"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"d34b9c0fab2f4716c8910bbeb06c64483fcf45fa4b79275b054030e60554f773"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/non_null.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e428fa2e6dfa4d17671ed7e29079508ce3fb1223695411d18708997599fd8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/merge_visitor.dart"},"region":{"startLine":506}}}],"partialFingerprints":{"codehealthFindingId/v1":"a47baf2948e4e29452073e09bce43d17d3b7bc60c55038465e3b69b9bb9c4495"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/future_value_type.dart"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"6179aa356eadb561f42b31d61f905f50a5d1f291777e55723dccf420b03c96cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/find_type_visitor.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"aaf6bf28772d48bbfe2e651e62cd179a1ae31c5c795701e4c876c6e1ff960da1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/dart_type_equivalence.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be8dcba065413120b14650f2010a0d2c72f8777cf98efdf0711d683922e7286"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"3526afb4dc6721fd7b41b0e9646de3de71e2cef5696c0b93e1ea27332ecba98a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":1074}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f3655ab7a91a0515df8c942a6b034abe96b9ae8f2c4033ea683dd7efbe5c09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitFunctionTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":1215}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1201539a8e771d49a950c67db78a3418f7a2fb1aa3510eb68dcc92576860c0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/verifier.dart"},"region":{"startLine":2441}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2303da9f278cfc483b11b7de7d9ced04c9ed2bdad4872dedce462403171b47e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6924ca59109a1eb1cda0601e367510fc87ab79176c633a3a44c80815c3cac45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1115}}}],"partialFingerprints":{"codehealthFindingId/v1":"e498130e6925ea136573cbbd23ef63324535bcef70ffd807e6081aa07a66b371"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1490}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfdf691c4a4f124e363ace1376280d6126351b049bf1b2c8bfb4571bb8492d5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1786}}}],"partialFingerprints":{"codehealthFindingId/v1":"571dacf668b0213fdfc2a2cef5c278b7f6ef60cebdb905f56a8eb384e9b563cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":2186}}}],"partialFingerprints":{"codehealthFindingId/v1":"964ca5a95471ace4e23124469bcfc009f1dc832a60eaf29afc3ed011480291c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":2545}}}],"partialFingerprints":{"codehealthFindingId/v1":"85d3b31c202b569679dd8ae07e2efab519e3a7d0f9f23476ce8ac28a40dad4ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/replacement_visitor.dart"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"cea0563b0dba3ec42b4540f666eb414b2e288e52740256a80ff82cb05206aebf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/non_null.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"787cae16fa7cbae3f913b7bfd76133e301dcc74138489c9a16e4687d66d55185"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/merge_visitor.dart"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"1efb45590437d52d94f29b0f2f1ec766e58d72ca0b3638ae79c86cdf57e671e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/future_value_type.dart"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"41d431875cd219471eb91c0cad6cd32ff9f8d4b7e4a2071e03b808ab3b5a8e95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/find_type_visitor.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd262ac4c67af02556ae8ccd9fca3145fc664daa83fb0da22d94fc61517cd3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/dart_type_equivalence.dart"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"3209fc582352c370289bea2554b9d0229e8deb02adb3e61607013dfa897f3e70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":1086}}}],"partialFingerprints":{"codehealthFindingId/v1":"f28b4e52a42ca1bda65dae96f8c5f3990bece26214dc1c8683b65a3f951632ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitClassTypeParameterType. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":1226}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9c812e6ed846c1176582f90dbb424e3505a8f75eb667684f369f51e396d47ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need to recognize backend implementation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dce6923984eb9822548893939d986d0ac775b3d3ab5489c14dd03a9b25ebd3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Investigate if [expressionStaticType] can be of any \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"2886861fe94fe698949a76e19526a2f6c863e7034bb7a0a97ace5e33fe7d933f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Investigate if [expressionStaticType] can be of any \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d0922d3182770d8895e3e3aa4d28f54568039a7c3a5cb0d0e47160001124a13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Investigate if super-bounded types can appear as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8fc8169b3c5c180153afc8cad45df2911c2b511efa84591338440e40fa15bb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Investigate if [expressionStaticType] can be of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"0de6665d00cb792d4680cbe5e63fa90b8c36f118f32a71e5125d2df057545215"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Investigate if [expressionStaticType] can be of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":566}}}],"partialFingerprints":{"codehealthFindingId/v1":"e63f871cbce7f631bbb1a700b83d4d6d38bba4851de1910fa3b1c69eaff37b5f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Investigate if [expressionStaticType] can be of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_environment.dart"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b9d1122b4ac8ec5b65cf503687e2fb59c3dd20e5cd6331602fa8d99aa8f1ded"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement a type-safe encoding instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8022255aea6d881f9da84df6c5ed7d16ff90cb01edbc32614d6a81aa929046a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asgerf): Store interface targets on for-in loops or desugar them, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"08031a1204815a23b83679b0c0e7b5d7dd067fbedc1e6f19eb4a2cbceafd961c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Return Never as type for equals call on Never. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1395}}}],"partialFingerprints":{"codehealthFindingId/v1":"8284d142d3cd0bcf63de5f5ef54d3e828ea306d21fc0b8a46ab7096feb3ed9c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use embedded static type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1428}}}],"partialFingerprints":{"codehealthFindingId/v1":"7687b3f91420943d33c2bcd505a79b9cc30b2b07d360ee006637f3f4b481e35c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use embedded static type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1467}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c8dc2a9dfeb05027573b215ebd9922beda28b70fb2a0b7b755ee5bd5419689c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Return the correct result type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_checker.dart"},"region":{"startLine":1531}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bb653ee5f591cd3a368ddd8ecfaae655c400a30001c505298a8774ae56d6bb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Replace the following by an assert checking that the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"5577b25f4678560f63885d38cdd5dea90e1ff2bd464a7d4adb846112934f851d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asgerf): Investigate if it is more efficient to implement \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d554364d1ab2c2bef8f0a0df082e7739d3e302bbea86072a9386f873b6eac0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Throw on (unhandled) auxiliary type? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":942}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d414b8a50511aecc29dc3d4abb3d58f2d8964d5c15957517aee680e3e99344"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Throw on (unhandled) auxiliary type? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1293}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b84b4427a46633386b3883a1fefbf3086d3ef9f4b8e520c43afddccbe8efc1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Throw on (unhandled) auxiliary type? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/type_algebra.dart"},"region":{"startLine":1602}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab9448c73cce89ed452454ea3297ef470629be7c5caf556f10be49205e14860c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jensj): Should this class be renamed to make it more immediately \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/reference_from_index.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3838f4658041e3ad67b3d1a20dee4842ad429f2c8edcf11e2d05ac136f9ecc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vegorov) this only gets called for immediate overrides which leads \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/naive_type_checker.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"162fbfd3502f3c6454b8486915a2bfcf4663fdf8561b99167ed09cf7edb870a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: move to error reporting code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/naive_type_checker.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"e68b6fabb02ba640595374eccd3ecd6e379a956c11bc78773c4f357e0798c068"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Remove this when ExtensionType is in ast.dart. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/naive_type_checker.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"509dcbcb751a600856366e9c904dc5d440ce4e752bb936614bc46bf76d4886ef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Find a way to tell the weak mode from strong mode to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/naive_type_checker.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"41d5c17c05dbf0cc059509776824a8528b0ca4a33c0fd43ce86d830e7f84e6fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Constructors and methods/fields can have the same \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/library_index.dart"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd81ea2be89ac51ea2bba446b006b480759a487c10c9a0ef38a75cceef836fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Remove it when FutureOrType is fully supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/core_types.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"921f3ff9ca04b51a1ce59eb333e3d242347a4199b3e938ba00ed0ed04a71f59d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(regis): Replace \u0027withInvocation\u0027 with \u0027\u0027 after dart2js is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/core_types.dart"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e0bd526b8c77473d542d29ca6ad930325a669f7be700671a1ff78eded54b285"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Consider using computeBounds instead of DynamicType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/core_types.dart"},"region":{"startLine":1086}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ad43d27f20d3a1e8dd6a18c16e2f9094569c661b6958ffc8a4ddb0c75bbe451"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Consider using computeBounds instead of DynamicType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/core_types.dart"},"region":{"startLine":1096}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cbb09b9e1f11c50b1bea6993e74f229a0642e305dc2d7ddced20377abefc481"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Support [TypeVariable]s. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/clone.dart"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d7fc6d7c1d8637a74353528a261e174cc55c764336601255c4a4fb96228a4d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Throw instead when the CFE reports missing concrete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/clone.dart"},"region":{"startLine":1806}}}],"partialFingerprints":{"codehealthFindingId/v1":"66d26605c64d0e6674dd0bd568affae1690f7269c35a5d21ca9683e429f1027f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when an error is reported instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/clone.dart"},"region":{"startLine":1819}}}],"partialFingerprints":{"codehealthFindingId/v1":"59b65d3eefd54c7a4a478b83e109615dc39817b43b9ae9a4e44f66f0214052eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when an error is reported instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/clone.dart"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bc3fd8203841ca66a739a27f7e022c82e781d24a25a6da18c02d012f9e0456a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove this when an error is reported instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/clone.dart"},"region":{"startLine":1841}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eeb9971ed128377ee225019f4fdc6cab3ff7f91377f78aa7127a117552871cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve lookup performance. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b7c11b647ac8f8ff456bfe99a66caf33184f8b7c0e9a973e548326e5483f21f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve lookup performance. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"61e75e0e4bcb0d97f91adf7065c7e838f06e448ea8ff16ac6c7c644bc4da86d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support class hierarchy changes directly. Currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b7556bdce9f1ddf8810fb344ffc258cbf684b315f4b43970434fb8e310ceade"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This is necessary because [getClassAsInstanceOf] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/class_hierarchy.dart"},"region":{"startLine":1144}}}],"partialFingerprints":{"codehealthFindingId/v1":"7208f9b321744f1e7bddb3c53ad8c6c7595123cd1ab3a7bab1eae1ee7b7f7dce"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): To support replacement of fields with getters and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/canonical_name.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"44359c28615dafb715a709849fe71195cccfbfce609426cb3eb02a7079b0dda1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Get rid of this. This is only needed because pkg:vm does \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/canonical_name.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f3b5cd1cdf13d1475f7a22a4d47008d1556488fa4d6c787e61f05480d96cc89"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This wrongfully skips checking of variable \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/canonical_name.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"cafcf00cc2d4df624e2795df78baae5eb285f87a99b88194a30207870ec13108"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: There\u0027s space for another special here (248, 0b11111000) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/tag.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5867acd1d524e3ad79f4c57aea5ced95490728695eeafa03f150315040b6da4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Set main method, combine sources etc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/multi_binary_loader.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"b72d85f3c0fb79e9b5aca79e7978249af17b062f391b4739fb576a931fd533ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Should this be optional? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/multi_binary_loader.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"156b26aa853bcc56a43347de6492b0f37af5227aef12fe28cf6606f6cf3dd779"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(63494): Remove the cast when function type variables are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc5e67e5bcfd299ad77227f0d6c27f9829d6c4722717d3b75615e4b24819c01f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Delta-encoding. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccde88441ba965d18f1090c440b5dda7246b0a6a9d11a8d40196c67448f1a026"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider a more compressed format for private names within the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":1138}}}],"partialFingerprints":{"codehealthFindingId/v1":"f024abd84b18c942c01867abfcc7354d237c0ef7a823d3d9e6ea054e09e3f028"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(63493): Don\u0027t serialize \u0060thisVariable\u0060 separately when the scopes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":1545}}}],"partialFingerprints":{"codehealthFindingId/v1":"db0589d25800ed950637a24b8805711452c4d9c2d4376bd292989adbb1a048ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(63493): Don\u0027t serialize \u0060thisVariable\u0060 separately when the scopes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":1618}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fea923e725128e67c2f538f0e92acf1d19b7f0c39e1a6eee2ba9524831ea60e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Pick a better format for big int literals. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":2134}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfc2471b3c2a0801b327fba3c4045fc69924c3084d34cef66081102debaf3023"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Eventually remove the annotations from the binary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":2879}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f499682d69aaddd509d9eb0275389ae504af2658e69632e0075786429ad906f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Eventually remove the annotations from the binary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":4511}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea7da14059caf5deb9d23227c9cea2f87d8cb768e0d6f676d752fc0c54e090a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/28316): Remove this wrapper class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_to_binary.dart"},"region":{"startLine":3934}}}],"partialFingerprints":{"codehealthFindingId/v1":"af24ad7ab5bbaf881a5c37020aafe08b34311dc206e478a8875015a26cb6d13c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): reverse metadata mappings and read forwards \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d2558a76a4330bdd9cee6ccb67c01f379d621705b1af36c2d40b5621592e2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Find out what the right thing to do is --- it probably \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":1138}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3a354c8b2282633017b47dab36e611fd4c4917b89a84e98bb0d77c3b0ac1403"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): We currently save (almost the same) uri twice. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":1327}}}],"partialFingerprints":{"codehealthFindingId/v1":"e13c90b5f885b9159dae9d145a3c574085e9886082cfc93828f0b3fc7f6ff2b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(63493): Remove the next line when the scopes are serialized before \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":1920}}}],"partialFingerprints":{"codehealthFindingId/v1":"7689869fef9aea06da0ae2bacbf8de479661578202879d251b0d998ae866d066"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(63493): Remove the next line when the scopes are serialized before \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":2188}}}],"partialFingerprints":{"codehealthFindingId/v1":"f380d8d52777537537ff60bf29c747ea5f6054529e486e8f7d20153ad5c08875"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change this to use \u0060readDartType\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/binary/ast_from_binary.dart"},"region":{"startLine":2972}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fba4b00d618975ce2384a7ccd2bdad00e2264fa434b5b6bbe0668196cf330e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Ensure complete handling of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/types.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"deb05fbcaab15e2878b1fcde3c80a4e8b5c844f679eb4f845a2c49a5b3e156a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Uncomment the following when the inference is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/types.dart"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec3d804d6133807e6d4fb2deddc1acc7aadd3cf7fceba0ba0cc68ca85bb8179d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Uncomment the following when the inference is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/types.dart"},"region":{"startLine":649}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfbba5381993082517824874065257f19590255d410e7244e94a3ba8c6dfe399"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Move this computation to [ClassHierarchyBase] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"dabbbfe45eedb977f7c384003e7db90de4479d5e5fc56dc8ea44beb142755ec4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle non-extension type supertypes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":991}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ccdba6a125eae38ef92113f1018415ae91eed076342800bf7c336a2f38b63ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle non-extension type supertypes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":1020}}}],"partialFingerprints":{"codehealthFindingId/v1":"202dac4058271c65952d6200e6a9d05acb6621db7b7d9ed51c79a8744335bed7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Figure out if a procedure for syntactic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":1170}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3f141e652c6085fe1f191b64d1a3fb5768340fab7ccce484d3f6541610ca7aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Figure out if a procedure for syntactic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/standard_bounds.dart"},"region":{"startLine":1438}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f0c8f2a6db9f61c7f92e1372dad59381c50f4969c752d681d9efa9839855a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Bounds should not be null, even in case of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/replacement_visitor.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"b367b2eda1ad9b83a4412b17b320368787d1dd1a9f6e43d36cca8b20c177d433"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use [DartTypeVisitor1AuxiliaryFunction] to handle \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/replacement_visitor.dart"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"bae301ccf4a7aa4328ac927492cbc7ae663183c8017df06f3297c44ac5ec6df7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should return \u0060null\u0060 if [typeArgument] is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/norm.dart"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ab8f66ef56ac8c2824dfa2cd196afa991fec57a69b373e83abcb96bde5d6e97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"f667c20be9563037b11fefb2b23d6672e74247c4044e230f22151e29fc87fe6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"a92978e81a209b585d0c66cb6caab66591c2bec8b04867b7279959313b981c92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"0283a951d207b62722423796f56d798866fb644da2779d2dd69bd33e08999728"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":570}}}],"partialFingerprints":{"codehealthFindingId/v1":"f58a9bf7eb8a2dcc1f48cec4d521ea8fc743bc168761898e5754f9a85b0edb77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"303d2e01f275189045259998d0aea54613d79f8ea5d5b6488e286dbe62ee3164"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"821ddfe7a2dee7fd351e3e3ef8f10136bd30e507dfee5d4ebc87f0e8e81a71d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":662}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1937783894ef679852eca1eae78064e51145ab96ca332ca4fe191108aff90d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd386f3dd27d5cdc5318178b73221b3a7f5643703d2d071ffcedde097d7f529d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"8099736c31fbf78e2efe253476683a9e8d78c1001cd396de189749139e49fd2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":751}}}],"partialFingerprints":{"codehealthFindingId/v1":"9df7b65b555a84905e5159be73cf69841bbf31488e9656d3f70b31d455273d36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":765}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcb9198c016f8c9ec8243f885b79049fe9693c5aa2ecdfadd883fbdd921a2c3c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add requirements when/where needed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":784}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a640de1d08ad61dfb7b241533d6c000705d43a8f511321715e45b0caefbe23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add the type parameter to a context; class, method \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8f1d711c393b5574676e068d39ee214932190859703ff21c99cce88ccd9b4a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add the type parameter to a context, that is, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"478813470abb1e3e0a3a5b5af962c7d7cc15c479e14156195acf33051d35098f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":1257}}}],"partialFingerprints":{"codehealthFindingId/v1":"7faa73290b2663b3e37e5f27cd44d7031cf079210634c96edb6aa5e02d6f0253"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":2134}}}],"partialFingerprints":{"codehealthFindingId/v1":"517a397cf29f5d0c43eb207aa0ec4e0cf267ab494e46001f21520acb315a4835"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":2305}}}],"partialFingerprints":{"codehealthFindingId/v1":"befb5f9a8bbbc19802c354d4493869b2e6c58813b18c7aaad41e3db13df6d169"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":2339}}}],"partialFingerprints":{"codehealthFindingId/v1":"8122642e898a436648f0f560a38c0955cf9c4a053f027be3960742566be2918b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":2384}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6bf5cdbf207d0462e317a7f76178379873272d1ab5ab2d6f83463c3693cdd4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":2410}}}],"partialFingerprints":{"codehealthFindingId/v1":"477ff2e3a20d232cfb617af849965a0cc612f1862ddcc41c3e1f3192dcd876c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":2425}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb1efc1c2f96bf174e89030960fcac7954019071d4b6af66aada02cd92d312e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Create non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":1905}}}],"partialFingerprints":{"codehealthFindingId/v1":"6432d771dcfae6b8302137e1e14dfee649e81a0d0d8b8e394965d83f2d667459"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Create non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":1925}}}],"partialFingerprints":{"codehealthFindingId/v1":"543940fcb78c590c1435926de213eafe48bcb12d804c35a76a1b2a6d0d949514"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Create non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":1959}}}],"partialFingerprints":{"codehealthFindingId/v1":"444dfcd69011122773cb7d48bb4c77d1b3b041f4345bfe7751427cbff63b7674"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Create non-trivial cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":1914}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4a6997cebed21529724faaab00b2d5377b3c5bc8db3b88551c5950f63e5d123"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add more cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":2372}}}],"partialFingerprints":{"codehealthFindingId/v1":"b922129b4ae097bafc152b02caeabd8fc678268260fe76f9107bd5bcae64433f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Do we need to use a valid part uri? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/node_creator.dart"},"region":{"startLine":2385}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4248523fa438b1d87185ecb39f929a223b318e187d150d6eab48cfbe34d2c7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement also equateBottomTypes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/dart_type_equivalence.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad49eae01df446e6962c404289a35e2be9d7a88fe50d5e646f186bf64ec94db7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Should we have an occurrence visitor for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fc82e48910408fcd7922ec30c2180e5d1080e43ff9d547acf1ff0e31c7f9a6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we check this even when generic functions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b8b3dc5956dbd79adc00cafdb21c16869184501753335665b408889ca0a9ed8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Consider recognizing this case with a flag on the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd7ac4ab15dec8ec9f9ea9ecd72b131077e39db9995ebe34c2579facc9cc52a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement this method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/bounds_checks.dart"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"e77052b8dc749f1914dbb041facafde1e8de52666435a90bca3f15b395c4e2dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Is this method needed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/assumptions.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92894be34ad3d1212a61009b988ba07dfa9881f6982427464bc2c8eb5b8395d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Is this method needed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/assumptions.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"59d1c853968be10ad2600b9787289374efee67aff4a10bf870cb5f3d9a3c417b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"c71c910a461e9b16ffdc04ff54b82a04b62792d516b93afa2090330242695f5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(62620): Conforming to [VariableDeclaration] interface. Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1723}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e658c805e37804cdb9506e2ee193cbb399f395583fd817a620d85b23970f5af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(62620): Conforming to [VariableDeclaration] interface. Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1729}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a5da088376bf6f6d418f948e9b2d3733d7d4e225d47ecd714bfae85641eee3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(62620): Conforming to [VariableDeclaration] interface. Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1833}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a848542d9b2ed72ae5f063ddb12a3fd5b3fa44bd8c6101fa6f4628ecf67d2b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(62620): Conforming to [VariableDeclaration] interface. Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1839}}}],"partialFingerprints":{"codehealthFindingId/v1":"4625bd85d363075e1c1b4e978bbdb8708965377840b44eb64a95ca73713604ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Consider a throwing implementation instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1914}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff4e5c9af8e44012a94878d5cccd8e8b77e98ac39944514180e5005aa4de692f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Consider a throwing implementation instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":1926}}}],"partialFingerprints":{"codehealthFindingId/v1":"08cd6b0a15dc158f9806164ed19556107236928de5168854dd46dc0c8b2bcbbb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Consider a throwing implementation instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":2122}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a3b456210f315d366fa486e9aab8bce3f9fe4bb64acdbed410238fad5cbb7cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Consider a throwing implementation instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":2154}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ae59a5ebb1ebc9a1e501cccac9cb3acd75890ade3cb8058f9ebc90db2a49487"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Remove the ability for [SyntheticVariable]s to not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":2140}}}],"partialFingerprints":{"codehealthFindingId/v1":"86d59c1973bed9e548c5149971c954223f5c8672a66adf82f263426181b80fb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should [SyntheticVariable]s be able to be late? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":2273}}}],"partialFingerprints":{"codehealthFindingId/v1":"f41d5b8b4fd574118d7ed992e12c6029d390e1f89f9d2d74a03f6c8099b16275"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): VariableDeclaration should own the initializer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/variables.dart"},"region":{"startLine":2471}}}],"partialFingerprints":{"codehealthFindingId/v1":"abc0e30408f7e2612074939a022ebd6a6508ca8985f69f5ee3a24d7cf57800a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this non-nullable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"8958572724420a14b7fd0d2f03e2523a404ea52c97301ef922ffdbbb4a2bbedd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this non-nullable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"68955d632c0c0bdcf9ace8667c1479a4d62d94b9694a33cef42021f8e8b5db9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this non-nullable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/typedefs.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa1f01000b273d213e51c170ed180f7dc1b4fc83fad08cb4d2396904b75562d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this non-nullable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/misc.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fede3253529bbb512cf6bfe1d4262585e652f718bf62abad6822dac30227a0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Store the declaration directly when [parent] is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"8550f808e8b2d8e9242510534371814d7c89c93bc2ac45ed03502eff78f0326e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Use the actual algorithm for structural equality. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d1db2e158e0e86498864284c6e21ed9c5763e00328ef0f7b09228343bdda116"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Replace with uniteNullabilities(declaredNullability, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":1611}}}],"partialFingerprints":{"codehealthFindingId/v1":"d651a1ed77a60c29516f89bdc0a614677848aeb6f9ae90f7a20c0ccee6ae237e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Also assert that [rhs] is a subtype of [lhs.bound]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2051}}}],"partialFingerprints":{"codehealthFindingId/v1":"053dcf221620fad486f957bc3f1bb43ca63b591c3825ec8a5a2a7165de9e368c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement accept. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2713}}}],"partialFingerprints":{"codehealthFindingId/v1":"e060ef3ac3d57d4dfd7ec266e69a306edb95b54e75e6132c2a73be4a747e4e29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement accept. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2771}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa9255718fc027666d84279283576413fa29ad9fdb8e08b3c209ab852642eea2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement accept1. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2719}}}],"partialFingerprints":{"codehealthFindingId/v1":"108697fcac3aa4a3a101a89844360a7919b984bf2fef96d691f7ce8b9e193105"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement accept1. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2777}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4412784b935ee0b6aa53b9608b9309b834ba5abecf66690952773962a65a517"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement transformChildren. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2725}}}],"partialFingerprints":{"codehealthFindingId/v1":"a10449ee19245ea2469e634bf9357fd5d936f34200384a989a9a5e4e115911cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement transformOrRemoveChildren. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2730}}}],"partialFingerprints":{"codehealthFindingId/v1":"27948dae1d0106a552e06f0a3f2b58293f5c8c125ae9415a10a55ccd492b04f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitChildren. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2735}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbacb5bd335300ee9deaf58e651856d5fea534ad3899218772e71780158c6ade"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement visitChildren. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2801}}}],"partialFingerprints":{"codehealthFindingId/v1":"873b13699e3714dc6a118a8c21337f2a8815220d232fa0251398a1366bcb2c42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement equals. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2783}}}],"partialFingerprints":{"codehealthFindingId/v1":"617a2dbae723c65f9c90163c04cf31a96b144f8146cdf8fd33a843568929f526"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement hasNonObjectMemberAccess. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2788}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcabbe63e72672b0e314f3cde6329f4446a313053ec4ab05301b432bab4d78ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement nonTypeParameterBound. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2792}}}],"partialFingerprints":{"codehealthFindingId/v1":"c74bd23469a7e3d552d30361e5f8479200abef865c87a6a71e28b70299453309"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement nullability. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2796}}}],"partialFingerprints":{"codehealthFindingId/v1":"d92f34b886b171887f100fd6e44d5e0ce870fe6ad9aedb8e4bf7eb150aa49161"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Implement withDeclaredNullability. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2806}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc8bee604d85607d81be632e05086c129459c48adee3b5539afb15cfa9cad266"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement equals \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2844}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cbf07fcec3fec249a3a38a1ca98cd442e2deff694f76d5d83473af289ae2a1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement hasNonObjectMemberAccess \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2849}}}],"partialFingerprints":{"codehealthFindingId/v1":"79f41e8fa3f2f7be76438096b64d1eac9b0ad119c33364df51497355a0c65063"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement nonTypeParameterBound \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2853}}}],"partialFingerprints":{"codehealthFindingId/v1":"faa7a2edd23d0e3cb5e90893e4f7d5c79a846a28dcfa8d466a43a7950889165b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement nullability \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2857}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1f53454c220f4394d9472f9c70c231e25f3c2b0070162b80ca3cfa7cdf6bed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement visitChildren \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2862}}}],"partialFingerprints":{"codehealthFindingId/v1":"04a71a348606aaec62c2f49c8e25be0b18cb3eab51e423f54332d39774e7ea71"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement withDeclaredNullability \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/types.dart"},"region":{"startLine":2867}}}],"partialFingerprints":{"codehealthFindingId/v1":"50d263e4613bc2a6f9d7b4c29fe0ff082fcad987ce00486fe9dab55ab3a24d95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Fix this so set value is not lost. We include this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4389f6bbc610ddca0f7005b9720956a0a9b6b7a74f665d7b8866a64d9294e25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(61572): Remove this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":544}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6c13260e9e5f8d639ac28bfe45ba3f77022503f7fa85de2a4d37aae4071e38e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Update this to use the type of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1db97d4ce1177f2c9e3d53152d242f64b185b10202ce8838f0aa520c598ced0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Change this to an assert once the CFE correctly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/statements.dart"},"region":{"startLine":763}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff937c2507fa78e364c6f257e403e013c7bc67f952c98b79a386ae024acc0cc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Handle this through serialization. Currently this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1814}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de2c1caa2d0339bebbed0e30b17862d406d47810c423585846560d60f28d685"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Make this a list of [ContinueSwitchStatement]s. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1817}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e8b9821e1952266f455221e68d8c136c72889a4111e4f68844894631979b8ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Serialize this field. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1830}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9f5d00a4cbafab94a5a64ee2e80ef8319604493734c8b7552ac1e03f504a7e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Serialize this field. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1833}}}],"partialFingerprints":{"codehealthFindingId/v1":"502ca203663ab7908304377494e1469697776525eb788101124ca16c2fdcb043"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Serialize this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1942}}}],"partialFingerprints":{"codehealthFindingId/v1":"7884ef73fc1a4d5afc613bf4a8f6036a548758b705d0e46bc313827c9b9664dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Establish this, even for erroneous cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/patterns.dart"},"region":{"startLine":1970}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb622749b76ff4a20b1b9efba2b813b4c74df291273dfd186ddeae000851c756"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // DESIGN TODO: Should we visit the library as a library reference? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/names.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5081d3861fd55212e4d81ec55368f20d25f666dea757e97ff97158d9cc93af8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Factor in [libraryReference] in a non-deterministic \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/names.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca7d1eb463e3dd6e8ff7401673cc53dec3ee57d725527a38b61944ca57a63e3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This should always be final. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/misc.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5e92466b1b4a8af584b5abb6a821a6929d11a1899a52a968b4fc7a7969c4a95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we use \u0060InvalidType\u0060 for the undefined cases? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/members.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd4ca7b1738624596824edc7fb500544e5d2dd7933faa395125e0b78bef67bd6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we use \u0060InvalidType\u0060 for the undefined cases? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/members.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a6d3aff3d5512d415baad25332febc9d9509e166ca1203a5ebf883b27e123b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Provide the tear off type here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/members.dart"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"a368321805a62f6932cc4d6ad71f0d4ad70636b91e84eb1b8c019a2f942da233"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The frontend should check that all final fields are initialized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5003a3fe37d364e2d3d924a97325039b9acd4f40c31008379429db4d7fcbd53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The frontend should check that there is no more than one super call. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb658c2a8b092c01d8aaff1fc99686801b2798a1d77cb7e624508def290879c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // DESIGN TODO: Consider if the frontend should insert type arguments derived \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"758cfb124a9a46f61131789e5d770a4c200dbbb642cf8d30d2a557a83909f501"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: The frontend should check that this is the only initializer and if the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/initializers.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebb7e31c2fb1e86c82f74c4867fb9159de92405e75a459951aff7871ee93c955"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jensj): Should it be called NotSetter instead of Getter? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/helpers.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5808bebb1fe285ce436c26a7e6892ece240a702d22dda312e495a0e59f0f4a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Replace with \u0027\u003E\u003E\u003E\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/helpers.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"08290f32b3f5b3b0cd0f81b3e8aadf16a78bce8a15ccc3916349b3a37769758d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Cache the function type here and use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/functions.dart"},"region":{"startLine":156}}}],"partialFingerprints":{"codehealthFindingId/v1":"efeaf970c5730b631589e16738d67420ac2e753b54205d42340c9834977bd574"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther,cstefantsova): Merge it with [computeThisFunctionType]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/functions.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"71162bcbd5f87a10e6d051128c07f561dacbd40de71d3dff7b9800cbc046310e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Uncomment the following. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/functions.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"c92c9e04d850606a2e23c4fa9e69c1bc4f0a7df80f79a43943e0e9e7da9f0c8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Uncomment the following. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/functions.dart"},"region":{"startLine":275}}}],"partialFingerprints":{"codehealthFindingId/v1":"57c5f31e735293dec4aee7fd3eebf42c9e3e47dcf09ef01b9843fade8d828406"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we pull this from the [interfaceTarget] instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0705ff6783a326d1d1fa5111e920f9717be906a3f3917e7588a9a502bfb9150"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we pull this from the [interfaceTarget] instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c3c2f142fca8e338461a378eacadd36dfbb4b2c691aef4d5cfc5fe850220ba7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we pull this from the [interfaceTarget] instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":898}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ca6c4fc8e020f6f20998b17a4b2f121141671c32b67dbc3ced2efa6f25a736d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Can we pull this from the [interfaceTarget] instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":1857}}}],"partialFingerprints":{"codehealthFindingId/v1":"54fdd1086500cd153a67011ba4d9a08ffe92fb4c18afa43ef645d2f2da2bbaac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // DESIGN TODO: Should we pass type arguments in a separate field \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2910}}}],"partialFingerprints":{"codehealthFindingId/v1":"542ca42862fef5bf18c599eebac2780dd8838ebdbe9cdb355cff18315cc49fd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Change the getter into a method that accepts a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2986}}}],"partialFingerprints":{"codehealthFindingId/v1":"463df44dc30e1769dd22f9fb8c6710c6c15bdc693589f774ea17de69b04df1ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Get raw type from a CoreTypes object if arguments is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/expressions.dart"},"region":{"startLine":2990}}}],"partialFingerprints":{"codehealthFindingId/v1":"8986357b3b77e8906352e6c0417dcdfb1a02f8fe1f3ed71f87674a75782f425b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jensj): Get rid of this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/components.dart"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"7907903b83e1cc2e2f5a230ed278a82caf153bac9d25c9609eac376341c72787"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support [VariableDeclaration]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/src/ast/components.dart"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c943b846219c30dcf4b9ecb69994f1a2f38364adca633e34c6ed7beb20aac7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Update the comment when the feature is no longer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e99712a90c81ef3a82a4ae2ae04cd221089ebe6c8b278771f10f6bfcfb0d78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Consider how to generally pass compiler options to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"81f7403da4f75dbf1cb25a386dd543e351c90da827d3682aca849eeffa0b8b92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Consider how to generally pass compiler options to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"6951250654630bb4b817ea8198a3725c2b90ec6ff2e7d40ba1197a3c9bcab665"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should this vary with the use case? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/target/targets.dart"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fc791f455ad31f43e1b8486124df39c9a26a8a24a852c2d2022b651beb18238"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support these cases correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e947188610904c14bb5bce2fd1b6a84490e6223ce88b086b3900b6139669980"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should we store the result type in the node? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/text/ast_to_text.dart"},"region":{"startLine":2441}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca0a9e6e1b5d362e7e599b3a8245b942ea302a287eff141cb2159a70424b1289"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): find a solution that supports optional positional parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea60ca4c6e98269b0b978f03f665ed76f730d9d2cc75bc17bc60d0b5636e91c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakemac): We don\u0027t apply the transformation to dependencies kernel \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"992f95e99684f525430fd61c5f1030e306a4aeb3c25347884eee87a21a6d7369"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/63225): Remove this once Flutter is migrated"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"32fdbaed17878748d4765223d68fc962c872f5ed4d90ed8b3ee8f8887f5088ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Require the [_widgetFactoryClass] once the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"e412b11aa692500ab74b1064ba3c860a1855019ee31f8b4ff9d7e5f85e48d6e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): add an assert verifying the locationField is not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"aafd27cf4916560ebc47879d306e4ad3ded2b2ef8a76d9ca7c04a17a396f853b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Cache results. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"27bc084e60b71e6f12695f2fe5346f0cad4699d4bb7c6b381752ba7101a3eead"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Test for subtype rather than subclass. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"c72772d56015d2b6645ea44fec80ec88bca9204ecde354b881072838b8ea2fa9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): is this case actually hit? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4c422beb800511a943c81679cf03086938fd76ca499b2f1c063bef3837c5f68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): We should have a lint for unsupported use of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/lib/transformations/track_widget_constructor_locations.dart"},"region":{"startLine":887}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed42d6af7e87a6c0c739644da7d784a555e1714888d7260bc01730c542e501b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Use the following test case instead when FutureOr can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/norm_test.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"3181a70221eb02e4406bf5b9c18aaf8e93989a12eac32c6b4baa2321ec085403"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Use the following test case instead when FutureOr can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/norm_test.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3dce45b8d16c6f2c5eed4cba311e98743069dddb7eae995f28d6bc336ddedaa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): The following test cases should be removed when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/norm_test.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"79ded4da27565afedc7dd55c5b0fb1e4a2eeaf4da8d9fe7f3e13ebde2424e2e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve message for inequivalent references with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/equivalence_test.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c5394c85e01a5baa509843baa31d9de0c60d8f052582a4a14560cbbaf856b75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Improve message for inequivalent references with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/equivalence_test.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"737104ca7e0f8addf151aeec14bcfa9e832163932a9a949a0e4b5b5972c49bcd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Add a test for cloning in context. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/clone_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"045a6f89f8ca9f83dacf65092cbef485d6a9509b9dbb36bc91df9697cf9553a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Remove special-casing of [VariableKind.ThisVariable] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/clone_test.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e3c96b2eea43eb42f5e3f5cbf066afa82447dcf8c2049224df7b1fb58126cb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Remove special-casing of [VariableKind.ThisVariable] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/clone_test.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"d277ecdbb5980c91ddaf87e63a8a9c078bef8326e73e31f369d0cf181a979977"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cstefantsova): Remove special-casing of [VariableKind.ThisVariable] \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/clone_test.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"938b6dbe51fd29e17d3fc1f97a57167e82a891c5e290cfd9e547cfdec14f298d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This doesn\u0027t work for the [BasicClassHierarchy]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/class_hierarchy_membench.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"709149d045252de38298c7d0d24849a1bcfa13cef15dd633ede89a6561e2fe4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This doesn\u0027t work for the [BasicClassHierarchy]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/kernel/test/class_hierarchy_bench.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"63864b58d3a0c38cb7de2e83feb5554b89314976353cbe352980f3436229e069"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom: Figure out why the formatter is doing that. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/language_versioning_2_12_test/test/lib_im2.12_test.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"077a7f597dc52f9b4696bb31988959653ca5e9b6a6b1f56529f80fbda48d3ab3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Handle [AwaitExpression], [BinaryExpression], \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/extensions.dart"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e764cc177388c6dd83fb4bf3ffdbdd765a16e7350e5f09f5eefdf9d4b6d0d9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): consider using the same method from the analyzer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/extensions.dart"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdd9a11e2e34323ed9264a5e28ffdbb8e8019738d94e06c71105874d0b49b275"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): remove when \u0060name3\u0060 consistently does not include a trailing \u0060=\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/extensions.dart"},"region":{"startLine":750}}}],"partialFingerprints":{"codehealthFindingId/v1":"2580ede9212434ad36d68a1026ae281b194a39a2b6bc9361651815c256c4c55c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jakemac): move into WorkspacePackage \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/ast.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd79d9c9794a01cbe7aac65baa15ed9c076a2942561be1c9a4918e4341a52a1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consolidate logic shared w/ server \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_super_parameters.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"105bc7bec8c5e8299dda3f029ea467c18974eed91090e579195c76ee9407b759"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Checking the cache in every visit method could improve \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4ff7a15fc9fb0e7d7dd42091c143e5a9d4bf5db2b0073440c71added7f1d175"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Handle when \u0060reference\u0060 is in one of the statements. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"528a85f17fa20321a083e4177dd210c5fd6330461193940c73e7787ce4f384eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Check for definite exits in the members. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"51c246ef1e794a8cee2e7662d7b0fa34e2adba609d7781c7e2cc9362511d2fec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): if the condition is a mounted guard and \u0060reference\u0060 is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"a09977c8cccd6d7e1e278088b220203e6be956b9a60f7a5666f9b27e58c47e4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Make ExitDetector 100% functional for our needs. The \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":1382}}}],"partialFingerprints":{"codehealthFindingId/v1":"51bfeb301b8a3093fa9596c186297fec932abd6716ed7fd7b19df2455e422555"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Make ExitDetector 100% functional for our needs. The \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/use_build_context_synchronously.dart"},"region":{"startLine":1449}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddf9fc7fca732ae4b17349d9ea11fe125c84042eb2d3bb8ff5aac753ddb4b6fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): add tests that ensure this predicate works with fixnum \u003E= 1.1.0-dev \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unrelated_type_equality_checks.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"b36c473a4b1b0cfb3c58d37a7bb15db924b49ac654a148690b3b3719d163f27c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Handle fields declared here, except in extension type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unreachable_from_main.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aa003d5d68d1aafbd2b5a077094f7321da2b13bb39ebc49979b5532c70558ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Move this to analyzer when other uses are found. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unreachable_from_main.dart"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"5af228ad9dff981d321894703c661e4cc934e16abe538c583b03568e014158cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider checking for assignability \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_lambdas.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ff14bb1759db819d13a913bc208b8e30d9844a25f922b66f24601be6abc33f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): [element model] this preserves existing v1 semantics but looks fishy \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/unnecessary_lambdas.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7a35ede14e7478ce63d315c8661f2f981d4a8e25560dd796144bcdc00be5b7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(devoncarew): Longer term, this lint could benefit from being more aware \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/public_member_api_docs.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c35345b46160c8f81b04716847caf50cd6d39309af3f1dd6e70cb304a611255"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): update this to be called from the parent (like with visitMembers) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/public_member_api_docs.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"621e53dfbe4f8f4ab1d84a04ccf945184f13ded04423ead6d4c0143bfb2f6b93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): add support for Set literals and Map literals. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_spread_collections.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ccf683c2db02f7950291ea6cce4b5db182126e0abd755ccb138333310b0926"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): \u0060context.package.contains(source)\u0060 should work (but does \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_relative_imports.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"023a807844f5f5bff230800002510aa9e5955e52a819dc34bc274be591d7cf87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Both \u0060alwaysFalse\u0060 and \u0060alwaysTrue\u0060 should be warnings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_is_empty.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9d850536f4c13d731428c715c10dc97f24026090a2fe88cff6baff3e2356158"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Both \u0060alwaysFalse\u0060 and \u0060alwaysTrue\u0060 should be warnings \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_contains.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9443d3c3ebbd58459ff5199909e0656ffad4ce921a88ec7a678fe54b3dfb1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): not evaluating constants deliberately but we *should*. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_is_empty.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"6977bf12d0a3935d3330b8d9d88f720f0cc785610a2202e3a4d7c3dce704a0c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider sharing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_is_empty.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0b13d5daab86d4ef8861902f2494912e91a77104d4349a17999358c06e7bb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider extending to handle set literals. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_inlined_adds.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d03ef37dd2b997a430c46a52e2854fb537e1a4156558f7bfee0501fd9791bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Handle declaring parameters for primary constructors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_initializing_formals.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d34b45e33d4549f14038f466d7aa4af6b996799a875c49858e80381b3a86abd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Handle named arguments anywhere. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_for_elements_to_map_fromIterable.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffe4650082277d27328815281baeccd1f97b093f1411447c42c1f3ad970225c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): We could look at the constructors once and store a set \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_final_fields.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a5ec5d41361c3c93fd5e49246b7a94e224f07963e9321c0c265a0d13c283fc0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This assignment overrides existing \u0060found\u0060 values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_constructors_over_static_methods.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a25dddf65d7c66460d59b6ed257e683cb86182c1358c375a1faac36296c9c106"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider making this a utility and sharing w/ \u0060avoid_equals_and_hash_code_on_mutable_classes\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/prefer_const_literals_to_create_immutables.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"66e3da7c3c4007da8f97f5ba8b93a310fc42e83aea277fb4744aef310ba16a77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkeson): This would benefit from having a context message \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/no_duplicate_case_values.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"02fe21fbc7973e3f9c301d9669fead3ce22837a031af5da5376035d99dd2e18b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We shouldn\u0027t ignore generics when doing an \u0060is\u0060 check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"8013f2ec00cf55d55b9c0b505acb247bdcc0b681b1993c89c22e5d8cf601c364"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove this cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f3d507a1c592a1541517466f7bb1f40bccea5de2b3b7b6bf6cc98a905d7a505"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(scheglov): remove this cast \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/invalid_runtime_check_with_js_interop_types.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"b416d2e66dde280832606a98df6ca9a2c2d0e9cc11b6ad809828e6d773129ef2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): update to add specific messages w/ specific corrections \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/invalid_case_patterns.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"e146da8f47042c315bab5b56c61043377ff8a611e9fcf2e6dcc89dcac4c5f328"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): update description as scope increases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/erase_dart_type_extension_types.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1d1b29577e6a0163d096c6caf098842b200a8882988a71d3ac1d16e1517e94c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Skip over code blocks, made available via \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/comment_references.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"acd7a2f3758105d7f9b2c8f6eec900e838aa8c980c994006a828ad89338f03b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Refactor this lint, (https://github.com/dart-lang/linter/issues/3240)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/cascade_invocations.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"994ab71b6b435e0312a489dc9e94512dee77c3987db7671aafb28ca8da827cf1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Refactor this lint, (https://github.com/dart-lang/linter/issues/3240)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/cascade_invocations.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"3624c039f6ee2efff2b6d4632fd36dad64722a3b74c630ef82757347a83b7add"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider making a utility and sharing w/ \u0060prefer_relative_imports\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_web_libraries_in_flutter.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"aefe4766b82f3e74bf21d73c9582fd91b06b987d48cd92ac06966896bdf87d83"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider visiting mixin declarations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_setters_without_getters.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"59498b2c2e3c70223d5de22176bcdeba7247caa374cce1c07f1c112e7aaa561b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): reenable and do ecosystem cleanup (https://github.com/dart-lang/linter/issues/4368)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_redundant_argument_values.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"370059ddba282fb0766e18b99ba8c44597c30b75cd7ddf6eb6e832f72d948757"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): should this be ClassOrMixinDeclaration ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/avoid_equals_and_hash_code_on_mutable_classes.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"a25f7e4f77c6739552c5c08b7d4e6d1ad56fbe9f858ec9366fa00f33636a0e3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): consider adding something to the analyzer API that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_public_api.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6ef53c9eb611448b70c84c8c6d7406ae52bd03129cf6054d00ac953c6826c6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): consider fixing this in the analyzer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/rules/analyzer_public_api.dart"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fa1fe4cf37ed736fe973d68081f8b3a745b8d9502af6e594a22a78dac8494a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexeidiaz): Should there be another, stricter lint rule that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/util/leak_detector_visitor.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2b5664b0b01517250ddaeec7a0f62e11140f62330a66fa2710d1fffadd012f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): based on similar extension in server. (Move and reuse.) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/util/flutter_utils.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b9dfb3479ecfaf0400a7f17e3b6d8ab97364ce17da427ead95295722d2f95ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): typedefs and functions in general. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/lib/src/util/dart_type_utilities.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"29cfcddf7fde741008dc72f9d4e257eb9b0606990b6df3f3c596d3e21f35f5e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(brianwilkerson): Generalize this method and remove the specialized \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rule_test_support.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a808206c3c1f73d6d9d737d37e30f9f4f377622a581c99c1699e5e09636c71f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): update when augmentation contributed fields are considered. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/use_enums_test.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4f07ccd0f97dc7592d209a353a7466273511ce49949fad439502540a2d6ce85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): consider relaxing the lint to flag cases w/o a const \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/use_enums_test.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d2104d04ccef129c0ddb830543d72b7b00d98c93cb1188dc021cf01f757766a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): what about closures? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/use_build_context_synchronously_test.dart"},"region":{"startLine":2463}}}],"partialFingerprints":{"codehealthFindingId/v1":"d49a7ab68ed0cea7a5cb3b015cec504c79ebc18db76987a14d15d0d900e4fad5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Why does a dynamic-returning function result in a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/unnecessary_null_checks_test.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c44775f89541a9eb26e4ba2712bfc0cd103849d672b4c024235dcbd375d1bd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): in the absence of accessors in the augmented class, report on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/unnecessary_getters_setters_test.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"aacb3a292518fb5769d27b3b035f7c772e96d7e5df262e128ae972df1ecac1f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add tests with enums, unnamed extensions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/type_annotate_public_apis_test.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ae26e7226edccf55d8363ec90621acd634f130ac7510daa952a6f4f239fd83c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider if this can be converted to an int literal. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/prefer_int_literals_test.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"f57e9bbc6126925183b37aaedff359fce47599043794c0c7ba51eea9dfa2beb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(danrubel): Consider linting these as well \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/prefer_int_literals_test.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2d64857bd9ea2e6358dc7edc05981622818af665480678742ff4dc0d582124b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add tests of abstract functions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/prefer_final_parameters_test.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cfdc58e2c273726ea9e4f665d87ed66186bd9fa738f290d92f5a5fec84e1bb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): These two checks should lint, but \u0060canBeSubtypeOf\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/invalid_runtime_check_with_js_interop_types_test.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce33bf85e9dc522fc23b80fe5be59bd3f730f705f009e189a636761eef65e953"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Some of the following type tests should result in an error, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/invalid_runtime_check_with_js_interop_types_test.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"3bf975d3893a113848c9a30e5516c31d29d71994c643bd9c8972a74b8d0dc8e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Some of the following type tests should result in an error, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/invalid_runtime_check_with_js_interop_types_test.dart"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"de47245ffb824ababf881133f40b94e9738ba970bea6c6a54a055d1408ea12bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): These should be errors as there is a side cast within the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/invalid_runtime_check_with_js_interop_types_test.dart"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"81d47d5c0594fdf5b931515bd0c9fce857afafa5a1bc96d3a5bec219359855e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): These should be errors as there is a subtype or unrelated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/invalid_runtime_check_with_js_interop_types_test.dart"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb74eb9238cbb201b451f1882b3797fc797ab72c797bec78192f2a06cfe7ebb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): line \u0022// TODO(somebody): something, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb0a585e9ecb80ec50f3ccf4210812043953e494ace80df346635db71bec429"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"55ac996ef7cd52f38eec8b37b6bd91965b476ebd7ce2e824f6e26e315dfddb65"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Todo something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb77d02e436b9a62df006f9e4bda5c588e077b7bdec3086fbdd19b3fc5f7ad29"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":30}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdb70aede5c43bf03b2e37410b4f9b29f26ee4257cf113a4a246ce8fb2d66e51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(somebody) something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea8a572986e67ea7a057ff7b0d9b1f098096505b1057b08c81293dfe7aecb71b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // Todo(somebody): something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"002d846d548c1405c1cd0a8f882720742ddd9c5626c58b2c0060e38f775b8515"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // todo(somebody): something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4a76e2b5073223e2bf0b42f36e3b2b5eb61b9d1f870ef49bb34eb2a717cdc57"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // ToDo(somebody): something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"d18b68aa130cd02c83a9e0d79fb6b284218dae07a51f30ea2e40197cfaab1c9d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(somebody): something, github.com/flutter/flutter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"57289c63970090d728e7f4b7f848f33792d7ea6cb3bcec55027ce2568520ceb0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // ToDo(somebody): something, https://github.com/flutter/flutter"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"46d9a2d8af39eeb638059871d0db842d04b0f6d773ca09d06329c28cf37ef4b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // comment TODO(user): bla \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f2441ea3c6d8a025c0a3f9c62eba0b4b86397f97a72ae83972dbe46ddd76bf6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// Something interesting. TODO(someone): this is an ugly test case. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"22151287f194c35d2ff4f481af46066615ff51cb8cb4c4de574f3f831f731568"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(somebody): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d7eef23fb09e8d4aee4d1196100612633e581e2cb37bd1f90548c6a2682a26"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(somebody): \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"497327a75782d14218aad89e0825fd90fd9684bb77ddf68e717b3814d385cb75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(somebody): something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e891e3167602c93f359e2a7086b077ce99bfd5ed5bc41a59394fb47edf1ff9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // // TODO(somebody): something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"daba942d943e458de7b984ccc5f4c587331dd9d0a84b47a5de07842b47b76413"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(somebody): something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"69a52a98b108cff3efc23f28f65c3d7acdc470ea187b64a182c6e6b3fccd46a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(somebody): something, https://github.com/flutter/flutter"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/flutter_style_todos_test.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"fff7ee1cd89b1060dfd94dcdd514cc88e97b37b853a3e7d2232268a130bb0bb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add tests with labels. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/control_flow_in_finally_test.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad1e99c51aa88b8f4bb584790b1e2b7a6f3d64f6dafce440c5c79c7ea5769d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add more tests: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/avoid_renaming_method_parameters_test.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f8d1e2273a060223320d99e11e9560608cb8684949eaefff81c7cbb1d56456"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Test where the parameter in the override is _not found_ \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/avoid_positional_boolean_parameters_test.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb64325a87472d689dfb3c35239ab076251291125914fd64f4b9ada7626edf02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Test where the parameter is renamed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/avoid_positional_boolean_parameters_test.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"55341f04bdc967b37d95f164462d0d3f0404c820657e280758a897cc964aac06"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): mock and add FutureOr examples \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/avoid_init_to_null_test.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc6218233722a23a325412782643ca046c5226ddda76f52a0af07a89ed7372be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): update getter to be abstract when supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/annotate_overrides_test.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"4536e612bb6f48baa4005becaa9228ebf75070379ac3ae855001e2f3b2018f74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add tests for super formal parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/always_put_required_named_parameters_first_test.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee8babb68907667e2a0d3b5d6827d5f527dabed97a3173dca85684904635f1eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add tests for local function parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/always_put_required_named_parameters_first_test.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"31ef9dc4115c62f48041e85ce0baaa668cee8bc377301bb05ccd9a87d0293130"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add tests for function literal parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/always_put_required_named_parameters_first_test.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d7f50132fe54efce9c1974814c07f006d9796d986096272a7eaf9b5e6ad81be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add tests for method parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/test/rules/always_put_required_named_parameters_first_test.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"4806cf0bc76773d323f8bd40b71e4a82feb6e1971468095fa32983d600f5f367"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Report the exception somewhere? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/tool/test_linter.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ece35d1ba85a2b514a9fc2f623e4a6984a312fd699d5c2dfef665d2060a17be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(parlough): Clean up and simplify this validation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/tool/messages_info.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"078c028a4073e5d5ce66cff1236b9c10d6250f550b1361f49f4cf5e2759e7b1f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(parlough): Eventually require that codes have a correction message. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/tool/messages_info.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a2a26a78b4b91114bcf5ddd30ac0961943438cef14e2d8b43b7c7e569e0ccc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This should include analysis options files as well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/tool/benchmark.dart"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"59093592c794b089ddd91011b1c0d992c2666d63068592f2c5756e808554f959"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): we *could* ensure we\u0027re in a reflective test too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/linter/tool/checks/rules/no_solo_tests.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a9b67f7ba4c47e3812aaadc99d6817b8d3bb2e5aed5815cf56bd438bc37548e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This should include extension types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/meta/lib/meta_meta.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"c30ac771ed0070fb599ef096b8909711d05ba8c015e869a6f172d8ace9623bec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add a sentence which defines \u0022referencing\u0022 and explicitly \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/meta/lib/meta.dart"},"region":{"startLine":475}}}],"partialFingerprints":{"codehealthFindingId/v1":"85d3c7c3149f129ecfd8ca1f9024b66aaafd94e3a66ca148e8136fd1ce7845e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Enforce with \u0060TargetKind.method\u0060 or \u0060TargetKind.classType\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/meta/lib/meta.dart"},"region":{"startLine":687}}}],"partialFingerprints":{"codehealthFindingId/v1":"59be2cd2189b24df54e529183a40f64568e29031f037a85298861e2b345d8394"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Enforce with \u0060TargetKind.function\u0060 (and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/meta/lib/meta.dart"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee0b2d47d6d19e5234ed07a07df44eaa83958111837f0ebb84d4a1924c571c32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Enforce with \u0060TargetKind.function\u0060 (and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/meta/lib/meta.dart"},"region":{"startLine":856}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff553b9d623c0b831daef63bcc89fb98681c6275eb5921670021e05ef533a189"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Enforce with \u0060TargetKind.method\u0060, \u0060TargetKind.getter\u0060, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/meta/lib/meta.dart"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"b415c2a448f35c91f629a0be587854af334b8e10e2e05cadde2c359f95486c7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(pq): restrict to instance members only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/meta/lib/meta.dart"},"region":{"startLine":916}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bae82f94c0032ede6901348ce375e96b02d9a709efad695f24dc94b47954d07"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): we should allow to split sdk modules in smaller \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/modular_test/lib/src/suite.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"c35edacef589eb9304c904f0e913273ef4a39631b1aeb7964f132238598f30c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): validate that [ModularTest] has no cycles. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/modular_test/lib/src/pipeline.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c544d809443828045a401d3b63c8b74a1a3e2b6d4397357bd0068bf7e0195bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): validate that we don\u0027t use a different alias for a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/modular_test/lib/src/loader.dart"},"region":{"startLine":204}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb8997fabe37d8f0f2b03fa2290c690ba319b13a24c782f4e991fac302aca256"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider either computing this from the pubspec files or the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/modular_test/lib/src/loader.dart"},"region":{"startLine":268}}}],"partialFingerprints":{"codehealthFindingId/v1":"90762aede973fdcf8d20f308fcf9d0491029f9c481a6e3b184496b4a1acd07a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): this library should move somewhere else. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/modular_test/lib/src/generic_runner.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"9acdbebeb7d14d09b9fc50d2bc27d215a94efed4a038b29f34b2e3501d9a9746"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): delete. This is only added to ensure the bots show test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/modular_test/lib/src/generic_runner.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"75abb062938c0893f206bb52854dfbe437b3130df364d6736b25bf60c1b9a2d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): follow up with the CFE to see if we can remove the need \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/modular_test/lib/src/create_package_config.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"d85a5caf4a85ea60cf96ca3e5a93c0701f233b5e78de17007cfc20ee630f3862"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: allocate constants to registers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d9baa573473c6126ad4080ca89ace13b121ca27bf4ff8630ee0d52b5bfb7c02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Currently only inputs/outputs of phis are merged, but we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"3536e3d636aeb578821e05604d742e96d1aae048fa54964bea6020bd55d2780d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: figure out more optimal split position using loop boundaries. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/register_allocator.dart"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2d72c17a1a46e0d140ee878c1a7890f4d1613592bace8c04aa0b3315d687112"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: switch from ICData calls to dispatch table calls. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/object_pool.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae5e1e8b0b199e3ecf9fb6dd00901e28037824717d82a5e5b87c4ff055fdf172"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: encode locations as int/Uint32List. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/locations.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b14869d7555e3e838c52fcfa97b83a76a33605457b562d0f6f254708f29bc44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: encode constraints as int/Uint32List. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/constraints.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"0702e93d8fc88c21f3f4efd90ab9d3e681c3bf049788f6a7af9ee341992773bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add moves \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/code_metadata.dart"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdac17d0cf33bea643259518fd0ac753a77fae7af56feee2ee52b0fe5a4517b6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add moves \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/code_generator.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"671aa7523faa70056fbd8354e0750d333eecd056dc17438d14b63aa249344d43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: pass arguments on registers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/code_generator.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"c49ae519fe948d8a8bcfbc22b839dd1185ec6fa71ff20422309a3fe73ad7e83f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: pass arguments on registers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stub_code_generator.dart"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"051098254a1e9e2c0761628a5a175d1f815f2b2bc55cd25ad61766e2c7e0f098"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: unboxed arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/code_generator.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"09a9d6f1b8c26c46af7e3dc272c6f240270992b0f851ea55af3a1817e9994938"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: merge subsequent ParallelMove instructions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/code_generator.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"2702e666283807c4c4c926eb67bd677dcb52ec78658597b8a20d61b7e2ec68c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: EnsureIsNewOrRemembered after write barrier elimination is implemented. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stub_code_generator.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea4747f0a979a10a30c1aebc65e4b9128957469c8f87f6146e92a5bac0638bd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: compressed pointers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stub_code_generator.dart"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"4173d72a10ea12c3207e177b44e3d2c6276c7deaf490d2cc69cb266cb97d18a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: compressed pointers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stub_code_generator.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e084507e16bee156be6bbef1d9205272a8d13f282bf965a28580f09bef58afe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: compressed pointers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stub_code_generator.dart"},"region":{"startLine":477}}}],"partialFingerprints":{"codehealthFindingId/v1":"341f35e64cd38bfe34d8ddc428399892b908c90b0b3f1babe11aa2769daee857"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: compressed pointers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"722c7fc61cdb774bbe156b099a1bee586b7ee6304eb74d9d4f12a14a79b6591d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: compressed pointers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"6aa9a97f60cd8320b16c023324464c7572d55ccf1f145e4db86eda7dcb5abbd8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: VerifySmi only in debug mode \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stub_code_generator.dart"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"de531bde980940facc8cc6ea773b9978958d8a0218b543c128bf43617997a862"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: add catch block entry parameters area. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stack_frame.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"3495df699151d2d7a04e9908bfcc6a817f027181d95e136c5a7dc392e267ffb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pass arguments on registers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stack_frame.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb768ef7909f87fb201a3f620abcaf3823d7827bfc007b6c2c8d4f859e756a63"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pass arguments on registers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"46def24b482314b5c92b69e1cdb99337ede5cd1b115b57d5440598b1772e997f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pass arguments on registers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebe72ec223b74734c593b27f07bb38bfbc88135132d268c27477ac35320de85a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: unboxed parameters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/stack_frame.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ca740c7d51851be2ce1abddc427baff2b3433415fe6e5a819b6a60914f05f11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: enable returning unboxed FP values on FP register. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ae7a63953530789a73f7b435a2236ee151874432bcb5de794750a98380cf19d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO:add callee-save registers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a5eb8b54185bc3824155568e15a595c1e740641a4d335880db20c24c951b656"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add callee-save registers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae47912bc6cf405d0ac4feccffa731b8f347d5b9a4593b969eee4f2f0a0d92af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"269daef4ee54e5579557acf8497a5a46fc33fa62ea4597c5729212848d7c9e1d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46f647e625d79cf96161d7076d8d7fc38aff32a7670a25abefa1b5588c457dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"a29e6e2627a432f6e5de52851b2ff77e5fda5498306624e7a8b473965dc55687"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1b8aaaa5b70540da4c6a31d0bdfaa336cea2c1cc7dc2db039b34676b6f0f34b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"82e8696814da18855595b26984f3392653e8e57ab5cc9709c3e4118ba83755a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd394ad18cacc7f5a4f17f0eb63841c2321e23054ed5d8cb78fdd3c8e73f1e75"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ff87882ded52fd9b00eb5d16a0e5da9edfbd2f8b19d36c17a68e5e98adc1ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"bed799d93d25639dd3ab745e3385c11f95bb18c443bd9e081598f649d4fec73b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":526}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba5f68cb0e36bae601f4e5f284783663833640cdae2a40ccdd831bee6fc502f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":536}}}],"partialFingerprints":{"codehealthFindingId/v1":"4199ab9388e90a938f54246ed411fdca7826d4911a0ad515db4dccc6ca67721a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"3829431791dd4000621f2ac2cfbd8f2387dcee19ebe71bd58388da8308163bb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"e83cae0e5f12f341f24814adaf34d472dabf82b13f5352efb3c848736f476cc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9a1927345cf89e6eb30b9e43c819d109a70d2d1ea02b2eed42ccbebf1de163b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"0434059c2b5f140d3233d271b43c53835a9bb3fd14f02235f11ab9a557e6a0a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: save registers on slow ptah \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/constraints.dart"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e8aa066b3beab7d79d7ec6a83dd97f330a1a62f80be62e4f934ee5e936b58ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pass arguments on registers and avoid these loads \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"380c1de3520e62e7711936a33fb4c4dd1cf49ce00f9ade90c778b8b3f030349c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: pass arguments on registers and avoid these loads \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b5192b65bb7d0b7774d2b53fe70497083101b8764625da32ed738934f0d0c84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support large offsets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":670}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5879e871eb28c38cdb761b13926afad67f7cbb0536b8cdaea6f645c137f42b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support large offsets \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"1177e54bd8f1ab2bacfa4fb1a6927a28d3f153c860eaf69cbf6ef2327845e2cf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: call directly through Code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":686}}}],"partialFingerprints":{"codehealthFindingId/v1":"af0290268249c6a96ef24b4baf83b7a82997232d27141bb3cb870680dd62cda5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: call through monomorphic/table dispatcher. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":719}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dfffd3547c6cf18c0ac9ce2be7dfd12719d6244f8d231cf2f2f934fc4d7363f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: compressed pointers, unboxed fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":862}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff731f232d0725a02af330f790e6175203d916cfafc66cec4a5867471712a055"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: compressed pointers, unboxed fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1047}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dc804cdb08811dd673312d766408e6e479a7f60b33d291865b19ebbfdc184fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: consider moving this code into field initializer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":888}}}],"partialFingerprints":{"codehealthFindingId/v1":"228d4e933f279825da84c8f2a43dcb03d6032f6bf345af75593f299b8e1469f5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: consider moving this code into field initializer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1123}}}],"partialFingerprints":{"codehealthFindingId/v1":"861e1f430e480e1920ccc06b4308bb218697b9ad4477d94755480d0fee18b0da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: shared static fields with experiment enabled \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1091}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c6a9b48a6d87fc59cbbf58b3974899bcb3ca2d0bb6a8d3f4659235872037a87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: shared static fields with experiment enabled \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1175}}}],"partialFingerprints":{"codehealthFindingId/v1":"46de5ee0aa91b992bbce0bee96ecf7068bcfbd9e8ee660b2f7d19792e1633f4b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support huge objects \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":1955}}}],"partialFingerprints":{"codehealthFindingId/v1":"f92a19c121e403b883b676cfd04592d89fe6e8b22e5e751c13a6e41758ac9df0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: allocation profile; allocation probe points. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2001}}}],"partialFingerprints":{"codehealthFindingId/v1":"40129337b9873ff270a6914d32cbde9804fa2a3e4ba0d44dcb06197d1d7eaa94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: initialize delayed type arguments. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2074}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ee96142b456d6ec7ac5247671dcea5502fce0aa4e18b45063d7e412c904f455"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: convert division by constant to multiplication. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/code_generator.dart"},"region":{"startLine":2583}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcab25f6b4390152647700787f1484bcc507db974535094a7044e2ee5ac05417"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: support long branches and floating-point instructions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"c45add543dae5bbd2e488ec4917ff3a21033545ca1ee1bc06e2038d4990edec4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: measure performance overhead of always checking encoding constraints. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"b316681c83fcd3601f4e29bab3e016fb875ff6f49f52b7102d4fa0cc7d16a0dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove after all stubs are implemented in the compiler \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a7f69b27806457071000494a81761fa18d145b763f6b2122695a0c5329effee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove after all stubs are implemented in the compiler \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"427ecd01893f7852c2ba1c5b7e6453b72aa308ce592f67dd01b93d45bd80cb95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: figure out if we need store-store barrier here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":905}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffb1ee92cf197c02d3445fdf9480315d9f4a21854d0480a680c5b8f792232793"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: figure out if we need store-store barrier here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":978}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccde997d9ec5c2a2c13d71264a295482ef8aba345a9065607a41ba4d79be9b8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support compressed pointers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":908}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc64d297e4c15d448a0d6b5281ad0ccf6cf1eb5eb720659d1dce7313b84d9028"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support compressed pointers. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":981}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a7ee4e5c31cb198334dae91df8f6600e150592a984b8388ded7c679b9381649"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: get rid of this overflow check \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/assembler.dart"},"region":{"startLine":969}}}],"partialFingerprints":{"codehealthFindingId/v1":"8585effbef50a2dd693b7ad8db7e9afa11500679fb77f15dcac1f3d027ba4981"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace tail call with actual implementation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/asm_intrinsics.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"04488ad40320d0b35a057321d4e36eea881dfa94949d626fa5d65dcb90538826"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: replace tail call with actual implementation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/back_end/arm64/asm_intrinsics.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff76a2c8273c3d33dd0809238e209324156e5411495ae13ee37c51bbd10d8d28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: .int32x4List =\u003E 16, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/front_end/recognized_methods.dart"},"region":{"startLine":580}}}],"partialFingerprints":{"codehealthFindingId/v1":"85f73786ee1cd438886dbf6154a90a405ecdf67b85de1d0e45f298b8e9e23220"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: implement \u0027operator ==\u0027 instead of \u0027_equalToInteger\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/front_end/recognized_methods.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"60d5175ebb518810a49207599249e45b0fe2c3873a3da2f0b45606b3cc7948c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add more detailed fast path \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/front_end/recognized_methods.dart"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"271c5870331c644e1776778732692e4aa76daa545637f78ec6403189efa1ec00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: .int32x4List \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/front_end/recognized_methods.dart"},"region":{"startLine":1518}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d2baed566c4814fb3cdfbe08643a24547b942d17ed1065f36b316de40e64bb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support unboxed parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/unboxing.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e8e0d79a5cdc7936109f9d6bb35af3cf289b19dd655567fee0107d742d0bb7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support unboxed parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/unboxing.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0576e37070a4c3974fc8085db02ced2dfba433f8236b11f299a2600d1543e3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support unboxed return values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/unboxing.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8131ecd56da6245c3d24915c52a0701881f0fbb1d7dee1efef52de5080b700d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support unboxed return values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/unboxing.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8e44c957d5d364f3d9d12a26eb91cf58b9371495b237dbdeb5a6659bc041435"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): support double comparisons \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/passes/lowering.dart"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"49752b67b82eeedc7632c1dc001612e4abf2eb2b3b00d00a8e011ef496c21e00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support unboxed Dart fields. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/runtime/object_layout.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"1239b23f67862c637df46726d422b806fe8af8698b9067d3490ae5547b830e78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add other built-in classes from dart:typed_data \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/runtime/object_layout.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef5abd85a878d9970140d812fb69f8149581d4f956b4dc829db3076e41ba7b87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: add built-in classes from dart:ffi \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/runtime/object_layout.dart"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c590f03b1f3e68bbc7270793f9093ad70c260fe6adb337aa9efef21036cca8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: generate these stubs instead of referencing them from the VM. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"444cf344ef9d9e706e53cc18a4c01bf66b90bfec75b3ab011d72a9829674463a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: async modifier and flag bits \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":839}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7d436862f54275c71a147b28328e736d9d3c2c618771decbf0541ba7b2cdee5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support unboxed fields \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":1257}}}],"partialFingerprints":{"codehealthFindingId/v1":"501dd86538ff40e54759c986ebc13606f32972a0d1c7134262d28a243aabcd22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: encode parameter flags in the names array \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":1475}}}],"partialFingerprints":{"codehealthFindingId/v1":"f68822cdd4ea5a009eba1cfdc72771e4d700120c09aa1cac564d4a639c1f0714"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: write moves \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":1991}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9cf9e2a429764b904669a7cd16aa461115f47cea167270cef10b5bcdb37b676"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: encode inline stacks \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/snapshot.dart"},"region":{"startLine":2114}}}],"partialFingerprints":{"codehealthFindingId/v1":"62f02dd58249adf340ec3d5e38bb387fdbe22b33933850c1e95dd1899dea1af2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: LC_UUID, LC_BUILD_VERSION \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/lib/snapshot/macho/macho_image_writer.dart"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"88f3a27245b751cbeca7709aac0b84ebfa58c223178bc53f53398c721375841b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: use string interpoloation instead of custom format options. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/disassembler.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"1de47638e2fd283dbffa061d4aa3a29833c48513e3e6c6bd75da5d37a1814ba8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: refactor to better fit idiomatic Dart style. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/disassembler.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"bec6439c57218b015a4df538b56cf0829bee6340137e2fb82aeca9c6184f6fc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: follow the standard arm64 assembly language in the disassembly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/disassembler.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f376abb692132673e785e0b2da7a4aa52fa3c763385c51c40d0f24f91c0c5f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support far jumps \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":1961}}}],"partialFingerprints":{"codehealthFindingId/v1":"8069fcb68fab5f77b010beea638e92398b0bf164f6f26754498272184db6b98e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support far jumps \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":1983}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9534d3dcae8aa97d3335341322a306e78424953851bc07eafe576e845ce55d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support far jumps \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2022}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6125e2d73d43307959f46c6ac0070b6a8ad9a5f58a32322f68e8de711d68973"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: support far jumps \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2063}}}],"partialFingerprints":{"codehealthFindingId/v1":"e29cd6e65e325ce2c7405c63a28290a7ca8ce2f37b239dc7256debf2fb2b277e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2125}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c84da3cf0127da0e60897b445653683ce8113644968644bdca0d3b434ce0c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2166}}}],"partialFingerprints":{"codehealthFindingId/v1":"25e20dba58efe403083faf1bcc2549e2462839a732021a3d9d7e0116100a6894"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2189}}}],"partialFingerprints":{"codehealthFindingId/v1":"5282cdee5d4a43ed90a37b86b653c72ef5135ebfea5899b8d0923bfea9f6aa63"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2212}}}],"partialFingerprints":{"codehealthFindingId/v1":"e333ebf60d23d41a798667540b322bb45a469fc734a2dedb39189fa2e27230a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2266}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba129c3e53317e0aebcc585d3e446b005cd700b87dfd070bd63ccce86e1f865d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2276}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a6512e255bb1dbe58521f34ff3a9305beb1bee46acf286dacee04275b1049d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2286}}}],"partialFingerprints":{"codehealthFindingId/v1":"45b2a1d1c9f7d4b0e9a41a136ad392613697acdf220b953cf70f5523657dfe41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2296}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e00cadf970b6dc404c0664fbe6debce7465e1f4da9ec5010a972be23f344bb8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2306}}}],"partialFingerprints":{"codehealthFindingId/v1":"f815f5c9c53b5005372961947e828a11ae66e4c0a42eee7714f03317944224bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2316}}}],"partialFingerprints":{"codehealthFindingId/v1":"7040491c20bcc22cfac2656fba4ea70bdb9fbcb0e904cb0d6655648512ab8080"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2326}}}],"partialFingerprints":{"codehealthFindingId/v1":"51c8b3fff654f4d1ee1a091889824967a6d9a7527b371fdcd52d53e179fcf874"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2336}}}],"partialFingerprints":{"codehealthFindingId/v1":"39b53dbe1de349696369d561a5e35c19d393bf0b6c281a04bd635ecf7199a94d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2346}}}],"partialFingerprints":{"codehealthFindingId/v1":"9312512a40226625db3a28a8504d29f96da44db744b86fb825590bb3457c4e00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2356}}}],"partialFingerprints":{"codehealthFindingId/v1":"171741a9b0f163fad7d90bf3111031b90dd00664c77300858d14ede9dfc06ecf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2366}}}],"partialFingerprints":{"codehealthFindingId/v1":"c30ac573e2131aa8de31b8d2a189e6fdb5b98cd9db678727aa83e2a7920b78e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: extend disassembler to handle single and half precision. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/test/back_end/arm64/assembler_test.dart"},"region":{"startLine":2378}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e412ae5d69df883e6e2f1888a04a89e193031cce61f7cb96637048451ff029"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Is there a cut-off point, or is runtime always faster? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/native_compiler/testcases/register_allocator_test.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfb3f66edabd30e798b3240f057a8868d07dd6e9e63cca674d2d46b9694b71d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Is there a cut-off point, or is runtime always faster? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"5230ca9a2322e03a72f457a0a9b4d09ab85cf329e4cb1d61df64eb09f10a7ae2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): re-enable when DDS is enabled. Currently causing Observatory \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/service_html.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"c08a456726f87963d243c67c65f0b7905429f2f3b8c54087e548bf7a80950cfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): The implementors of CommonWebSocket have more \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/service_common.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"b471f20af4a748bd86cc566833ca6d3031128e4922454cd08f14dcbb10bbda93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Incremental loading. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"15db73226a9ec11059a78687d5031d5b2c78c737cb2db8568ae6800a9af4cb94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Insist that the client remember the chunks if needed? Always keeping \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":638}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5170b3d99d6c61a15cc01d890a1b8c43bb8f50045808dd3e34437c7f6559a45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Maybe keep the per-objects sizes to be able to provide \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/object_graph.dart"},"region":{"startLine":1320}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f4bb893fe0b712a5230198d1826580e4aa8c963ec8dfae3b627a22e71665c97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan): Move expander display decisions into html once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/app/view_model.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d991ef85842103716f140029ba56d88c9727008b126793b019391d5b74d8d4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): How to test this page? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/app/page.dart"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"51166402047e34de6e8e17c5b9833ab17d3ff01e5175686fba58a55f0d1d1a5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cbernaschina) smart connection of streams in the events object. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/app/application.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"7169730da8bdde532c5a1b70f924464badcacc559a3a036253dabd17fccba8bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Report this failure via analytics. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/app/application.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"49de4dd3083545af821d69d8207fa6cd5b5ff91fdf28c79b22ba72ed113ba6b0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Allow the user to disambiguate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger_location.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"28197bfe57e6694c6aae7816b0bd356586dd39020f2439b4ecaba0095f591e77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Allow the user to disambiguate. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger_location.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ee3f5bdfcd24b63fb26f631efefffa9a37a60670704992a9d224d81d7048672"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): This does not handle named functions which are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger_location.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"d41881f67b71620859e1db47929d38740cc0cbb5ca67cd7f885fcc6a6a771011"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Move more of ObservatoryDebugger to this class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/debugger/debugger.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e00053e257114ba0c733b4ea4c3f0e0dcbc52382e0a6c5f697ebfe6e72c4719"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Track down the root cause of null startLine/endLine. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb33210285906622db633b5bc09b954a0d52bc14fa18ec5bb5f110eeae3b810"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan): Add classifier data to UI. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c13390c070d00d256528b6c0b3901d822f7a4c01c2702c130c8365a99b2c457"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Use a real scanner. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dd37e08d1cfb689c250370a029462f32a9bd6a4b5b0fc34f460f618bfc5d771"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Use a real scanner. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcb9952752cd995d66d439546c1039bd491c2d7d7fea72d1e583d26badcc24fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Use a real scanner. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":473}}}],"partialFingerprints":{"codehealthFindingId/v1":"926d9f5b56c0b454289b9553072e22379ea5bb81ad5a703f6fc9a65ed0347705"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Use a real scanner. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e9d4c1a3eaa5c7aeea49bfa18317624f838e5dcad0806b878f772c1d1c28121"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Tolerate overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":984}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a8f7d1586818f62d283b13815d57b8c5533790f8f832a98d5bde5cbb9cb204b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Handling overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1130}}}],"partialFingerprints":{"codehealthFindingId/v1":"9279884fc42676faf83712a1c54804f756d15761ba56bc120d2150412fac1502"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Handling overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1166}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e2c944e0271c68d39fedf22597c55f6c687cfee2afd29624ddee47d00230593"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Handling overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"24598f72e9f6922f690ba518989b1e515596d5612fd4e851d53cd0c3866c3102"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Handling overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1218}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3938c4cefb3588e818e10fae5b4175d40a5304e57129ef7fdc08d0a3fe342a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Handling overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1243}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb6d65bd074b9da0b712df8ad8dbd185a2b1ff04dad461d0eb75d2ab68554a33"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Handling overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1273}}}],"partialFingerprints":{"codehealthFindingId/v1":"99355f9d86711c2c22b2cdeacf6108edc3a474e49e8f33b4e03035030f29b3eb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Handling overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1357}}}],"partialFingerprints":{"codehealthFindingId/v1":"8171ba8cbba1cc3950c9b054e8c2bf631966eb4d68ff282de06666c91ff4001c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Handling overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1378}}}],"partialFingerprints":{"codehealthFindingId/v1":"24171c6cb750d2f56f2b46ddb1ecab59c1085ee3f9a270a25b5464d716c675c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rmacnak): Handling overlapping annotations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/script_inset.dart"},"region":{"startLine":1400}}}],"partialFingerprints":{"codehealthFindingId/v1":"7588da49c5bfe5a5729dfd26a3cecadee65915b66eb132e337ab4fb80fd3617b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Improve interface for huge heaps. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_map.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"88237a48fc20f4c765710d7aee5f6e84fdccb9bbb13fdd3b53e5445825a1c25a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): The printing for some of these non-class \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_map.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"85e6398649fbf53afc867b8004ecac5c4c68fd8e215c5e8c76d0d44aaadfd4c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Pick random hue, but fixed saturation and value. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/heap_map.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"673a9cfb3ece29979cf2ab44874a047a2ce39f0e9cb8a035ac1f4669167dfa22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Move Debugger, DebuggerCommand to debugger library. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec53509b099d353020357969e917121fd2120387b4c9b8551fb4c0bdbc66a666"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Rewrite HelpCommand so that it is a general utility \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"565f127112e89867ee86aa4ff80f4908276d4023f95400de75129359705ba4f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - fix DebuggerLocation complete \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"0284c8b70b82f1d8c86d2d368bdcce3b17f7fb351218415a27a9e4ba8a008660"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Add argument completion. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2f3ccfe23ab223d91ccd2313187d66ea30a4d6883244646887c47194eba79cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Right now there is only one vm listed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"889e42d9bdfa9d7640c4ecc3f1d566bd39ba99986098d2d4b21cae5b519a8694"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Currently the debugger relies on all libs \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1544}}}],"partialFingerprints":{"codehealthFindingId/v1":"190dfb8cdd80d5cac8c356c5c1dcebe7478d55d8821e30960b6511e0bf2c165c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Stop relying on the isolate to track the last \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1574}}}],"partialFingerprints":{"codehealthFindingId/v1":"639a0f35de4a0620608f046e3567e0fc55c1e6e4f69f68e7686f5e0a6822f53b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Implement real command line history. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1900}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c85f4f1410678671cc48a07edc14136c715190c267269fb768e9c62a77ffc04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Set this breakpoint at current column. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1967}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1420eb828ad0f4702d7a1732829d6ccfd213b3eadc4a1e41039a3c510c5d81a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Clear this breakpoint at current column. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":1970}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d9a4bc1f3f6158d6afe013ed64601b5cda497664b215147b20326e91bd53d4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): How do we want to handle this in general? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":2176}}}],"partialFingerprints":{"codehealthFindingId/v1":"696657a2ab1cd6d4c0daa3215c40dfe5545ca17dc394ec7ab97e18f703021398"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): How do we want to handle this in general? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":2190}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e4d2590e5b2bb69de247457448ddffc7ea79ac212fcb9805fdb9e94f2452575"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Move the cursor to the end of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/debugger.dart"},"region":{"startLine":3284}}}],"partialFingerprints":{"codehealthFindingId/v1":"14774854ea87e79679306e3dd86defe4f5ad2ac8cda4b521a98a9ca5d3e7cbdc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cbernaschina) add InstanceRefElement back. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/nav/notify_event.dart"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1df3cd66859be18b36d8b942bba702964af8d026789e8089da9fe7db53b87be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(cbernaschina) objectify \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/models/objects/event.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cdc782848edd1f0957074d0171ef84c1eca564791cb23d8762fbeb9d74802bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(observatory): Address is not necessarily representable as a JS \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/sample_profile/sample_profile.dart"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"01dd1fb43e5e63069350cbf90406a056ea3c26e924332740ca2eddbe9271b0f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Make loaded observable and get rid of loading \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a0089fda1c2916a47e3cc6aec1da28dec233825342df1d71269b93dab60afc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Checking for a null id should be part of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"62dea9a28a1a667d9cc07781d08e640f6e51c9ca6d427d667ddd3c83fb7fb1be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Check for vmType changing as well? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"847d3ba958228b11b579492faa675b6b631fa8a12f2e8038f90ce575a85589a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): The connection should not be stored in the VM object. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":692}}}],"partialFingerprints":{"codehealthFindingId/v1":"4328b4a34e2b6a89f157a96c28ec3d10a2b33d1ecafb303b359cec4dad0c496e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan): Ensure that isolates do not end up in _cache. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":699}}}],"partialFingerprints":{"codehealthFindingId/v1":"aef7bbc0324cc8c7200fd2b6c93bbda29a7ec371e3907e003d25c843599c2718"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Currently _map.clear() prevents us from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":2166}}}],"partialFingerprints":{"codehealthFindingId/v1":"422521e3390565c28c16580f727f594f9ef009b14bfde364526cdd379cd83e2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): These are temporary until we have a proper root \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":2176}}}],"partialFingerprints":{"codehealthFindingId/v1":"50c48c29868e0623005ac10fd63c1889e241a145d6ebacbae450464f362f4c85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Add state to track if a breakpoint has been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":2462}}}],"partialFingerprints":{"codehealthFindingId/v1":"629e6d3f6eae95a127b66a325c4d99c8260257ff6ced953ee3bd5a158f862eff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Is this properly backwards compatible when new \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":3017}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb658434d9b33a1bdda3b3a2d53497a5d81b83f0d8880fea9d2e065ec1fd9544"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(turnidge): Use SourceLocation here instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":3563}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d749a7dfc383ca2e2da81ff48e22c0f362dd7b854ffc19094eaa98e52304a33"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan): Fix LocalVarDescriptor to set column before the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":3924}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e4f21ebab603273dd1a9f3319892c7d28a56e5abd3b63a263a6a4161c984877"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan): end token pos -\u003E column can lie for snapshotted \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":3933}}}],"partialFingerprints":{"codehealthFindingId/v1":"872f413e4f8018835c1fb33c13bd021a3b0bf02311b4b0d9517d9467ca940065"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan): end token pos -\u003E column can lie for snapshotted \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/service/object.dart"},"region":{"startLine":3983}}}],"partialFingerprints":{"codehealthFindingId/v1":"719b30571a0e31a99679b4035a8d84e1ead6afc8430e83417b62241dd748ec4f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): This currently isn\u0027t ordered, which may cause problems \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/reload_test/lib/hot_reload_memory_filesystem.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"77e4d7091a77ef75a1e41e6a4de25d6502903a7c2e35ce32974247d8fce602da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(markzipan): This is an overly simple heuristic to resolve the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/reload_test/lib/hot_reload_memory_filesystem.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bd98c2f2ee398eceab9e898c7818e01a0a9cd815028de2a0cf8b074cad1323b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Analyze escaped quotes inside strings. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/example/strings.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"51c67dcf884ade19b8b04bcf2d6cf8ee9d91d2faebdc08f303169d60c7426779"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Analyze string literals nested inside interpolation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/example/strings.dart"},"region":{"startLine":34}}}],"partialFingerprints":{"codehealthFindingId/v1":"e69112085de96ccbb2af71675109918dc57c53a85b1708f79bb867b7521cb5e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Consider using cli_util package. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/lib/scrape.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c17f2d5f389712591dc8cadc31f6e0e81077c4077efbaccd4890e111a9f4079"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Remove this in favor of using surveyor for these kinds of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/lib/src/scrape_visitor.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0836f59d67147e0e72dfe1b4c514e33d3ea5a19e97166a181e032e87bebbfb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Using string keys but treating them as integers is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/scrape/lib/src/histogram.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"2416da5026315b6fe9ece3395035b200251f08922a672cb3881bede88c558b67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): This is not actual Windows behavior: \u0022b\u0022\u0022a\u0022 is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/shell_arg_splitter/test/command_line_split_test.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"081baa8aba26531bac29b8fa6f8579f5d49842390c6bb89333502336be69735d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Remove this when Dart 1.0 is no longer supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dd9a6f17b67070c55ca249a5ce02edaafcc2fbd28fec9a48944d5f2a2666a33"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Remove these when only fasta front end is in analyzer. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccd0ef18098a3f137182603db9013931c5e200473327c847bd3208847aac8382"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): What about ios? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":1157}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1864de3597e5345bf54862a9bf53398e3a79a1c03c8daafdadf5102e05ebad5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): NnbdMode.legacy can be removed now that opted out code is no \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/configuration.dart"},"region":{"startLine":1172}}}],"partialFingerprints":{"codehealthFindingId/v1":"05199b6485c296c2345005db80121a9a1a5a1dbd5385f7511bf826a134735997"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(karlklose): replace with argument parser that can handle all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/smith/lib/builder.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ea611f4da948f8944af3d030252e5ca0280fdd9f78268b052bd490c64dcc408"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Handle test names ending in a wildcard (*). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/status_file/lib/status_file.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ffe5051d0ad06ff679a97374fb120384f23cd3bb6513fa3b53b9cedec5c49ea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): It would be more useful if it reported all of the errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/status_file/lib/status_file.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"11f6e8ed1287be9214169d5ff55de2b7526c04bf41daf32471ba82e123994e82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): The only test that uses this expectation is the one that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/status_file/lib/expectation.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf142f583fa007c20470fc8429b7d4274ccce4b06fc5e6c507c2f1646cc0fe1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): This is redundant with other mechanisms like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/status_file/lib/expectation.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9eda78638bbb6c8e9566d022b7a642e7f3cfb9e29337a917d7ac273dc23f370"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Is there a cleaner/safer way to do this? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/status_file/lib/src/expression.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"51ddd0bb9be0fc93a53b8cd11203db7fe6223eb4caf2a728a5356dcac2954c1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mkroghj,rnystrom) If DNF is enforced, the need to parse parenthesis \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/status_file/lib/src/expression.dart"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"a767beabee2330023cfbc663dc1450a62fd0221a04af004fefb76274c9c63bd8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(karlklose):  Update this class with all fields that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/bot_results.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa94cb610ddc8b9c6598834d0300b3317d6343ade6b880f4ecd8b6809d52c6cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): once the dart-executable that is bundled \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/utils.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b794620982919d0f844d499db91e53aaa376fe63442c64f589ed59d651b0912"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann,ricow): As soon we have a debug log we should log \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/utils.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"43304b5314047e1f9ab098d4c83ea8046298c4c2ccbcda184a59561612b23e08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Only validate this once, in test_options.dart. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/test_suite.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"e47acd0b97a9b22c0f7332a63dd935698604647aeeefc644952abba0dd010437"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Merge with above. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/test_suite.dart"},"region":{"startLine":1164}}}],"partialFingerprints":{"codehealthFindingId/v1":"def11c62ad6d71d8a949e23fab323f97ea9075cb75090bdaa227dbeaaf069ec5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Either tests should stop specifying experiment flags \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/test_file.dart"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"07272c1d0f430583db79e69f31933861130dbd88a2e4428459e7c5282dede3f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(26372): Ensure that the returned future awaits on all started tasks. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/test_configurations.dart"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"871756c491a6926f2029a2fdf554331e23c8a61946a986bf3875825a79f3ab28"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/63723): Support"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/test_configurations.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"cebfc880ecbb633e7fd0591a80571ba0e7f33fd25812de4bc0533930d96c053c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): should we try to report the stacktrace? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/test_case.dart"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff2a81977bbc46936abe0b8e224a195180e003e16335c2d13da90588bb69dc5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): should we try to report the stacktrace? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/process_queue.dart"},"region":{"startLine":1293}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0c29047ba8e6dce7756f20557167a1589a909dcf49da5dbb8b09023b010e006"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Move all print calls to go through this. Unify with DebugLog. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/terminal.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"d579cde3ffc187c6d6523c49cc7c2c6800f5f286cfbffd9d77557da5bee6edc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): This list was generated on 2020/07/24 based on the list \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/static_error.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"10bc5620d1a5910a4bd4c7240885128feae64031f232ef7aec2fd364ee7af021"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(42787): Once CFE starts reporting warnings, encode that in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/static_error.dart"},"region":{"startLine":450}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f2c907c9f9a27f39459359261b0dc9943ca4fb74f7d707aefeb935ebebe4389"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): If the web compilers report warnings, encode that in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/static_error.dart"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"140be5a63840063ccc629029ce6852076d1f60f7e0498ac618c41bcc0a737513"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack: If the error is CFE-only and the length is one, treat it as no \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/static_error.dart"},"region":{"startLine":801}}}],"partialFingerprints":{"codehealthFindingId/v1":"126064dc5e32bf8866f82bff28f49bcb9f8b1252086d06bf5d143f5998cd7cf2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Stop doing this when the CFE reports error lengths. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/static_error.dart"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"21e209121a60ba04ff631e5d942bad730af36ca6918c140ff71a0746894e1673"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Replace this with one or more browser runtimes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"747c6c2d580d215dcdde7c0221c9db8094e3e704aa5ecc9022401e0a1f3a1620"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Make this method abstract. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"abb71501408b27ece0c65aeff916b57954e4b2689017719274a268c6ea4143e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Avoid duplication of this method between d8 and jsshell. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/runtime_configuration.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fc9b3471a7be39be5c08d6f310d28023eca649fc4f2c6224101816f062570ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann): The [timeout] parameter should be a property of Command. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/process_queue.dart"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"41919109e0f5f311cb82fc458f304dcce950ae59b630263ce7a61f31b7443fd5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Remove this class, and use the URI class for all path manipulation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/path.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"b85b44aedea037f3147c0c6e28eb922b1f6960e821fc52c04b189ecd8092fa51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45618): Reduce this if language/unsorted/disassemble_test is fixed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/output_log.dart"},"region":{"startLine":15}}}],"partialFingerprints":{"codehealthFindingId/v1":"02650dd6be732aa565cc098eaffcaf728e6a41cdcbd5cecec00fa188b5dada55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(53948): Unfortuantely currently the test matrix needs to specify \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/options.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f76020a230679284b7e81462d7f4ed53b0ee4f9374ce95580bd2f5b4b7c7843"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): After Dart 1.0 is no longer supported, I don\u0027t think we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/multitest.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"63b5dbb5645982e4cfa5b16475ea51f85bcf9c6fbaa1c3f6c57e576d4a22a401"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(38752): Should return a value to indicate the failure of the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/fuchsia.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"cacc0b1fa98d0c7416591984b5c3d3a7317709daab63329fee713a1632dcdf73"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(38752): Setup a Dart test realm. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/fuchsia.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb24cd14b7d8a4c4cbebc937d3a68f7cbd2273ca169777527d44bdf9f51324d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Handle \u0022ff\u0022 being used as the name for firefox. We don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/environment.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"9de60c7a25883c6a9a18214c6190a6d9c321ef691ca0ecec8ea94e18a69b9f32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): There\u0027s some overlap between these and _Option in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/environment.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"eec0a6c96c7e3132568d868431fb323454920ea1c92307ffa62597c586ee15f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Put non-default timeouts explicitly in configs, not this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/configuration.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfc9f4bbaa49cc713bcc242ed766917a1e197480fa6e1cac60ab36a0cce06dcf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(b/399714829): Test packages should be created at test-time, not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e1639776a6494fc22e652857fe6dd41d0c33dd5c2aab2da07502c1b46113c0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(athom): input filename extraction is copied from DDC. Maybe this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":524}}}],"partialFingerprints":{"codehealthFindingId/v1":"05e10f1be520c8277595d21c599a8f73b3375ed1d5cb26399cd8677c0fdd7eab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Jamming these into a list in order to pipe them from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":797}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4ed18fa28da332ebe4b9073ace01eddb3cac6925871c694286cd52ab1019c80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): ddc should have a flag to emit an entrypoint file like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ea74567ae0048e578b53ce6acf8a019ba7fed63f36df355072baf09168114e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): to support other runtimes like js-shell, we may want to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":849}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddab349aed19edb14ba905b700c379ece3e99193f5790af10e620aeb6a8590a2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jcollins-g): move most of this into analyzer.dart defaults once it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/compiler_configuration.dart"},"region":{"startLine":1617}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6156fd7bb92dd211776d7ac97a6cc48a69e0a503ec8dd90d07a7f49145e26c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann): We may need to change this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee3960d4c374b1848e58167b4e16ac1de3a39bb90cabff8fecb774e3f952b1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann): We may need to change this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b9946e8d4e12c979dcb787e7eed32027229144ca9557deeee47f71026d94348"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): This will promote \u0060events\u0060 in null safety. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36b1d4d4e22eafae4cdf6b287a65b4538ad36db75b2d7fafe54e896ff29f349"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann,ricow): I think this functionality doesn\u0027t work in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"571cc02384a5607101cc505751d06e10966122813680167dfaf01fee35c8f44e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): change internal deobfuscation code to avoid spurious \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6ff45c9f16b379d64ec76eddad4b053a96199a0e4f7977e4b9b813632cbed36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Let users enable or disable this explicitly? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"51a8f129d1ba8fa70643a3e9e1a576d9ed64281f84ee527c15b41577d992a829"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Hints will start to change to be warnings. There are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9c634fade6320c8df62b9f2f981a965657ab43c4bc8f6ac74629bcc9e9828e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann): If we run the analyzer not in batch mode, make sure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"607bf5406e18bdf03c3991e554cbc9f627a38010c536a871f363192915cd3f59"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(38752): Plumb exit codes through something else? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":912}}}],"partialFingerprints":{"codehealthFindingId/v1":"709960951e7136475b776a239c26ad1e2de486583a0c64d3eec9444544acecaa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(26060) Dart2js batch mode hangs on Windows under heavy load. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":985}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f32580d8aafd0740e06318d0048e8c6c028f0a9ecd96aac01e62ccf9a531445"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Support validating context messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":1030}}}],"partialFingerprints":{"codehealthFindingId/v1":"8532d86081067e4cd4b7fe21b9ce679af9553ad139eab93cbff84c94c1454410"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Support validating context messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":1081}}}],"partialFingerprints":{"codehealthFindingId/v1":"207cdd82d42779fec12052399ecd17d1ec7bab5e758d0e8871800191f9152805"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Support validating context messages. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":1155}}}],"partialFingerprints":{"codehealthFindingId/v1":"648f2cd5291d44f70400498d3f89e79a26d5bf2cdf3ac2b6bdea8759709abdc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asgerf): When the frontend supports it, continue running even if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":1213}}}],"partialFingerprints":{"codehealthFindingId/v1":"184b18d5bc94f11618413c46ff6a3f75025cb5fe29074115b0771daeafc6714d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann): Currently the batch mode runner (which can be found \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":1220}}}],"partialFingerprints":{"codehealthFindingId/v1":"d151cd3738eb6813ce17b50417d8548ee02851d16f49428cbb02f02d3bdfcde9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45558): we should do something smarter here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/command_output.dart"},"region":{"startLine":1433}}}],"partialFingerprints":{"codehealthFindingId/v1":"13e00e38950fc7b2f63b1a0cea7df2aa851a41c5c9f73a7197bae3f8991e0e08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann): add standard support for chrome on android \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser_controller.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"565ff2e752c8d866d8d3acd78ed35549249caa2f2b39506734ae94159d9eda7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Uncomment this to open the dev tools tab when Chrome \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser_controller.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cc90f63bbec6e27a4eeda666580a294ad9e8ae9ce20d34aa4b11cf349136c46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ricow): Add timeout callback instead of the string passing hack. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser_controller.dart"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"88cfd64e0fec9fdab918f8e4ef04b6df6a58c09201dd47edde45900de7e40c3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ricow): Handle this better. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser_controller.dart"},"region":{"startLine":927}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fad891cf6226051561254272bc35088726bdab285d74ba8084912c38a602f6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ricow): die on double reporting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser_controller.dart"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b08719816932adfd5f7edfd3d5c1b2c4d84c763bdeef41524480fb56b37cb6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(26191): Call a unified fatalError(), that shuts down all subprocesses. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser_controller.dart"},"region":{"startLine":1007}}}],"partialFingerprints":{"codehealthFindingId/v1":"a35ce6591369f5ac5faaabf0ca386c8248ed515335bf249dd153991fa0ae2ec6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ricow): We should do something smart if we get an error here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser_controller.dart"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d4cf3a14c6bfe0a55897130d928ba53e78a3f7af079858434e3d0c1205885d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): It would be nice to shorten the URLs of the remaining \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/browser.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"e58b6bce2dba2f71199abee903ff1c2fb3e902bf234e98ec59b973e740ef5a9f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Figure out a way to wait until the adb daemon was restarted in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/android.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9518c92155c4237a1a4cbeb52034fe6e1b96639b564cc0601842e12f29babbf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mkroghj): Some times tests fail with the assert below. To better \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/lib/src/android.dart"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca2e1fe44ceb02948885e2215e72711e3daa63a3e0064619682e0a1bab7e5bb0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Would be nice if there was a simpler way to create a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/test/utils.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd08fc1634411559645572010c1f72248d643dfeab4f3e65edfbdba57a6be2f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): This error is pretty confusing. Ideally we would detect \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/test/static_error_test.dart"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1770247b31489829df56721f1da39040830d3b1253dc65a8a3c390c11d8667"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(55202): Add general testing of CFE and analyzer error parsing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/test/parse_error_test.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"165d1630d18424536c4c5bcdeec8ec420be84bae3a165114bf30211d2529590d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Test other options. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/test/options_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6723c18526ee18f7a08a0439239cba9b773f5dd164a0c2edeceebcc79b68f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Test other options. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/test/options_test.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"82109506d0a2e9fbb65c43f44d7e585ce84ce6f57c182012c2fe56a3717459ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Test other options. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/test/options_test.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"5dcd8f7dc0e977fd5796e93318cde0c8b496fe01f9c705cfff632cb01df2be99"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment repeated across 155 files: The identical TodoComment appears in 155 files (155 occurrences) \u2014 almost certainly one boilerplate line from a single migration or decision, not 155 independent debts. Fix the systemic cause once rather than file-by-file. Text: \u0022// TODO(multitest): This was automatically migrated from a multitest and may\u0022. Source code is not a task system: track the cleanup where tasks live. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/tool/convert_multitest.dart"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2e99509c33caf4cbe3070cff1a15a8bc9ea52f1054cd78a97e9e864e23be946"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Running the CFE command line each time is slow and wastes \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/test_runner/tool/convert_multitest.dart"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"c88ff16e58707a1314b8b7002a732c3bf190031eb6cc7e31d177567294d2d249"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): catchError??? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/testing/lib/src/discover.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"6caf91fa04b4a7dd5e9933f6282297a7b4432b1cd22d887b8c2227bebb7b2a6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): catchError??? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/testing/lib/src/discover.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b349ded4c646a50921341e71812b278f768e3c86e35062df77ced1bcdcb6b131"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: /// Hack: If not running with asserts running the (invalid) configuration \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/testing/lib/src/chain.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c0e11b35e2f3b2fcf895e6def388946bd2b2df07dcb28f81bd862f66357a811"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): It\u0027s important to share the zone error reporting zone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/testing/lib/src/chain.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"c289f62b52dccae9df758335e3b770e75193bcc3a7716c06b8f8bd51a536b327"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/50152): Support AOT dill concatenation."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/kernel_front_end.dart"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"42f59cbc7488a196a06ee756cc1c2342da85b31d302a4f3173d77ceca193b49a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov,cstefantsova): Consider doing canonicalization of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/kernel_front_end.dart"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8d24d824132a410e5b705f83084421cb51c7cf21ce32a6ae9d29264769e834f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(35069): avoid recomputing CSA by reading it from the platform files. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/kernel_front_end.dart"},"region":{"startLine":850}}}],"partialFingerprints":{"codehealthFindingId/v1":"0256732fff390493feab82d39db9d9f35f2c12f870ede2205b8c90b481cda01d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(alexmarkov) Remove this conversion after Fuchsia build rules are fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/kernel_front_end.dart"},"region":{"startLine":1075}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e6d38272fcdbf4bda1baeec1017adca83c3c8dfd1b2b02b33ff1e7dd5524b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/55246): track macro deps when available."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/kernel_front_end.dart"},"region":{"startLine":1224}}}],"partialFingerprints":{"codehealthFindingId/v1":"52a2eb71db252b9891b8d9d06565e250da903ec733962380b71c4eece8f8d0bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vegorov) this needs to merge metadata repositories from deltas. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/incremental_compiler.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"6589debbf7ad80fe0fdfd385704aab841e4257b9f4dd9ea1221d1d2e902caae3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(aam): Figure out how to skip no-longer-used libraries from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/incremental_compiler.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bbf4a107a57073925a368f758b31b781af42737cbdd31dfd85e62be310cef6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): This is for the VM host endian optimization, which \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/target/vm.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"9720ed1613f9c5445adf9b245d4c374b485b2314596a27cbabd5d4e6fe6fec14"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): It\u0027s possible that it would be better to create a fixed-length \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/target/vm.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"92dced70f55f2375297bf3e386319232178733e5cfd1f090062bfdde1584c2f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Call this from the front-end in order to have \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/target/vm.dart"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"376881b2bf51096ea230ddd483ba5aec4bf2aa2cfaa6b6a5a70b86112b4367c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kernel team): The named parameters are not sorted, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/mixin_full_resolution.dart"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"24b5e77db42ecfc4fce12519c3ac1cd8f133ebc8b71d57e9e94f271bac20e680"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34162): We don\u0027t need to save the type here for calls, just whether \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/call_site_annotator.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"706725ada33a82722020c3de65281203e9318e340ec17fee16b3625d6eb78678"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(34162): We don\u0027t need to save the type here for calls, just whether \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/call_site_annotator.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b8dd758e7957094ec54526026c64cd1e31245fe883d55c0f545aa2394ebe82a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This check doesn\u0027t make sense: \u0022dart:ffi\u0022 is always loaded/created \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4678941f4baa8efde4d07c47b0fa9c8a0d2a2f968be0e3ed9b9016047c9d6e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This check doesn\u0027t make sense: \u0022dart:ffi\u0022 is always loaded/created \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"9030198f1aeae62d22580251d720deffa97e12c9db3ec4c02424c17ceae96fc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/39964): Add \u0060alignmentOf\u003CT\u003E()\u0060 call."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/use_sites.dart"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"828c993e58b8b5137dd0dbed5d6fabebf9f214b6f1ba16b4a1d4887f0ec08c52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/39964): Add \u0060alignmentOf\u003CT\u003E()\u0060 call."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/ffi_allocation_patch.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"659d2294449725b611c0b5ce9121ebadce8d066e80e4969c0d0ef4806c48fcb4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Avoid passing [indexedClass]. When compiling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/modular/transformations/ffi/definitions.dart"},"region":{"startLine":1078}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d033475279892088601cb193f9f90e4a69d5d77d3e31918e9af122b2250d5c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/49803): Get this from \u0060package:native\u0060 when that"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/native_assets/validator.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"f38bbc3f0d6b56c180a33964b65445fed93468630fdeffa243530b12df2d707b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kustermann): Try to extend the idea of tracking uses based on the \u0027this\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/no_dynamic_invocations_annotator.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fd726892b33d8f9e17cbb71d3b562986a4be5afeb951a7946635ab9e197e830"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/39375): Remove this extra O(N) pass over the AST if the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/mixin_deduplication.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"59ded48604b714aac193357c646415ee9a025dfc1bf8ddf9db2f7626ef663382"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Convert _isLegalTargetForMethodInvocation() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/devirtualization.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"68a9b3a4588bc100c0a792f6ed3a7f83e8def3905f3c09d9fb5e46403d344323"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: A more efficient approach would be to cache the results per constant \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/record_use/record_instance.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"0346e76f813ba8ea2f3f64a807d36b1988915a11388fb4412f7878eaa099e859"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(mosum): add verbose mode to enable this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/record_use/record_instance.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"a636bbf8738e3103adad735e3ccdd61476b14517c8f2064970184b14300c92fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(mosum): add verbose mode to enable this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/record_use/record_call.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a7eba6f777d68d347ecaf2767d11f4b352c9bf610c634c38abb38ca2359938"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Merge loading units if an identical InstanceReference already \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/record_use/record_instance.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3355391f1113cafe6e7bb3d6a4a49529ed67dee9ba0cf3e9070b87903b8183c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Merge loading units if an identical CallReference already exists. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/record_use/record_call.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa668a6100d064d805053b265406e543068ed3e5b33400ee2c143143aa9aaad3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sjindel/tfa): Extend support to normal generic functions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/utils.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"266d0b51380fdbc7b328efa64a2b12cee67b0e1d50eca7fb3ba69fe5e8e3b952"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): support FutureOr types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce3beda85a9b2b5c4e6e57064285a160080bc9fcb4d514485526551adf5b5c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(alexmarkov): consider detaching Type hierarchy from TypeExpr/Statement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf7c87e01c8deae757be9b97bf5cc4ca3bcab2e2acc339686eefea3d68a3da93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(alexmarkov): Introduce cones of types which extend but not implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"72fdb308338c2f34e1b02670891f452d4928e2037df3768c7fb35313fffef32e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(35573): \u0022implements/extends Function\u0022 is not handled correctly by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1257}}}],"partialFingerprints":{"codehealthFindingId/v1":"080c179d219ca6bc6e808cd0009f019850226c73317e9becbe0f3bdb0361be30"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Handle other possibilities. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/types.dart"},"region":{"startLine":1689}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be81962a852f1352929e0fcde73d841cc8a5da62b764cf3380e2793c21a5b74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/32292): make sure parameters are sorted in kernel \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"25a815fc31017588c89cd334c4701ed5b0e21337f469ee1403de9194259d03dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): figure out how to pass receiver type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/transformer.dart"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"1958fb56ccc1e39788a23de5949139b95a66f65e87c27443a0be32a7e4401b7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/32292): make sure parameters are sorted in kernel AST \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"93d3eaa5a02916e6d72fc0b9227fc334adf09763ba9a9c79a86f6038b7782d19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/32292): make sure parameters are sorted in kernel AST \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e867fb082bbd425b1bce08944fa87f5b45406ab2997f3b0aa04ac28614b1a3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): subclass cone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":705}}}],"partialFingerprints":{"codehealthFindingId/v1":"465286b1afd11c13b1d50391329bf793420889174fbda084b8cffc528666ef37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): subclass cone \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2c415a9c6853185b5a87c16ba5a7dddf0e825a032447d582f5ecfa1f734eb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/32292): make sure parameters are sorted in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":996}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eba46ae95e4c4e36f7a57407abbca2e805f4f687e82a342bc681e8366247d2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Avoid declaring variables with static types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":1333}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d32875e245253d879dc4bb38274c28392cacca4b8496589ccb733eb3723e636"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): support generic \u0026 function types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":1910}}}],"partialFingerprints":{"codehealthFindingId/v1":"be98d000177b16fc18f7e60075984bd3c541dea8d53affcb968fef2bbc2623d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): overloaded arithmetic operators \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":2077}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c05eeacadb72ea340e735c777dbb647a33c77a91651ccfab8d3f43bc1c08251"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): try to infer more precise type from \u0027iterable\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary_collector.dart"},"region":{"startLine":2552}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6dede1539a5de68786f8a58899b7845913cb0425a3d37c0da1d5288d4ba01cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Set \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"134c9c41ed306b06333d9e6d5675fba89193557eb2d60ee70417542f94bd9bc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sjindel/tfa): Support more types here if possible. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"36d3be703352278466f3fd9cd3bbb53718a7796ab5127607f8446f8b526db1a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sjindel/tfa): Unify with Narrow. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":677}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f8324de17089d4d57f0f417fb98386ac65c726473e5c373d9f877a4bed36b66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sjindel/tfa): Narrow the result if possible. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/summary.dart"},"region":{"startLine":728}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2cb7db6c31a06cbd3df6da3a862b3c8632977c752c685762ce482a26b3f70c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): take type arguments into account \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/calls.dart"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"018cf3387238d78bac2acf12d45ceaabd6419f162678b61eb924530e2bc14e98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"1874f90e634d8d647539c16113310e16ed2a2a991de9f8a766f63d2b9121e24a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sjindel): Use [TypeCheck] to avoid bounds checks. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"44e2f9c086b3c71235ddc3ec7a09417223bba034971d2edd479b39cc98f83de4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/40615): Use TFA results to improve this criterion. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bd0da8c0d47768223a84d78cc88ad18601c07abf96f3646b9b6fc6e01f48bcb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Try to prove that static field initializer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"f13bbd34ace313ca11115dc89c93bc0c6bcc43c5bd9a70d552f77cab3a0a6564"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sjindel/tfa): Perform narrowing inside \u0027TypeCheck\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1359}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc5f3a998a0008ae55262e7f1fda6a2413617de8738beffb34f7fc103e1d143c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Rename to _TypeHierarchyImpl. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":1672}}}],"partialFingerprints":{"codehealthFindingId/v1":"58597ff8c12a9a995928b50f29fdc6ffadbd4bc31f1164994e2efd98004fc6db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alexmarkov): Figure out better strategy of processing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm/lib/transformations/type_flow/analysis.dart"},"region":{"startLine":2322}}}],"partialFingerprints":{"codehealthFindingId/v1":"83393c8c53678c358ff36e9dc130b721c42fb361770ac5e572cab7b4139411c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): autogenerate from service_extensions.md \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"f185de4c6634af73c852ec2bc69317042f3c49cd4287d45abb94cb1b093e8518"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): make this part of the vm_service.dart library so we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5b8937760c4162865242e05d5f1b209f97200447dcd4a34033bd7a574fb0058"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): make this part of the vm_service.dart library so we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1d416bd352f71f4126c47c551fb432ca4c0eb3004ce3ba5b86b6417a6814cfc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): make this part of the vm_service.dart library so we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":988}}}],"partialFingerprints":{"codehealthFindingId/v1":"b590ed3dfff03145f984afc2b27513c102964a855521b0211a507eac5d720bc3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): make this part of the vm_service.dart library so we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb25ec619f18be0eb8fabf329b97863af7ab27ff6ef68565f7d3bacb6c548bfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): make this part of the vm_service.dart library so we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":1061}}}],"partialFingerprints":{"codehealthFindingId/v1":"130f3ddf1f3861a94440b68154318e994cdb1d3c0f0824b4f4419b3cbdaa7bd7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): make this part of the vm_service.dart library so we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":1085}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f1ad6da2a2d4ade344270bfd46f497b82f08fb3b3bd75e3d3ee2eba576867c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): make this part of the vm_service.dart library so we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":1116}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a2cf1b61a3c9b18adabf93c3f61aad944238656c7d99116fa30daeeea87a519"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): make this part of the vm_service.dart library so we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/lib/src/dart_io_extensions.dart"},"region":{"startLine":1167}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ebcd656418c5689a6d8b92c70ce38aa1548899029ef34b7e41efa1d98ca86b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): implement operator== properly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/get_source_report_test.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"b722ce9a75498af21527b2630ccfe388b49fb99559626ee3ca26d4925900cc12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): implement operator== properly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/get_source_report_test.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a0d619131690012d47202405b6b22287f10cfe48d798004f41df3b6620d577c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(derekx): runtime/observatory/tests/service/get_vm_timeline_rpc_test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/get_perfetto_vm_timeline_rpc_test.dart"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"51493a773eb6c9757ab606ce073f39c9cdb9dc531e7f2c7fbeaf5b81e3024c19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(57048): We currently pretend that uninitialized late variables \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/evaluate_uninitialized_late_variable_test.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"d048f6ce8562bb44d38ec0fa0dc35c8bf4e5964a4922d6fa9c94138c62a901de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): re-enable after sample streaming is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/cpu_samples_stream_test.dart"},"region":{"startLine":17}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff6e682097690950dc2e72656ae7331d5b24d56524752e3f8cd48048ca3d2094"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan): Implement support for step-out of async functions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/async_star_single_step_into_test.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a6519bb0c831cacd861cc06abbbc6db148cac599e9273ff49b23b3248b492b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): Share this logic with _ServiceTesteeRunner.launch. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/common/utils.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"a70e2b7bfb865ef9d5bb7a908fafd23adedaacf7489cc04119774a317a60415f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove the \u0027path\u0027 case once we move to the new VM \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/private_rpcs/dev_fs_uri_test.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"1913d38271dd5d58a2dc9290f65c86ba43441ae317c0359931708f5af6efe24b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): remove the \u0027path\u0027 case once we move to the new VM \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/test/private_rpcs/dev_fs_http_put_test.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"11b22c955f9bbb1a591913e948610b055743f937dbd79651795475a7415aad90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(derekx): Remove the line handling single-quotes once the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/common/src_gen_common.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"92d600905dd3b5f82990efef11c14e29600f5216e2c567b00b141d5d28fb4ad1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): Figure out if there\u0027s a more correct way to determine a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":1104}}}],"partialFingerprints":{"codehealthFindingId/v1":"741da1127aa2181e3954e81b6219f790f7957929311ab95aa8b1871a5263aa81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Most fields could be made final, now that they are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_service/tool/dart/generate_dart_common.dart"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aa2a5e10b270f7b5ee71cfa47516b4f02ff53dca33a4a8304a1e584dd630a68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Suggested further optimizations: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/builder/instructions.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe50f1f8afd57d9758e490987c88b94f3ac0adf6540a35985287f51f79cd7c5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Make all of the ir types full immutable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/ir.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"d411a4fec8a4035720422fce77a4411011817dee4a79effc74d31e31a17cd222"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Now that we have an IR, we should consider switching to a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/serialize/serializer.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a2447c9a8ab57ba4e98693648be803bd7bb52d25205618036f11373dcff0eed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sstrickl): Currently we can\u0027t assemble for SIMARM64 on MacOSX. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/v8_snapshot_profile_writer_test.dart"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c86a394d04ffc133291f54cd2ffcd3568167c17f8d5f90842f4f9c7979bbb64"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: min, max, and round \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/byte_array_test.dart"},"region":{"startLine":1518}}}],"partialFingerprints":{"codehealthFindingId/v1":"d03f08c99c5ab1f699772ee300c2cd0f19ef858c27a5b1e8152a88c0c9db5f88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: min, max, and round \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/byte_array_test.dart"},"region":{"startLine":5493}}}],"partialFingerprints":{"codehealthFindingId/v1":"55df0feb28adf56e162101fa7ba6e66b9d8f45de9b4de1c777e2b70b6c0349c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: min, max, and round \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/byte_array_optimized_test.dart"},"region":{"startLine":1342}}}],"partialFingerprints":{"codehealthFindingId/v1":"73db711590b76243ea95baae53736826c3c9ab424800ccf4340c420b1d393f95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: min, max, and round \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/byte_array_optimized_test.dart"},"region":{"startLine":4926}}}],"partialFingerprints":{"codehealthFindingId/v1":"de347630a483f0d6ae69ef81f3de6785f3fc188f2cf142288bc8850c6eaf05b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: min, max \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/byte_array_test.dart"},"region":{"startLine":1676}}}],"partialFingerprints":{"codehealthFindingId/v1":"5394a5f9a46818c5afcfeb85c9893204ae314570ef103d0653d7331dba43e9fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: min, max \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/byte_array_test.dart"},"region":{"startLine":5723}}}],"partialFingerprints":{"codehealthFindingId/v1":"3620b17d48091991a527761a5cdfccccb0fd84e98566c7886a0ecc96b311e0b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: min, max \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/byte_array_optimized_test.dart"},"region":{"startLine":1497}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbdb5024807bbe36e9a43e7a714265024a24d6d19ee71b460667bda3e404c683"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: min, max \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/byte_array_optimized_test.dart"},"region":{"startLine":5156}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f0f6a6786ae8ed4fe9cfa7c3281efba147d0562eddd63ef64c576c1679f73f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: byte_array.getFloat64(0) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/byte_array_test.dart"},"region":{"startLine":2104}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd43cc58d7aabba78122219867abc681ad00e35b8f667a04f5cb3faf468f400c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/47777): Send and exit support."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/finalizer/finalizer_isolates_run_gc_test.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"be461f01ef0e75e465c178518f5be70472e77e290e83a909512e74a9092f086b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/47777): Send and exit support."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/finalizer/finalizer_isolates_run_gc_test.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad6df62feb02763082bb2b5e6a93ba7f0dbc4b01ebe02ed6b0eedfe8bd46d46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/47777): Send and exit support."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/finalizer/finalizer_isolates_run_gc_test.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"34cbb9c1c98bc0e8c4b53e6fd127335bc2e5897235f921b08ab405c6b350a96a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50571): Remove illegal optimization. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/gc/splay_weak_test.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dae054a6b32dd4375a1dabbd8266ef68b90860a6ab7d9930fe59485116608e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50571): Remove illegal optimization. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/gc/splay_weak_test.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"33bcb8ca0ed856167da8b93c4d6788268633dfe196f6b4273008459888380a3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50571): Remove illegal optimization. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/gc/splay_weak_test.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"d939999bc670c6e3fd730c5ce2ebdd88130f8df58274219c02dce07e06a78b42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50571): Remove illegal optimization. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/gc/splay_weak_test.dart"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"643c424c4492dc93ae7fbe3b348790a69f1da7fb5d36e86c3907016b586d39ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61310): n = 100"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/generated/weave_implements_generator.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"033250aba49014b54992fb37babbe35987872b55c7b7c2af47b1260561035b68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61310): n = 100"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/generated/weave_const_record_generator.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f0e384a7d8f9dd0a0cee27c066c8edc07c37d43c09c8fd4de8547905d881b87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment repeated across 12 files: The identical TodoComment appears in 12 files (12 occurrences) \u2014 almost certainly one boilerplate line from a single migration or decision, not 12 independent debts. Fix the systemic cause once rather than file-by-file. Text: \u0022// TODO(https://github.com/dart-lang/sdk/issues/61310): n = 1 \u003C\u003C 16\u0022. Source code is not a task system: track the cleanup where tasks live. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/generated/megamorphic_is_via_instance_generator.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d9c852c0736b109a9c0c870d9e37d765baf7bb7bf69fba72ab87d0f70484fca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61310): n = 1 \u003C\u003C 20"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/generated/many_object_literals_generator.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f12dec5bb5fd05bfba9022b1d5f8e2df665c6644a72b15f6f31241485c8b2b9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61310): n = (1 \u003C\u003C 16) ~/ k"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/generated/many_fields_staggered_generator.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"6408b5bdeef75eda6e12aa155d2278f7f7eaa05a76d561355d61caa739d7c97f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61310): n = 256"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/generated/long_interface_chain_generator.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"10acb8a083e1bb4e029af27bf7e5638e8a7a05d58d2c395437ff18507b96c523"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61310): n = 256"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/generated/deeply_nested_closure_expression_generator.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"c55e87f7d306a20649c36fb8f49de017582a8e7a5bed77957f13070362a8d74a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/36983): Avoid capturing more than needed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/isolates/closures_without_captured_variables_test.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b0c999c618f9d6977e298dc5e4aa0eb50cd54269a0c374ab5ab062b399d4011"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/36983): Avoid capturing more than needed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/isolates/closures_without_captured_variables_test.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"916d5ec4b1bafe9f75a5e52327116fe1518a376f9e2bd6d1afc3c1d1ed2f529a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/36983): Avoid capturing more than needed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tests/vm/dart/isolates/closures_without_captured_variables_test.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"2db1ba040bbc8fb8af92f714ca2a5f8438a1599a44fc94fc74268e576de119b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/60804, https://github.com/dart-lang/sdk/issues/60805)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/run_stress_test_shards.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd145a6c1aea3e6c1d66e4a0b7efc06e2b1150265b8bd9d717548eb08103812d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO (felih): this line should be enough but there seems to be a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/minimize.py"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"87d253a694ae0063805f6872240823440ef66f137642979bef2f0348e32d96d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (felih): maybe add void type? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"500dafc5c8939d1816716940c18e732f234aeef332f7dc52f5e731d33859f834"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): Enable operator / for these types after we resolve \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":1016}}}],"partialFingerprints":{"codehealthFindingId/v1":"211f6424ecb3a42332faa7701af7d1b3f969743e071a8b9cda1d0479228d4874"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack: dartfuzz.dart already handles subscripts, therefore we exclude \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc9cf030c04676fd85d5006ce6989102fa36817793fe9736b0a9c7c7c4c3fe6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (felih): Include support for type \u0027dynamic\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":1048}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6fd86440bb2bc6a9bc2602a4af7909489aa0e45b6d87a5d114d11f01962a438"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (felih): no hashing for List\u003CString\u003E ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b7eebe04b6354cc589859a34fbae8c7a513683009ce33a1a9813863126b39e2"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack: remove unary from operator so that the operator name can be \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":1101}}}],"partialFingerprints":{"codehealthFindingId/v1":"dad2b2e32f4802b71e0ecc5c25a7f190d6e68277d15c2d5636850f0d895b6723"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (felih): include named and optional parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":1191}}}],"partialFingerprints":{"codehealthFindingId/v1":"7070edd8e77fc2b1822715039483bb832347855434817da327e22e26fcce4c71"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): Enable Float32x4.fromInt32x4Bits after we resolve \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":1211}}}],"partialFingerprints":{"codehealthFindingId/v1":"c29dec9f0b8caeb88a96ffe35abd8584e7da4f0c10a8f5bd76ee2cc09789d574"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack: Filter out some difficult types, abstract types and types that \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":1479}}}],"partialFingerprints":{"codehealthFindingId/v1":"050b12e3a7265b321bc8b541ab166db634c60d771c4f6b327aa90b688bcddb3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (felih): include filtered types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_type_table.dart"},"region":{"startLine":1481}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca31d7da70f3668be01ba064707115426c8cb408df780f7699726ca76ecee993"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ajcbik): inspect type structure semantically, not by display name \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_api_table.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba0042de4522bc83d7895f799f31a08f5b7ad8ea772cffe8b2ef72ee8a3c8a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fizaaluthra): Enable reciprocal and reciprocalSqrt after we resolve \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/gen_api_table.dart"},"region":{"startLine":646}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed74270f597d04e16d83764321f6cb11a4193dfc673fbd0b3b73cc63df5ff69a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): handle params \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":744}}}],"partialFingerprints":{"codehealthFindingId/v1":"857e41418782476733c444b98681f966d78034da9416f6d46f9f5e80b43ceb36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): fix potential issue where we try to apply a class \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"041034b63f3f839f4078f435978aed5565f3f3e6fcefab12107a7a5fef0087c2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement a more specific heuristic that selectively allows \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":1312}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c0b1b94d8e09ebc61843640483ea6f0c80fab650b5933aa7a78847bfb90be7f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (felih): disable complex collection constructs for new types for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":1855}}}],"partialFingerprints":{"codehealthFindingId/v1":"07e8845c7db70a7ce61bde4174f80568b6c8992fa5ce2fbe9e82dea8bf10bf11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (felih): update to use new type system. Add types like \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":1886}}}],"partialFingerprints":{"codehealthFindingId/v1":"7145fe0066d22c910a38e3dbd5e144317fce1adb7e51622b7e41b905dd5ccb7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (felih): maybe allow occasionally? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/dartfuzz/dartfuzz.dart"},"region":{"startLine":2109}}}],"partialFingerprints":{"codehealthFindingId/v1":"16fe1d65f586802a7fc29c270529b4d9e414f6b57e61631ca174f3ba0da008cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add support for \u003Calt-d\u003E (delete word). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/heapsnapshot/lib/src/console.dart"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e0b119ff850d2f0687ddf7370d0923664593b6e62ddf63b540ed5c64945e65c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/37022): Update this when we get real async callbacks. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"samples/ffi/async/sample_async_callback.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"025d73b2819b42f5e0955a46dd4b714a824af0c2615202d6ac6e163ae101fc7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40614): Remove once non-nullability is sound. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d488b01c08a10db5352b7ab5298f3811388c2a20ba53bf6c13546356a7a5847"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40614): Remove once non-nullability is sound. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":1046}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d83ea518bfb9646541a646b5330336e430d32568e5e9da185ef96b82baef49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40614): Remove once non-nullability is sound. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":1688}}}],"partialFingerprints":{"codehealthFindingId/v1":"894e3348c07d64d6dd2ce0b4f13f8f118cf2bc68a8f0a0067d0e938c8d5e584b"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: // Hack - as we always do index\u002B\u002B below. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"b285e606f45826d959c2471776cdb0e24adbe923f0b140170575b82deb0e2725"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ajohnsen): Make this transformer reusable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/websocket_impl.dart"},"region":{"startLine":962}}}],"partialFingerprints":{"codehealthFindingId/v1":"f21b2a1bbd24d5c302dd74111f13a1e7f1bcd97ad32c064aa8ac21dd7749c762"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ajohnsen): Consider adding a limit and throwing an exception. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_session.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"723c38acd709713c5f505a4cf7c87452dddc631e14d340b5b113343d321ed8a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Make lower case, move into separate library, import with prefix. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"5998540c447b419e013b55ad2e0e6a6b641b43d24e0337cf7229d29579164a39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ajohnsen): Remove _dataPause, _dataResume and _dataDone and clean up \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_parser.dart"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"2082d8bcf39e571df7b8b5d0086c8670c8a67ad7db1a5a316d01857d810aa36e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): include encoding? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"04f5a5b4981b7fbd5ef9ed72344fdd43467028f7aba84952d050e9d5f57d88d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): consider exposing certificate information? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f5c7a75af2f5f8428656019872694a2ac7302417b4a321d5e77c44b20c51ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): consider exposing certificate information? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1519}}}],"partialFingerprints":{"codehealthFindingId/v1":"20ec26b9a9e28c7d50e8a71185c2b9b9c87dea4289de168e8412ca98b68d2f12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ajohnsen): Use other way of getting a unique id. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"7afe40e8885ad6bf8ee091f6623751a78364a77d4eda2619a80a1bbbf9eae180"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ajohnsen): Use other way of getting a unique id. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/service_object.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0282ebcf25c419b0daaa10287b6c28ad9127d05321a89f534a806ce78d4a20f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ajohnsen): Get default value from client? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":1490}}}],"partialFingerprints":{"codehealthFindingId/v1":"75ea5a1fb3b9d29dead945d1b435cf26ffdefa764a7f6a4b198ec9348fede300"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sgjesse): Keep a map of these as normally only a few \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_impl.dart"},"region":{"startLine":3013}}}],"partialFingerprints":{"codehealthFindingId/v1":"775589466379e0f4af90210a70b30ec702fd6a897e213430d47d898582c62546"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39784): no _validateValue? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ecd457fb3a312b705915ec06dbada62dea1eeccbf00b4acc3ddeaa096cad92e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement support for multi-valued parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"f53ec586fbce8277969a56d7827dda79d22a886628c5cff359f2254a0a0713ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Implement support for multi-valued parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_headers.dart"},"region":{"startLine":863}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac742fe627644e87e9ac2cad93d2d60368c869cccfac7af241fa35a441dbaadd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make into literal when it works. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_date.dart"},"region":{"startLine":338}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef137051b8ed71da9c02139c2462cba89ff5b719d802b773e0cd359a34aaef23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Could be stored in 16 bits string if we pre-check that the characters \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_date.dart"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"140fb727919f005ccd4ed7ba0f6d5f2d86087d31890bb1a3b2970d849550a430"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Could store \u0022has more\u0022 in bit 7, making \u0060\u0026 0x80\u0060 an 8-bit literal, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_date.dart"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"a230049f6f3ab6f63fcd67931c1db8eb58afb9a8204123f825ffbb8755482db3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Check that compilers inline these operations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http_date.dart"},"region":{"startLine":685}}}],"partialFingerprints":{"codehealthFindingId/v1":"25f61785575248790630729f24ef75f4ea7c487839a66f89d9184d4cccb19c98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39783): Document this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http.dart"},"region":{"startLine":412}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e5f653a511ef5d724ed9f02e450d9372eb78417974ff5fb96fea85d47595b76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ajohnsen): Add documentation of how to pipe a file to the response. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_http/http.dart"},"region":{"startLine":1066}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6057c2c1b77b3283d8c33d207a46f9b0e47ea6647fb33dd0e9b009312d3f6b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider picking a higher byte count if the last range is a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/math_patch.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0714b4e7cd645e34c7ba97a70c03ff5cb4414d10751b421b8124bcac8dd85e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider picking a higher byte count if the last range is a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/math_patch.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaca69dba07b3d685be87e3a36cb001fd487db391974d382f6f275fa864b8c79"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is totally unnecessary in dev_compiler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e3d1dc729444a4a3c84189b6f1e72abf8342c2332e0efaa09ca8df33e2fe65"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support with clause in patches/augmentations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4f67f2c121ab3e486557add275b3e9ba435467723d795c329a878819fd04fff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Support with clause in patches/augmentations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_patch.dart"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"320be82594b5dc320804d19324e1282c03909e72dbf837f1e0c91ca389243a11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): for now, we wrap other objects, to keep compatibility \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"4882ccf1f596bddfb1919c40820c4c1fac633cc84a0e1169edcf62a1bab552e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Static cast.  Unnecessary? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/js_patch.dart"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"9581da7d1011d33cee4fee6241d13b7e4420578f3d4ac17b754701e8fe375a80"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We could add specific arity stubs for this like we do with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"63fefadd0fc94bae8d5a52bf58507af7e8da4a395c514c65561b01c9b6b5db63"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46377) Update this check when we have a documented API for DDC apps. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"d29a5575f1c1ceec977c7c8ea3a41b274b4b9c4399b0cebde88da57d8165a064"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46377) Update this check when we have a documented API for DDC apps. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"16aaf37172019a67c9f04a8157047708ac1544b0c723bdd61729664a1d1fed96"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46377) Update this check when we have a documented API for DDC apps. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"f08b48a6242295649f013a10a1370b2b3a8bb1c073be151a91fe25d65320e9b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): We should factor this out as future\u003C-\u003Epromise. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"643cc57b74c5707527813641bc1473092487ee27d702766ac03f54e2010481ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Reject or encode in result? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/developer_patch.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"6468f1b25a25156d42f6677ecb271fe65531e1e68f4a3a7dc3c712689fae8d54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): kernel expects to find this in our SDK. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfad169b17228d88f9f20d6ffb09850286146e56760043cde02b83889e9607bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this class is supposed to be obsolete in Strong Mode, but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd33ef1e799ad4d4376ae8f2993223699cbdfbdeacc209b967ee02611a9784c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): don\u0027t accumulate everything before starting to decode. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/convert_patch.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ded2550271dde95a95cd713fba90ad07b0c9ab78a4d294d2b8594621dd7d90d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): don\u0027t accumulate everything before starting to decode. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/convert_patch.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b1db54505c31c965c562cd25bd36e4b0fb8ec5cdfd3ef157e7522b46374c671"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): don\u0027t accumulate everything before starting to decode. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":1408}}}],"partialFingerprints":{"codehealthFindingId/v1":"413ba709ac44eff065acfe3676e8267615770e8778c91c82f954ff6ce6478923"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is a workaround for ignored cast failures. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"660385921af5e6290daaa1695c588718bb595a7a156be79ab9b6b4c3d0eb0685"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): do we need this? It\u0027s only for our d8 stack trace test. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d57e6341dcfc4a3421e5d86bcaee42c05265258fc80301de53c339033f311bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is this isPaused check in the right place? Assuming the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"66c8ad5900e7691d48694ebceae3052beffd9b7d2127bdcd6d0b823d3e20d09f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is the timing here correct? The assumption here is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1996fcc03bdd4e1368f33734fab44b0d644cd6268843102444f98f0d13d6ddd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this logic was copied from \u0060async\u0060 function impl. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2b9d12888bec5ff207275f472475eae8ae7323fc663476d13a03efcb68c61be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(hausner): Per spec, the generator should be suspended before exiting \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2db830035f295d278f339982f0c3502c8bc186ba91989e43f6d15a4faa7b286"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Recognize \u0022tail yield*\u0022 statements and avoid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82c34e10ee3aefdbd3bce0619bdfc632c2f6ae05f805a9a0855ade0faf32cf1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Recognize \u0022tail yield*\u0022 statements and avoid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/async_patch.dart"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"b75d2cde2829c0abb589a61b5f69802da71820edf9a1dc9d6a0d42eba70fec93"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Is it safe to replace this operation the JavaScript \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1241}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e021bbb6fc41eafabbb088e8d367b32d2689bb710af178d9bcbddf7e39335aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Is it safe to replace this operation the JavaScript \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/native_typed_data.dart"},"region":{"startLine":1602}}}],"partialFingerprints":{"codehealthFindingId/v1":"cae69f4c555cd7733cf0868ea365241c2bdf0545d046799de1bf6400ed58180b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This method shouldn\u0027t have to use JS. Update when our \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_string.dart"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aadb88b29ae03652431e393ac52060a77e12090b1d1f0449a2fcb18ebb63b78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This method shouldn\u0027t have to use JS. Update when our \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_string.dart"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf4cee162ff2e936e036e5c61e60d9375679a54e5985fbf881caa8d9b05b599b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Move the bit operations below to [JSInt] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"127cff83982e3dc4999ae74867fa255e7608c0ace5794d7d40e20c7d65bd9178"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Move the bit operations below to [JSInt] and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_number.dart"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"09c45bf65a69c5957f0cf7928f393d83306ac1f45c3dbefe1a5fa55bd10dcf6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): all numbers will have these in dynamic dispatch. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_number.dart"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"908f4d75ec340c811a7733053c43105a4bc1b78260ac0018c55582be6513b0cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Is this ever useful for DDC? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_names.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"380d70d6245fe3f8bdae3055766e06523f36e009702cb8ccbdd71675948394ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this adapter is to work around \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1a7471937c3a054debf51f2db90cebdfb07c7d5fe5ad6c2fce066a60e9cd6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It might be that the match failed due to unrecognized U\u002B0085 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"906a60c9481f218930a7b65287cfa9fdd63529afa081567b50df9f0343f609ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It might be that the match failed due to unrecognized U\u002B0085 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":345}}}],"partialFingerprints":{"codehealthFindingId/v1":"76b1418ef5c475f289e53632abf4cc72f6a9a43e369e3cb8dcc28cb75df3b190"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Consider supporting properly in non-browser settings. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0532ad67d946dfbd890d8f48feab2c139a7c5179e0e5a823d3d0b5ecc6a2867"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use JSArray to optimize this code instead of calling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":649}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5fdfdc3e29a909110b599bb05ec7eb2c78e10bbb28845e853fc3cdeb4d063b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use JSArray to optimize this code instead of calling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":2190}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b7a4fe7dea3b088690527392e103efefa78971755fb41d274b1c23af463e0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Use JSArray to optimize this code instead of calling \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":2204}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a7098c23f058a6b8242bdba5e7508d36cf7ea937b42c8e930db7d9222c1b0d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Use a secure random source. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":814}}}],"partialFingerprints":{"codehealthFindingId/v1":"d260cd1e389bcf61bae05ab3662d298df738c72a21319b583b65e42b1f5758c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Use a secure random source. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":3198}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d85518bc18bd14fa7e0e5347c3498c221af796318cb5d5d8543e6d3f14c3323"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Detect this more robustly - ideally before we try to polyfill. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"852ba6515661f42955aa59ee0d4df04a59b285b5600253ac246d4e8c46f5b7cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): could also get this off the native symbol instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"1af4625f1bdd52bd66e102f2950bc2b1befc57b9dcc1001c5246aff4de39ff47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is this equivalent to _nativeSymbol toString? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":872}}}],"partialFingerprints":{"codehealthFindingId/v1":"519a5b898c60f4252c235ae69ea5bb5caeb573d924ec9c4c33fd90cd87009720"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48585): Move this class back to the dart:_rti library when old DDC \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_helper.dart"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee592095d4b0d2fc8eff16afa3878f531cc971b37252abdb8e895af4052c9490"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48585): Move this class back to the dart:_rti library when old DDC \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":3967}}}],"partialFingerprints":{"codehealthFindingId/v1":"c47678d56bea1168dda03eb079f29b382d44d23a9f28375898a4e09bfc68e992"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Move this to core.List for better readability. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde80fbccf07848bf798777cfc9a8be5b2e3814dc3bacbe871c935404a67c041"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): consider a fixed array subclass instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd46ee84d90779819fefc056920c08b1634567e799d7192f129f60f5dd8a65f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Replace this algorithm with one that retains a list of ranges \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"374e298d1d28fa5a16271b5847d4f164c4cba2ac5dd8ce5503e6c26bc5a60f6b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Replace this algorithm with one that retains a list of ranges \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab521c5fc0ca7e91b8f341666b3a0ccaff00deb0d1482aa3f23900df291fa6cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): Make this accept more. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ee1fe71d476a42ca4fe21fe37fec2e4f71bb28ae114d2fe2c4cb61f3cf04183"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): Make this accept more. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bb698a08dad3e636831a57b926dd9a3284d2a3c40862870e02a76e34d9973d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): Make this accept more. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/list.dart"},"region":{"startLine":385}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4e4632cc38f0bf8ca5248a5827985dcc0a7e666a9c3afc449104c3282b8826a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If [from] is the same Array as [this], we can copy without \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"b296c1485b803db261773b21054708065842052c4f0490b01aa53ed5955855fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If [from] is the same Array as [this], we can copy without \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff46b16c062a9417da2015928ac86836d6c7d79a248f0c4d257e9e4a50d1a94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Remove this test and let JavaScript throw an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"28fcc6cb4cd41c81685c5ee46eb04137a847c4a479e6d286d9c0b4dfb40c22d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Remove this test and let JavaScript throw an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/js_array.dart"},"region":{"startLine":594}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5be054d8a38f6186f2c5ae8b2f0782c5acd970bd23cc0a582e482c5fb2a7ca8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Remove this test and let JavaScript throw an error. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":759}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0140c3d85a9a7dfe40762bfacd7224146c06630a06c99497afe9d1f031a197f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Other libraries import global from here.  Consider replacing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/isolate_helper.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2fc94203a123173056eed792eea30d34f518946e25cde5ae963b6ea71a36af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): remove, this doesn\u0027t do anything for us. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/interceptors.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea1ec2154f85ee8a5c90233d300beef4f9494ece7541fa0875d57a8e1ce24a87"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Use as a type mask that contains the objects we can use the JS \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/interceptors.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd93b92f5948a049f6d2499e9ed553ff06f7b82f39491febca4718e39f214a39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Distinguish between null reference errors and other \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/interceptors.dart"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"30e43293984ce41f6b8cb1a26a3ca0535f666ef6d7a341cfa32640a476f771f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): We can remove these if we canonicalize all tearoffs. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/interceptors.dart"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"62d327b13b9d8dd774dad6a14f2243e561acf51c2fa68475da326a4e33eac2a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): revisit whether this method is still needed after reorganizing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/interceptors.dart"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecf49276cad570649248a4d45c1f05ccd8f811f28fbc5c527bcc9a79af89e492"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): In dart2js, this is guaranteed to be unique per isolate. DDC \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/interceptors.dart"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"87ad21e4d1f12f6312d5564cdfd8aa5150864a997b7a27f724bdc200362c94d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/53162): \u0022bigint\u0022 primitive values might be used as"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/interceptors.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f6f66316d739acafdbb9fef6c10406f042c71e0855fb5cb86fe7188c990f81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/53162): \u0022bigint\u0022 primitive values might be used as"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/interceptors.dart"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"6afbef14e82d0df2a590930521a5744d8d94bdccdc289dd72692a056e0647d53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/53162): \u0022symbol\u0022 primitive values might be used as"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/interceptors.dart"},"region":{"startLine":370}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ceb4b7efa82a5ca9cab388a1572203e63ab14c15979aca85b818442c271d56e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/53162): \u0022symbol\u0022 primitive values might be used as"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/interceptors.dart"},"region":{"startLine":575}}}],"partialFingerprints":{"codehealthFindingId/v1":"517f83a494c0abe3dc0c2d7e378667a160772c49bdccfebcb5c8e13a03b8480a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): remove this in favor of js_helper\u0027s \u0060@JSName\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"6339843bcc2582012486555d1fd6a8ca84b9f42d580c2f521ffba8315478643a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(sra): Replace this hack with something to mark the volatile or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d3fce3ba58cb8d35fd93b5a8e171c922b6103b0a53e9f5eba18ad4dd5c40ccf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(sra): Replace this hack with something to mark the volatile or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/foreign_helper.dart"},"region":{"startLine":288}}}],"partialFingerprints":{"codehealthFindingId/v1":"34ada81b90bfb6c689800c12c7d57848deaafec6440db03edfe753a177ce56b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Replace calls at compile time? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/foreign_helper.dart"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"d087f616e487661fb29761aeaff3a3e78d09df08007acd64a2360314f926346a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): move this to dart:js and fully implement. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4f87ee04b1650b3d68e616d6f40ec040472b709ee283753b3634200fb66c104"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): consider adding runtimeType to this list. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"af107d885a73e26ae32405d2d6e5796321d11059f363e5e9a20561108b657520"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): it would be nice if there was a way we could distinguish \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ad4c679c53376df1ae60f691b8b996d275206bcb5c3bce09f3ba4f7022f7eb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): define a SimpleFormatter base class that DartFormatter \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":379}}}],"partialFingerprints":{"codehealthFindingId/v1":"99099f03ebe6381537074215ed7b2695fb7185a03032f34f75e64017506363e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): be lazier about enumerating contents of Maps that are not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":784}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d1f0520db9b0d0b34243c30276934d24bb0c81b1525c92f5193f2ade86732c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): handle large Maps better. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":786}}}],"partialFingerprints":{"codehealthFindingId/v1":"e148e5b872243b4d0e03ff651e7e6fac0b52321ec3123f7f2838e17da7a1f4ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): be lazier about enumerating contents of Iterables that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f5e32127b65e6b92d7f7a4111d5febadaf8fa7a553e073db6f8f77ab3f9615a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): handle large Iterables better. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"79524c5d16cc8cb2e94438ee9bffb831ba1c353196af3e1076787cf297041bc0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): consider only using numeric indices \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":820}}}],"partialFingerprints":{"codehealthFindingId/v1":"62453a9cd9c601231097447de2e94821bc52c3951ab1d068c623252ba69f47a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): provide a link to show regular class properties here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":823}}}],"partialFingerprints":{"codehealthFindingId/v1":"d52b0768699fcfda48de42b23d0baf71ebbc63094a9c44c0097b2cb8f0f80c08"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bmilligan): Display the signature of the named constructor as the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"2892b34510be0b220c5135246dbf3b9411b078a0b9443c8877d06765f4d450e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Pull our stack mapping logic here.  We should aim to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":916}}}],"partialFingerprints":{"codehealthFindingId/v1":"60c6ca511ae9433addbad596c0fa272ad8bcebcff7e1f26f9108fefedafb7490"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): add other entries describing the class such as \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":983}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbe7583393b7df8bbc2dedf6357473e1bb44c7e14f3932545647fadb9631069b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this can only be one value. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":1009}}}],"partialFingerprints":{"codehealthFindingId/v1":"269c70b14d2816ebaed10778276ae9a4c6b0e013ad175bbb724c0f19901e360f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): add back fields for named constructors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":1029}}}],"partialFingerprints":{"codehealthFindingId/v1":"568da6ddb8f3e8802c1b9812bb775e0f1c7eb61e8600c044a539022075244e02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): these are not exports because there is existing code that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/debugger.dart"},"region":{"startLine":1064}}}],"partialFingerprints":{"codehealthFindingId/v1":"49640c095c78850cc4dbed40284c29977bab80bee9581526a6934bc8ee62d6f2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): there is a subtle difference here compared to Dart 1. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_set.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"31ce1a54e6ac1d84e723b323af8cd797895ab52719d4cbd0bdd3b402daf8e927"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): a non-linked custom hash set could skip this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_set.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4fae18f2758cd0381af459fcc8077a415ae29f14f0a301b1a5de4e3b0e6aa2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): it\u0027d be nice to skip the covariance check here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/custom_hash_set.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"1efaf6e336ffc76bf7b69ff874d5352189f155f189995813014857344475d13b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(leafp): Consider adding static checking and exposing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/annotations.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f468edad80b771b76f52caca319b0fd4dd1897452646c7733b2bf716c59d54d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ochafik): Rewrite some of these in Dart when possible. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/utils.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e854c9dd6024f693f8be4b8c373a1b41e12f93b3e2bf304b6649c95652f8b66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): investigate if we still need this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/utils.dart"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5514fddfe73c98abd74a4514afac2992aa29a8840970b8134bf27d5ebeeb1a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): investigate if we still need this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b69faf1b68d2460299c0e728b6f4a05b8fca02f05340a5dc894c464724bb065"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Move polyfill code to dart:html. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"49c5ebba12818d8e39962ef6c6d9e134ac33f57181540914bc367ff32299127e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Do we still need these? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8386fa3499c20e777efafaf7b08a42ba322dd7c383c43039eab69e2692a2d65"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider whether we should track and cancel callbacks to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"53b0b889fc70e4d194e635047f6318be6a1966593a36b3be662d8a1483b410a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): prevent DOM callbacks from firing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/runtime.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc28fcd8b3bb723d624fce07ab7e8c97284f2254c6411880c4f3a3d92f1df2f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: ///     core.Type.  TODO(leafp): consider the possibility that we can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fd77210bbf1c4afe3a0cb20a547b3d90bb8d421d31bf9828372217b5b48858a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39630): move these public facing APIs to a dedicated public interface. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2884c9707745a0847e343424268d513a24d42b024b89d59c2819c548fef302e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Can we optimize this cast and the one below to use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"a172443ab74176351eb505446f138e748034d6c7c9cf5bcf77ca068035bd5890"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This is unused with the new DDC module format. Consider \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"3001e36427f34e7accaf60ac5d619525ee3a90d1e15db8c451cc79c2f64ec8de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This is unused. Consider removing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"f835b9fc2be2ca02ea384a5a41a223d0d0ba029896e96382d1446774f2f86156"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This is unused. Consider removing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/rtti.dart"},"region":{"startLine":361}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fe7c4e830680a3a6c5da82f21abad4085f042aeb385d503fe52bdb1e3cc8985"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): remove this in favor of _Invocation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6acd1b7a9a073c2d556f171812dea8365856652768e62de6b8e36ab7d59e0d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(markzipan): We can\u0027t use a JS WeakMap to key by method context because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bbad5e05e03a13cd1665ba89db07362451310f93bd06c6321b6fcb33e7b7d92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48585): Revise argument types after removing old type representation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"c01694bef183c51552896125d88012c6ec7d926b68b3d0193b4aec8f08b05590"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48585) Revise argument types after removing old type representation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":550}}}],"partialFingerprints":{"codehealthFindingId/v1":"b46f817be7225351ef46c588a990b89d3d6271c99d5a0cc11efb2d45379ec5f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): Allow JS objects to go through? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":603}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6faa0b5784df1f2cbf114dc3e8311eb653cbd6c448e4f45a0c32c24005b4c2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is there a sensible way to handle these? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"aac434014b3ed4abffc46f53573ad0cf479bd37e3a614903cfbc3f7abc1f32a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Potentially we should be checking arguments to static \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":758}}}],"partialFingerprints":{"codehealthFindingId/v1":"824e9a4c98bc5a10bf1d5c55f054ff5e79468179196b0292afde3ef49c578502"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: would it be better to just pass the expected function type and test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a577fb4d938e4a912de86479e20955ba18eac2ae3588bc1eef0e846e5738791"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): Recover if no type arguments were passed but some are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":767}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea9e71935b17ae8ffc89813ad0237fba31248ae06fba6571d39c192ea6bd3256"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): warn if there are multiple private members with the same \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":847}}}],"partialFingerprints":{"codehealthFindingId/v1":"b194504f6ddffc3825b4c5b135317ead0906e5d98310fc3c2351a9ef6a10bfe7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): inline this, either by generating it as a function into \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":920}}}],"partialFingerprints":{"codehealthFindingId/v1":"67b6c3b087fb766c7b9a0ed34f7565325cc70722a057958f74241fc591eddc19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): This table gets quite large in apps. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":954}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d7b70c1dfe3cd80e68edf697bd111e76cc962d58af31f2d19269a1541066535"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): most of these maps are very small (e.g. 1 item), \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":1036}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba80c1ad4e959a3d561664b7b5d075a35026ff769b20ee1fdaa37444d224f90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): there\u0027s no guarantee in JS that names/symbols are \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":1070}}}],"partialFingerprints":{"codehealthFindingId/v1":"059e8b382e4e1172197056b554d66546b9505a06671af08721d789c2d341a50a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): It may be the case that the reified type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":1087}}}],"partialFingerprints":{"codehealthFindingId/v1":"5062d564f5ba82d938523aa80b7f138a895d22f642e29e9ac39f1b5630e213d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): is the argument type verified statically? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":1215}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ac54d94eb8b58838fe708a3af5704e66f8b84bdfb195dc7ee94d80aab5ba7b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Replace with rti.getRuntimeType() when classes representing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":1260}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf5c55dc0c5cb5fc6a1ada1457ebbe5c5125ca5df76adb6688b4f265bf89d979"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): instead of an adaptor, we could compile Dart iterators \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":1276}}}],"partialFingerprints":{"codehealthFindingId/v1":"196a4849e41dbb413128129f22b0dae51a8a544b8dce5bd868b1e19339b82064"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): reusing descriptor objects has been shown to improve \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":1432}}}],"partialFingerprints":{"codehealthFindingId/v1":"79eb9318d914406b22b893a669ae4c3817494637be03ec2d60fff3a447228d3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Add link/patch for instructions to disable in internal \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart"},"region":{"startLine":1511}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e3013d7c073529d12e81fdea9ee25b9f390af19eadf03e6f14f928521c2910f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Cleanup embedded strings and extract file location at runtime \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f86970c7d261cda0f53d4d3c7b6c8582373422ba22aee5bd199c284ebbded0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Per spec, we should throw an NSM here.  Technically, we ought \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"70a1c555e4ed9f2322a02270e7c205482aec6f3b5413028a7ca0cfc22ac22681"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(jmesserly): Dart Errors should simply be JS Errors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1d705b22f3e73a0ffa916fa26a744ed48894d65829a5894b004539730258368"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): remove when debugger consumes debug symbols. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/debugger.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6d725cb9b70a570fccf07ff0591befff943588282940016ce881fb0d83705d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): remove when debugger reads symbols. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/debugger.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"baf72f0bd7ef8872b9f72ccd28b388bb1593e5e1ba125ebae4a267ad6591a1d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Field \u0060className\u0060 and \u0060classLibraryId\u0060 should actually be \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/debugger.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"94455dbdf0835cf66749545660dc342a41415e8d5d2dfa44e716bb66a55266ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin) Add final, const, and type information. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/debugger.dart"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"4804429f6804726be1bf46089bf7b2595d7d6023ecc6d4952bf35ec53e2d6e3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(annagrin): fix in the type system instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/debugger.dart"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"970af6bc51cca9192e232de530eeffe5f8d17879608a889e4f493be03e5d87d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): remove when debugger reads symbols. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/debugger.dart"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3681da95e3b4bb59a20b931cba88270a605c379b641c04af6830ca18c12ab2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(annagrin): remove when debugger reads symbols. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/debugger.dart"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aeb19eafdfa86893e9d9698de47a1e8b2ba9b07a896cd395779bb8dc63dbfe4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(leafp): Consider splitting some of this out. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"c29a7c91c2b899030831e52ab5c8189de4e22fed4da19661c24e784cad9bba03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan): setters object has properties installed on the global \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"316369b308e6e152bd5fe4ca50e2e757ebec33051253337fac99e0ae0c5a87c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): essentially this gives two names to the same method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/classes.dart"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1318af1c695db743fac701b84756275b3ffb24b3745a048b74f3e2e61effe40"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Find a nicer way to do this, e.g. unsafeCast. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/regexp_helper.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"474923f8f0a1be80c88b50ed8df8f0992d57de1fde3e36e748534e1cd6bc0f9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): Replace with a Map view. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d9b7945565efe34ef2bd6c09885b2d272bff84eec9bb5025d18d2d97c21617"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51040): Consider caching. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa56521503a32294b31b7fca2a30f970362e4faf4ee20aa9a2b3ac2bc237ec58"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): The Rti recipe format is agnostic to what the record shape \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"91f53e0972e9a431b4efdf27af897e0677435b4ced0cdc4582b7ebc4de1f6d20"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Generate this class. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"b12fbec7adffe68f5d0e67500bb78eb06e7e2ee8afae0805ee8330d25a685a60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Add specializations in shape class that combines is-check with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f497db98029ad99a805f62bcea31b890f8039d081836106b573d06ecf0923ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Add specializations in type specialization that combines \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5fe1a25d500d3a7ea7af0ecbde575d75734fb28db80d274e46aedc7a4bd87e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Same as _Record2. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e109b00a1d48ce503179b4afd2083f03943bdf5bba0daf0092a323cc1332ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Same as _Record2. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3d5622769e412bd0125ef81c0343e5bbc3f28eca067d7d7fdb0fc4689fb2ad2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49718): Incorporate shape in \u0060hashCode\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"21ef9f633faef7bd813898aab4b8540e398a502bcb147f43f5af77b96cecf0ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50081): Can this be \u0060external\u0060? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/records.dart"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"43ca87f02dd036a68529d30c03039d37ddb0b78629d50a328af987c0547a0bef"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider always wrapping the ArrayBuffer - this would make \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce15e658d49c9295e0551e77de005ff84227ff0f7df11fe9a6f240c96888e70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":642}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aa89fc6b4cea50161e0ca9893ac2ef81c836bdd6e42848ddc270756f8885930"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":656}}}],"partialFingerprints":{"codehealthFindingId/v1":"32941d127a33c9b0369bf50f7e73df39c45af212bb4e25d8055d857839cb7168"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dec109e14c43a02b48a5c132d6244cdc36f4d9c8ba31067b403605b2c8cc0c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":688}}}],"partialFingerprints":{"codehealthFindingId/v1":"79aef02899f961f576e27fbd3143c97cf52fb4e1652d580a0ed3da2110940fe3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":723}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09ba42956b4bc66b1765169892c8d6e7775d0124f05235d3a17b52f637bf1d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":738}}}],"partialFingerprints":{"codehealthFindingId/v1":"39c171287f5228619a87e64093e43bfad08c1d2fbf243361581daf319dfe3773"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":782}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0607746c53cde7a637c52edc8b944e90e60b2535c62a8d58058eb2a749d26c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":798}}}],"partialFingerprints":{"codehealthFindingId/v1":"4caa3b5d64982667e76ce2cecac9fa984dbeb8dc787a11474d195faae4c2198e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":815}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cfd80c385a880bf6e166a3dc14891f0ba426bc7db54aa398ba7af85242a6644"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":832}}}],"partialFingerprints":{"codehealthFindingId/v1":"6168fa5cbe6f65d8b4d627c6412f7b38175be591a9de83c2a47ff8a2ce3151e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":860}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7dfc7d03c3eb9a74b8f7b125a358e32653e3ce953a059394d357220be713276"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa296a94288f85fb491d554360bec780fd834b3ba6366d403e0948d5684f9e34"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":894}}}],"partialFingerprints":{"codehealthFindingId/v1":"25e33fd25459a74a8c715ce2800666d93373ecbc965c2e1d3cf9c79457806eb6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56062): remove."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_typed_data.dart"},"region":{"startLine":922}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb637afd1d568bc639bcf1dbbf9c0b98c9e0864b0135f44624909d1e02461f0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): stop using this method once our optimizers can \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_helper.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f9a8ad5f932b1161bab149e8820464b9cc49d0b644ee9024743d07536a9cefc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Is this code dead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_helper.dart"},"region":{"startLine":59}}}],"partialFingerprints":{"codehealthFindingId/v1":"48d1aea9be16ba89f6780203702b615e2b70ffe076d6af10937cca5e8111fc7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use discriminator of tag. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_helper.dart"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d07dad56a370b48898c6987d7e9d3ba44dc63601d30ac38f112cd674ef375c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO: Implement and describe dispatch tags and their caching methods. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_helper.dart"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f69cc95d2bf0d5c99ea53a81c60c0f7e95af84a689fb0950d35b8f43227b5be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Update ShadowDOM polyfil to use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_helper.dart"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"30d47fdb3082e521b8341f28ccebd75b27a03b9a995f0e735677ed2798a68d74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): These code fragments are not minified.  They could be generated by \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_helper.dart"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"17331402b7d8ed722e89f26f71ae1b81cdae586dd09c7f5075e9ac780fdb2c77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Recognize jsshell. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_helper.dart"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0b25a81f6bdb2e0e828d9e02c24c82611df38c6146d05966482691c2a65b43a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(antonm): remove a reference to DumpRenderTree. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/native_helper.dart"},"region":{"startLine":498}}}],"partialFingerprints":{"codehealthFindingId/v1":"96492ffe59acfe46059fe1240da615eefdd6f2294762875df985a6eceafee43e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Support specialization of sentinels based on type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/late_helper.dart"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0023327d5dd987fbe0a4cdc8310275cf88acb5f8685d6ef8fb97014e041ad6c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): See if this can be optimized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_string.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fab62af56c26f6b9d2e39ebb47168993af38b8636286e98b6a78ad33c88da09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): See if this can be optimized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"30578c80a6bf8bcae5f47d78f28ab4b7eee4d58c94d4dfa858af80caff4a84c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): See if this can be optimized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/standalone/embedder_string.dart"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"de90f0a07e90b920fc7f7c2c00a26d68ba0128b50be3ddeb0eb6c80295a7aa04"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Investigate: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_patch.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"0742cd010ace7d16dda8a4b6744f78ba27fee4127acfae1c3eb0ca14e84213d8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Investigate: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/js_util_patch.dart"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"94a17e4c7aa701dd175dfa381cd8f70628929998f5f2d1ea940e03eee5a7b2f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Calling _hasOwnProperty to work around \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_patch.dart"},"region":{"startLine":445}}}],"partialFingerprints":{"codehealthFindingId/v1":"833a5feceb0987e491d05f659117583609b05ce08938c0b6b072f2b289708338"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): move this to foreign_helper.dart or similar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"228b52887cbfbc90adbb4108abb2912918be1b3ea66d85a3d16887bf9356a55e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): move this to foreign_helper.dart or similar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"0503684b57f97cc14047542d4161dc0a4a40b5f92c26918947fa5036df42a2dc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): [types] (the number of type arguments) could be omitted in the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"52d9f4469903dd28ca33db5fd06e828ad691ed098bb0b3266eec3882399ee369"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): These methods are GVN-able. dart2js should implement an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":842}}}],"partialFingerprints":{"codehealthFindingId/v1":"e507ac74685cf40feaf4202accbe0a9388bf8bfdb1716a0840bf2ed9bdcc81e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): These methods often occur in groups (e.g. day, month and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"03a247f6e21569708ebbc79e1098c387422597d1df3b84b2f0cdc96dfd3b4263"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We would like to annotate this as @pragma(\u0027dart2js:noSideEffects\u0027) so that loops \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":1516}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4206dbd754fd45bc36b92d56f74e83aeffe79215cea4c295e7097243df0a83a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Translate to RangeError. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":2075}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ec69d76b8f516379b9cd0fb3cf3cee7b2d33d070bf8d0ad7178c8ffb2a28f0c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(ahe): Don\u0027t call this function when building constants. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":2348}}}],"partialFingerprints":{"codehealthFindingId/v1":"03cce07db97e8ec257efc1b122d5e118a5dd09d1270e7c91ac3063d86b1f34ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Cache the prototype to avoid the allocation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":2450}}}],"partialFingerprints":{"codehealthFindingId/v1":"95e4582b01f3f51fdedb54acb7c16789d57109533fde94a50d1efae9b619adfa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Can this be removed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":2499}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee9df76a99596f72f12871fe4ac55e5d2170b8c8795ab5097456597f49fcbc32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Recipe for static tearoff. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":2594}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ab1dcb79b58730a4dd13941ef1c9616a3627405c1a951f0e3ddfebeb39c80ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The fragment emitter could call \u0060Closure.fromTearOff\u0060 directly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":2929}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae9179af79acb448966944ef9fc5a85f8bd31f8e8c3cf092897a7ce9e8c44186"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): When minified, mark [_name] with a tag, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":2997}}}],"partialFingerprints":{"codehealthFindingId/v1":"11afebf99f4105a896f68a25ff6629631793cbfe56ae060a4d0de105bca98558"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove this class and call noSuchMethod instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":3184}}}],"partialFingerprints":{"codehealthFindingId/v1":"40aa830b9048824d0f3ff5082f06eec9553ff79a79d2ad3ffe176a157bf3e5b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29572): Merge small parts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":3304}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b93b1bc178cf1e136026892a9c0d01b92611e558d34154915da3221a93925fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29635): Remove duplicate parts from tables and output files. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_helper.dart"},"region":{"startLine":3305}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea00235905966553464a05f037ea83dd2670de74178daeb1e9478dc812cfa955"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): Improve bounds check elimination to allow this JS code to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddf3627a6d2069b1b0880977f611600eb8a578d51520b7f68419f3ec100695bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): Improve bounds check elimination to allow this JS code to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":315}}}],"partialFingerprints":{"codehealthFindingId/v1":"eac06d2a3e99ca95fd99f680982612e11183695106a689d0b04f1347f954780d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): Improve bounds check elimination to allow this JS code to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"7538c8812b7ea40376dd94477629275ddce9ef9f384fd51bbda5dc97247999a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): Improve bounds check elimination to allow this JS code to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":369}}}],"partialFingerprints":{"codehealthFindingId/v1":"de0fe7e8705ebef5dfec7945166317c4d08f205cd9980571836fd166773dc229"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): Improve bounds check elimination to allow this JS code to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"1233c75baf442abca60f69182cf859765f3784b3cf22ed1f73f9905a4db38fc5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): Improve bounds check elimination to allow this JS code to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"47253d006ff2d2a02f3cfbfac22c0f85b995a9e688bf32a2aecceab16df5f439"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): Improve bounds check elimination to allow this JS code to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"341f7e9da757d68a2b9f9c56d58dfb301390eaa033603d25a731423df1736868"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): Improve bounds check elimination to allow this JS code to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":561}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d2850131498fa11259b1663a9defefe985a0db6b7b6a4e3288725a80a301b48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(22407): Improve bounds check elimination to allow this JS code to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":573}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7b4c218e8dbf3dbdc1a55eeedb5d98b2558a54901adf2b53f0607baadbe385e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): This is not specified but co19 tests it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_array.dart"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"369d62c9f2d1360c78c84ff412d44c893d178e15c3171409f5d60896ebfdda78"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): It would be nice if we can generate these and the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/js_allow_interop_patch.dart"},"region":{"startLine":336}}}],"partialFingerprints":{"codehealthFindingId/v1":"733fa99a0b8535f0a607274e2f992aa17563ccb3f989098af00fb6ff53eb82ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The discriminator returns a tag.  The tag is an uncached or \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/interceptors.dart"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"e83d65f648808f0628e1c57c6a89ba83c270548036bae445982d838fdf6687e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Investigate caching on \u0060Function\u0060. It might be impossible if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/interceptors.dart"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"083bebe202190469467b6b1e351fd5afcb3205c50d08698bcf4dd6c3b451050d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Investigate caching on \u0027Object\u0027. It might be impossible if \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/interceptors.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb5a2ca3da5c2fa9940cd6e1314e8f615d691ef7cc499f5fd64b468dcd587905"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Copy some metadata used by Function.apply. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/instantiation.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"57e57c22e8c4fff0cacc0767781ffa4e06eae42d37f16f78c2ef4e2d31d53c0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Find a better way to do this. Generating the signature methods \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/instantiation.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3005ec949c398930f27ef3551c7448eb5b08a9269e189741c25d2a69fb92ae4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Refactor Closure formatting to place type arguments inside, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/instantiation.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e8d4e92071ca0690f7232900635b29eaba4aa7e4e46ed131c1617267f35e4fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/developer_patch.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce40897113459b713aed718da5df8343cb04229bdaba4abdf229c430d0564607"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/developer_patch.dart"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"77bbd72513b1c3aa52c8b8a2829249431c4df9bb7740cb16b02a216db3479ed1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/standalone/developer_patch.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"702637c2a91749da227e54136b513a12ecaacdaa05af7e7fca7728a3d7402e3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/standalone/developer_patch.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6f6e9bf8a1dfbdd408fca033499a34c56ca89a9230d30ddfa155a047dc95f16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51366): Make \u0060is Record\u0060 more efficient. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/core_patch.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"ecf2665a90f69b5e29d10bc05b52b6e3d09b47c6830d7d05961ec199b2318c65"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51366): Make \u0060is Record\u0060 more efficient. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/core_patch.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"c66ce116f2e574b564f11289abf098718edd0a3304fd04b3078f4be70306fd0a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Consider using \u0060Array.fill\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/core_patch.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"83589113ed347e6b99c6c466f93688b7d73d26ba1d275870ca8f08aaad559e7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(41383): Optimize \u0060is JSArray\u003Cint\u003E\u0060 rather than do weird \u0027casts\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/core_patch.dart"},"region":{"startLine":439}}}],"partialFingerprints":{"codehealthFindingId/v1":"e82f48fcbf95145043ecf025b89dee11227dc14190c384beba4145e54e8fbcb0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): consider calling \u0060JS(\u0027\u0027, \u0027debugger\u0027)\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/core_patch.dart"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"f60842c60eebedab676f800eed88d7dc418327a817d9aaf604b1f84f6648939f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Make a proper unmodifiable map implementation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/constant_map.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d420c66087b7f3e252afdb1e4b7e01b6e689e9c46868bdd8801455b340898e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use the \u0060_keys\u0060 Array. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/constant_map.dart"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"5246b3a406673a08919284deaccb774be75669577f2e62067ba5b4be89e67785"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): For now, we have to tell the type inferrer to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4df2239b69655188624be2f9dbae02698a88672603c7a4dbd13cb4d42f03393"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): For now, we have to tell the type inferrer to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":1013}}}],"partialFingerprints":{"codehealthFindingId/v1":"a722a7d159af8b8118ba1c3b5d774e01ba2e057f73394b497869ebae21762c02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Move to same library as JsLinkedHashMap and make the \u0060internalXXX\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5285b9c68bd148ebb3e409e320ff230a9e633c5b50fd393195ad00e000a3bac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): Consider getting rid of the bucket list when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":770}}}],"partialFingerprints":{"codehealthFindingId/v1":"09ae9d4d584e1732cd9018c86bcc79c5619d4d9caeb66afae945c6cbfdeb2cca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): It would probably be faster to move the element to the end \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d14e3edb0b0d9761beb2c5213c8ba3d5145d45de0009d5f8691a97c6dd883af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): Share this code with _HashMapKeyIterator\u003CE\u003E? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"8afedbc380c8400f77f1514716af262f3aa812f8fbe1e179baaa0d34087ce8b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): Share this code with LinkedHashMapKeyIterator\u003CE\u003E? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/collection_patch.dart"},"region":{"startLine":1483}}}],"partialFingerprints":{"codehealthFindingId/v1":"8287c476f9dac0801654123df3bc7d0bd17c317084366b22ccc8a97bfb87a922"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(20055): We should use DOM promises when available. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/async_patch.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"50fb923b632238abc22fbd9270a8d780e52ab3ed3ff72b1b786caa42e7253573"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/52166): Fix type inference so that this return"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_runtime/lib/async_patch.dart"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"66d3f1dba9007488c04c048a264d8378b3b66230cdb3437bd5309c2fb54f0f49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish, dart-lang/language#115): Replace \u0060Object?\u0060 with a typedef"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ff3e0341f44502f774471e99fca41e7a603d0110aea15add4d8ab9434470dd2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// more commonly used fields. (TODO: we should exploit the fact that an Rti \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"408ec7115492c67addbba7e93365c30278e90295cc8f27b71fd272c7a2c73129"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Clone the fast-path of _Universe.evalInEnvironment to here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"81e2cfaa32f2ea7f9db12f2433cbecf30047cda0287ca051f30c49fcd73841d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Implement precomputed type optimizations. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a404f5d0e59d9f6661676d65161cef2e58f1b9bdb30254600b5449c59785ba6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Use \u0060dynamic\u0060 instead? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"137a467899c69c0dfe3ffb3932ef3342c4fe3c396313992cf005f6ad8e8b872e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add interceptor-based specializations of this method. Inject a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":918}}}],"partialFingerprints":{"codehealthFindingId/v1":"889c1f7d46a7ce175e05355157c944194b9799a95f7fa8fd949c3678a4791be2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40175): Investigate if it is more efficient to have each Dart program \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a302a73185798f6e482f2a17a396dd3d87a8b310bc2e7267502ac737b671234"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(39214): This will need fixing if we ever use instances of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":1008}}}],"partialFingerprints":{"codehealthFindingId/v1":"172139e20e92765d47060b2d09960c0a5a24457982336b9dde3a2cde003937d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Can this test be avoided, e.g. by putting $ti on the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":1011}}}],"partialFingerprints":{"codehealthFindingId/v1":"a50f312fd1289697ff4d21e39aa5fa0157480438588748b4d35feb997b66ac44"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/51894):"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":1066}}}],"partialFingerprints":{"codehealthFindingId/v1":"7afd11a68df1084f3184981a826684114177d4f7b04f604ef7b691deecbf1dc8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Emit code to force-replace the \u0060_is\u0060 method, generated dependent \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":1205}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eb1cf5f72674b8004e46646ee3a2011897d73f422f09fc5cebd530687579530"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Can we easily recognize other interface types instantiated to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":1253}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a3bae3cc38b65d2d3aae2ad9c4b7ca5654e5af3f5a9d67a39d1f23c289a5b51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): This is redundant with [_installSpecializedAsCheck]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":1496}}}],"partialFingerprints":{"codehealthFindingId/v1":"5971899303097a49ac12e340e93673e4eaf3552e73d81fb2fc078fd9127a1041"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Change \u0060dynamic\u0060 to \u0060Object?\u0060 below once promotion works. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":1621}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2a1e8bcf2028debcd46f2b9b44f95bd3bdcf1143e1def80215a0c31fe419f4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Below is the same format as the VM. Change to: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":1891}}}],"partialFingerprints":{"codehealthFindingId/v1":"68d07add64534fae8dfdc6476588c04dacd076c0b07c7cd656804559504f13d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Omit when base encoding is Rti without ToType: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":2626}}}],"partialFingerprints":{"codehealthFindingId/v1":"31dd51568d6db67b6b5cb65d7f630494383ee386a7ecee10ef7f8452f6e0d1ab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Try bitmask representation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":3483}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f79b3a7774802ba0f087908bfbe50b48501363dd5a701b84003ebcbeca7434"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Disallow JavaScriptFunction as a subtype of function \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":3622}}}],"partialFingerprints":{"codehealthFindingId/v1":"1503f74866ae9e329b4b123c40e0cca8f5bfd3c6c5730fc994aaf23f3a2d47e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Handle variance correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":3799}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae3988a5a01d721e27822b7b04712bedd28d8d8835476331432a41b779e04e1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(fishythefish): Use \u0060Object.assign()\u0060 when IE11 is deprecated. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/rti.dart"},"region":{"startLine":3983}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e6f9f1fe5e394d10f3e1e8aa921f6e1e5c9de7abb855b79f93528743a64c775"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Move these \u0060is\u0060 checks to a helper library to help \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/js_util_patch.dart"},"region":{"startLine":606}}}],"partialFingerprints":{"codehealthFindingId/v1":"f168191885002b7326067a37f601a5093eeb80ce23b3c4890bdfe6dc01998460"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Consider investigating if there is a way to convert \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/js_util_patch.dart"},"region":{"startLine":688}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a8d23eac339bd4bfd648e82b6ce6560796e390fa3444a794c6e89391d739a3e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Specialize \u0060callAsConstructor\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4da1fb9eea89e0bde2b47dba650251991b8b99a724dd04f74ccc5e57c4fe176"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Should we do a check to make sure this List is a JSArray \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/js_interop_patch.dart"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc767b3d9c766fbf964ba79301b7625bd1457dc0f08c4954e1b87f6489c9a9f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): It should be possible to use the intercepted code on chunked \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/convert_utf_patch.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"7755b107e5e905e0d73cab8f7a61a5bcfdeeeaf743ff3aaaa9b4faf90d7c46e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(43737): Remove test when all supported browsers are conformant. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_shared/lib/convert_utf_patch.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d5c771b0c09350829ee7843708edabe6995677e7b5bf2aa07bc8e9a111a7767"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srdjan): Optimize to skip copying if the range does not overlap. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":530}}}],"partialFingerprints":{"codehealthFindingId/v1":"37fea28def336a1a9f5724031c80a7b29c18943be40fb72b46c2096824ff1d52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srdjan): Optimize to skip copying if the range does not overlap. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":873}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebcc9b933bec49f8a373a6bd3b0f31b786abfba6f03b89b0714d805a3e89f8af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srdjan): Optimize to skip copying if the range does not overlap. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":991}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d2e61a86923a5385bc5e13f5e615d16a8681935d3a80e51f1e3397e4c57c24d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srdjan): Optimize to skip copying if the range does not overlap. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":1334}}}],"partialFingerprints":{"codehealthFindingId/v1":"b98ca351a596c3464cd93788b3382d8bacaa54b7f2dbbc6a6160106a8b398426"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srdjan): Optimize to skip copying if the range does not overlap. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":1677}}}],"partialFingerprints":{"codehealthFindingId/v1":"198ea5987ed5f0a73505188a1178c47c0de6942bb54f002ebd94684bc8a11651"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Could use zero as default and not throw; issue . \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":833}}}],"partialFingerprints":{"codehealthFindingId/v1":"eafee56cd5ca9b94a8ef6c7415e69cf0c9fbbd7f26ff24b7c480e47fe6f2259a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Could use zero as default and not throw; issue . \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":2377}}}],"partialFingerprints":{"codehealthFindingId/v1":"0587a660773e2c34643c3256b40a946a493b4eb10e6d40f837a12e4be35141cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan) : Need to resolve this for endianity. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":5402}}}],"partialFingerprints":{"codehealthFindingId/v1":"dddb19b6cae61a63820271a3036179cb3df07da91f1dc5e302b7bfe160e396a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan) : Need to resolve this for endianity. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":5414}}}],"partialFingerprints":{"codehealthFindingId/v1":"ededa43c8deb3488d5693275d9ee0e6a15953673a68b351a3948a79707a223d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan) : Need to resolve this for endianity. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":5422}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f447e6ef1a870585ec816ae0279e27176f617c252c6c6b16fbe2354ebc1d408"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnmccutchan) : Need to resolve this for endianity. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/typed_data_patch.dart"},"region":{"startLine":5434}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e0432a336e0cae1ec85605da065bfa0f5379806758e65cb8868f847dbf34686"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/46716): Recognize Symbol in the VM."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/symbol_patch.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"97ef5c26d7a2ce0102122e9d06961cd6095380abde58c702628d266847274ac3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Consider allowing more bits for start on 64-bit systems. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdcac9bdb932700191cc7f431ed4d7006bd81e0f35fe43af876883cc931241c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): See if this limit can be tweaked. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"339fdd11f34f3f4a64d88c503f6a3a28aa926c753903825337ac86859de64d85"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srdjan): Also skip copying of wide typed arrays. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b3f1cd7aa8f211b3d44030dbde852b8db574ed38e596e54121c5bbf864d4674"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Consider passing limit to _createFromCodePoints, because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"d841da2941debcddee726a84436806c0a819c19779cc51208f76f7c63fdd181f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Use an efficient string search (e.g., BMH). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"21df1b4b7b1759d486b0120f9da4af635b2db342d192dce7dec702d3624da034"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vegorov) investigate if this can be rewritten as \u0060is _OneByteString\u0060 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/string_patch.dart"},"region":{"startLine":1056}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6a57da938b17741194710acc40159c7d6b7a3aa828994fc404c6d51f5a6c98"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(regis): Remove temp constructor identifier \u0027withInvocation\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/object_patch.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"e59e5b1e64ce39b60789df78dd96b0b00bd26b0660f929bf3c5ff60e8a7aae81"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(iposva): Handle patch methods within a patch class correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/math_patch.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad03ee1dc5a8873cd200409a1d2285574bf7ba4556d2b0fe2e831c48d98cdf82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(iposva): Handle patch methods within a patch class correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/math_patch.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b6db54c073e7f9bdc6e613dcc147cdf1bcabe10cc46c8cb83d7f67f4a8362bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(iposva): Cleanup to have only one definition. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/isolate_patch.dart"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"e21631fafa03bfc07fcb0c160994596b84d7def1a3e33fb684f425bb1b38ad1e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(http://dartbug.com/47777): For native finalizers, what data structure"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/internal_patch.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dd45e68638a2d1cde471df5d5be8f2e041697ab44a4a8f9939c94984aa2ba56"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/63808): Remove the pragma once this getter is no longer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"80550c1fdfed4062a3882ee1fa2b85331bc158deb21831306acacbfb257d16c8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dartbug.com/63808): Remove the pragma once this getter is no longer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/integers.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bfc8c11b37c0be1781e7e67681981d9b52a678857041a874cb04c8fa1434b5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/45908): Remove empty file after updating Flutter\u0027s"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/immutable_map.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3750b9deabea218e54ef404d871449da444585eca65497c495725c9a16f8c6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): we can probably detect more cases. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"78d7923d70925d475485b289983cc9d25ef3cc3edfeb2962c26b9a95508f5e7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): We should be able to replace the following with: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/growable_array.dart"},"region":{"startLine":522}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ca834656b5a83ec83d300045ed99cf695544d673c5323ebd9ef54bef39da173"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(regis): Pass type arguments to generic functions. Wait for API spec. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/function_patch.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b737a6d52af7a06a484d3a7c5c7b9c8bf50be6afa680b3b4fd6834a9fd91e27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider optimizing all small integral values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double.dart"},"region":{"startLine":256}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d5c850dd8cf14e4e866532901a9676a91e4256b24a8291d3fec23b336c3927f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider starting at most recently inserted. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/double.dart"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff607d5e289062a0570b016fbd678a55a1dbae6eb4cca5577b1213c4277ec16"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): See if parsing of numbers can be abstracted to something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/convert_patch.dart"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"f309bf9e6f9063165979940b3c30d08382646d3d36f9fe7c85c0a81ff85188db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): See if parsing of numbers can be abstracted to something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/convert_patch.dart"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"00ab2f2e840cc12910864151237af29df723a32f160cb94d0c687c230ce1ea7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): See if parsing of numbers can be abstracted to something \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_compatibility/convert_patch.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ce35d6fbd0fa75c395c571dda522657ce63f7d7fb9b3181c78c870293907eea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(30102): Remove this loop zero-trip guard. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/array.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b5d6237407557254b7fd0dd60787b58ba9664ca1f0433104f7cfa13d1011e09"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(30102): Remove this loop zero-trip guard. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm/lib/array.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f20ea633d28a7335f628f46fc7ea65cabc7245ae50797305cd52ab80be8dfe1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Is there a way to only encode from index i and forwards. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/uri_encode_patch.dart"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"55709319e83d91488fc7d3349b0f417a9a72ba5d15ffabae3903781c0ddccd10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider growing _data by factor sqrt(2), twice as often. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"032f6c52febb7f7f18b9d14da7c2ccf957bfd52a35ecbea2c3f6553ee68d7c94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider growing _data by factor sqrt(2), twice as often. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d96c1c858dec4d1959a660a81fdfdf0b448f14e5c099973182c061fdfb3af74"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Reclaim the bits by making the compiler treat hash patterns \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"d59a7aaa21d857153983195ad00aa90836e057df1fd941ddc4f63e0288f5c714"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider keeping bit length and use left shift. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":225}}}],"partialFingerprints":{"codehealthFindingId/v1":"83557e2f6a1eff26d32aa325c43c86fc3458c5baf2ca33297f8470257d2afac2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider keeping bit length and use left shift. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"105dcdf76e5cfe4c916b1836a7d2e3c965b582e1cab300548a834b3eb0cb49b1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48143): Pre-grow capacity if it will reduce rehashing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"abc8986234d2ad498067417107fb34aed06fa3bb3616a09db59883be9153cdac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48143): Pre-grow capacity if it will reduce rehashing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":787}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bf522234751ad5f17b0ea9395cf100c715f4a85e1657569e01dfdd4cdb87e22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48143): Pre-grow capacity if it will reduce rehashing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1189}}}],"partialFingerprints":{"codehealthFindingId/v1":"43112c1e2734c71aea6b9579854d52789e5e5a5c315153f1c63a1f293f1fe487"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48143): Pre-grow capacity if it will reduce rehashing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":1338}}}],"partialFingerprints":{"codehealthFindingId/v1":"185ec16428526948a31b71f8af0eea1d0fc7fff0e4fbebaeb2066180efad5dc5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48143): Pre-grow capacity if it will reduce rehashing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4fa86fa0ada715050b4c07ce4de027047c3c66c5f6170b5b6f7e69774929818"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48143): Pre-grow capacity if it will reduce rehashing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed09e0a95c740ccfdeb69ce97ccc4e0dee174dbb6073642ed33efc70346cd1a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48143): Pre-grow capacity if it will reduce rehashing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":1089}}}],"partialFingerprints":{"codehealthFindingId/v1":"32bda0bbdf4186b0ba2b774b4423863a7031955195caa9f0b63ed358ca57564b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(48143): Pre-grow capacity if it will reduce rehashing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":1236}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc5980ed40311c9facd4b9dcc6fd104a5b68a688f5f3a86491828017d3d233ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider shrinking. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"9115ef730a9902554c11844d1865f758bd23d823d2de1ac3ec65db573c7b30cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider shrinking. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":417}}}],"partialFingerprints":{"codehealthFindingId/v1":"61ab5ac5e26053fe720289b43ba25fd820dcbd9ab99eaa396ece648c35b8b634"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider in-place compaction and more costly CME check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"b77770465c1cee6cc8d5a4d2f1396b0f63fd49f0847eb1a1c94d3cd1637dd8e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Consider in-place compaction and more costly CME check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"d61ae2e202f16b90108ae677010815e822d464fbf69d36c787b65be85ef7f444"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Support 32-\u003E64 bit transition (and adjust _hashMask). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a84719ccf32e01568e938397299637dd2df90afbbf70ccb729d1d692bf42bed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): Support 32-\u003E64 bit transition (and adjust _hashMask). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ac5ae11432c818330c6d01203d34aff09056f2b5d9b1af2bf9f33587ac19a2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): While there are enough hash bits, avoid hashCode calls. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/vm_shared/lib/compact_hash.dart"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"c15f242aaf55f3d4e786ef3328777ca85c9e100b3c6b9be81824dbdfac1fe2a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(koda): While there are enough hash bits, avoid hashCode calls. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/compact_hash.dart"},"region":{"startLine":453}}}],"partialFingerprints":{"codehealthFindingId/v1":"32d6bdd091e9b818004e3863a90ac150c7ddc05848493e804464ba110a7f303f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#52971): Use unchecked read here."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"5874d22154c532dc4d06dbdf5921f20d333cc4b27ae337f15229a0b46fb055a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: mutability \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":1469}}}],"partialFingerprints":{"codehealthFindingId/v1":"32c09954c20391918ebbe54901fc285bede941040ea90e2de6091accb298d27f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: mutability \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":1508}}}],"partialFingerprints":{"codehealthFindingId/v1":"f38007c54d336cac567f71294db3e12a9cebd1375d77594b7baaaffb24f1af17"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: mutability \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":1523}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e424de7fba45ae70c2bcf3a81f3cf04a36144c520b1c27a9e00eeab4fd83be0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(#52971): Use unchecked list access functions below."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":2081}}}],"partialFingerprints":{"codehealthFindingId/v1":"e042563c0d2015b4a4f8e9df6c81747791b20b482488099cf7e629b845974d9a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(omersa): This mixin should override other update methods (probably just \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/typed_data.dart"},"region":{"startLine":2473}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bae61a69c29877b24b158ff7bdd0b14f9843499dec07f1a4145df65212105a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(omersa): This mixin should override other update methods (probably just \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":811}}}],"partialFingerprints":{"codehealthFindingId/v1":"c45f3b572711de577e585ab53a846d1fd94f1ba6948630827cd1ac77a65febff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): We can cache the result of [_FutureOrType.asFuture]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc1be161a697baf47c0203595f42e451d58be579b7f7551ed3fbe50bcb5c902f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): The [typeParameterOffset] is 0 except in the rare case where \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":414}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4da6c1f97501dc75951a022a150ea6355f76af09e9fc770d6c0151fc0bda1fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50991): Positional parameter names not available in runtime \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/type.dart"},"region":{"startLine":1893}}}],"partialFingerprints":{"codehealthFindingId/v1":"c345eb1fe94e32f6bd3ccdbe5eab3f8c3cfdf40616b5c723bf1537a2407fabe0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(regis): Implement in Dart and remove Random_nextState in math.cc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/math_patch.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcfb358ce5fe86fab63dcf6c73296e35f000c83f0b7b81c21785ff9c781af494"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(omersa): Check if removal will cause shrinking. If it will create a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/list.dart"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e5ac741ac8878a020241ca09eb58a1276da0d310142ba21b58591916c3b524"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Intrinsify for efficient copying \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/common/internal_patch.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"36c0620fa0b2634610abc7ed0e3d13605bb3b63f0c21a83f2cce9a30bc0a3fe9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Chrome/V8 bug makes errors from \u0060rethrow\u0060s not being reported to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/timer_patch.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"146b54a934d6b5f04cc456a523c06d29853e802c3f40099996bebf0ac46d4a54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): This is a fork of the DDC RegExp class. In the longer term, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/regexp_helper.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e9c5377cc726f9de8b7d1112e6bb5c16e8bfc0f4768dfe85d7b333b306b9bc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Add this to \u0060JSObject\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/regexp_helper.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"74db0b29b0ee76e602bb25c51ed46f311057564dcc1001e7071f46a2cd9fa68e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(omersa): Use unchecked read. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":785}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f82d3e217e504b29790a92436dd8f0f2146bf2b10e7156e1f120e963905c31"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(omersa): Use unchecked read. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":2268}}}],"partialFingerprints":{"codehealthFindingId/v1":"799c18a39eb7edcc35c1329bc7a714c6a315fea6ffc9453054e896e07155997a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(omersa): Use unchecked operations here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":1753}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e878e2d66a9d2527c82718b8f51626984b7805c870c251b6a3f7d9c41ed1cf1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(omersa): Use unchecked operations here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":2655}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4c9ed4598ed3498e877560aab9cce389ae827e5c40a4013ef0b20e42f99efd3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(omersa): Use unchecked operations here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_typed_array.dart"},"region":{"startLine":2744}}}],"partialFingerprints":{"codehealthFindingId/v1":"34634559b2dd3aadcb0542d4ad5ae1fbe649195a95491302ce2b7df811d30b76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Create a subtype of \u0060JSArrayImpl\u0060 that can support lazily \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_string.dart"},"region":{"startLine":772}}}],"partialFingerprints":{"codehealthFindingId/v1":"a38b031c78ad5113c5aabd9f13bc307522cfd0eb6e112a98d2bb83a3c26b8696"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): To support incremental migration of existing users to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_interop_patch.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"94b5bdc42658bc343b55c6a0ac3768a175bf13f046fe7bad0605e3b7ae594b7c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Either handle Date and Promise, or remove them completely \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_interop_patch.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"61a4edcb3235da672e2ec051c23de8e17cd3fa41891dd337f70d19d1490edc70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We do these checks again in \u0060jsifyRaw\u0060. We should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_interop_patch.dart"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"e43cd6890d3e57e6c034b5d04a6a2824f54c5956b9aec39a090c03dfcc0a1062"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/64214) - avoid"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_interop_patch.dart"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"b30c9c5e67552f165707509a3ced4d2fcbd39540a98a41b4733f4d0c90800e0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/64214) - avoid"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_interop_patch.dart"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a4ae84a71d64a5e61b60b9664319839de3922bc0e588f41dcc5e27b905ba7e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We could do an \u0060unsafeCast\u0060 here for performance, but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_interop_patch.dart"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"442d3a502fbbae45c8941cd5c5a9657ce9ec35a162c8f3aff2bd1d766a1680f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Resizing the list populates the list with \u0060null\u0060. Should we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_interop_patch.dart"},"region":{"startLine":1181}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2d47ea739149cd215fbe3f77318bfc6838e326e300a0db969dfa71d77a5941d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): There are a lot of different directions we can go, but \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_helper.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2dd4b41e4fcd4499cdd0ae8ee31a8b0f9542b26267af7c4ae20bedec1d88788"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We should rename these to \u0060getAsExternRef\u0060 so they don\u0027t \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_helper.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b0ca1c1f8ad47dda30e76d217daf6f18392373efb21060460903792fc154683"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Once \u0060package:js\u0060 support is fully removed, we should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_helper.dart"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"80baf2f17d06951af650f0b68584714c2c0fe17f3ad0f7e6a94c3986b430065c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Once \u0060package:js\u0060 support is fully removed, we should \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_helper.dart"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5ddbd465e3c074c9c26caaabc0c36da71ad5509baab6a627cdd0c7ef39ca54f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Refactor indexing here and in \u0060js_string\u0060 to elide range \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_array.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"00f4fbb46715f2bc5708bae0c11416b81b2129cdccc395cc3ddd0c21ae4317e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Fast path for when iterable is JS backed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_array.dart"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d2d2d42295bd3dcd1713e445315266121d0f635b610399273bd499a198b598c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Override hash code and operator==? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/wasm/js_common/js_array.dart"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f8374002101c5de2a9fd4da52a981d331742e00213cff879083a1d86e4ae611"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(askesc): Give an error message if any of these constraints are violated. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_wasm/wasm_types.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c8056cecf58d29e6a40819a66fcb29eaa12796942d012f301a8ad8a7425769d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Make this an extension type on \u0060Zone\u0060 if ever possible, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/zone_delegate.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbf8ac36467408964f26f9db12fd516c94cdb26c2442dd93aa6731af758798c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Remove this when code have been migrated off using [onError]. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/zone_api.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cdb603f78ab3ceaed0ab9819c086fb1a71b0127c059292589ed15e14a1d1367"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): reuse another field \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream_impl.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"5be5fc11ece1bdf5776f225eda4539b29690ce0563352e923a58c7cca9bbac66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Consider whether we need to register the null handler. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream_impl.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"666b5731d564cb4b517a93256f5f4a3740176aa44c709b9c6d88d5f76206fb76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): this dynamic should be \u0027void\u0027. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream_impl.dart"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"f738e7f7fe6f79632979c208b4a0aebd8ab65916352ff8f272321fb4daa27482"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Could this be stored in the varData field too, if it\u0027s not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream_controller.dart"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"91349d18e9ff298c0b1d6ba87061ca07ff754b2862f825ee45d0fe2a8e5dcd60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Use common superclass for callback-controllers when VM supports \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream_controller.dart"},"region":{"startLine":824}}}],"partialFingerprints":{"codehealthFindingId/v1":"322e46f01d47fa473d231ffed6ce243f090eba8242b2da189318efc940a29cb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): use redirecting factory constructor when type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/stream.dart"},"region":{"startLine":2700}}}],"partialFingerprints":{"codehealthFindingId/v1":"13513132ef34993a836c6583fa4bed8ec978906f1c9a910fb70fcc835ac30687"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Use the _state field on _ControllerSubscription to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/async/broadcast_stream_controller.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fadeae5a41118b9013883aafeb84d6d62780cc23dcd5390b7ced5234d25ca45"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51681): Drop null check when de-supporting pre-2.12 code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/set.dart"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"6350883e7c9a91c85fc2b96745fee1a5bf069952491b41cba2e69c6ad76b9d4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(51681): Drop null check when de-supporting pre-2.12 code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/iterable.dart"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"9794f238e678dc69f67df7e8e8f459960f499169bc1128ab574b20ea2872120f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated(\u0022Use SetBase instead\u0022) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/set.dart"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"435f119f20dbfdbedf04a6de68e39695beee6a897943416f217f1385850bedd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated(\u0022Use MapBase instead\u0022) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/maps.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"677eec4b8127b1feccf348e327ab42c516f8feaf278e278ace5b28d556ecea5b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated(\u0022Use List instead\u0022) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/list.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e0e1061a4c9d46723608d13a13b3ebb1ec892ce6cc04c6e658bc9cb7d34d6c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated(\u0022Use List instead\u0022) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/list.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e4dfa54e910649e09f10ad1a2a318992afd91db0276c163beed9da60d5cf44d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): When we get composable mixins, reuse IterableMixin instead \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/collection/list.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"f376881c1deefe886a609d78b89d634fb2c3cb0bfecdcfbc23fc223913a9c1be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): make this class public. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/utf.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e01a766151bd1189d7c74a499ca6c81ab18e7e8c09921fa99903d55a5eb16e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): implement asUtf8Sink. Slightly complicated because it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/utf.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3c3011a5b66a16b88dda37daf2ded800d687310cecb57be634b69c5aa997a8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): make this class public? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/string_conversion.dart"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ab36b510f7a3fe48b1b5934db89cf3e7cec3942c86c59466234f00716cd1066"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): make this class public? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/string_conversion.dart"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bde9175c5a4abaad0d9db42060e04b66962e5b68afed5c6fce495b7ae2b5d36"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Use stringSink.asUtf16Sink() if it becomes available. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/latin1.dart"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"7129263f1e281d1d306c4074883a88783245fa3e41b14f0d877ac8de8699b78a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Optimize by copying directly into buffer instead of going \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/json.dart"},"region":{"startLine":1121}}}],"partialFingerprints":{"codehealthFindingId/v1":"1515bc9e9feebb6a6016ee03292295dae0f84e04f51e419694c2676b0850010c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Optimize by copying directly into buffer instead of going \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/json.dart"},"region":{"startLine":1135}}}],"partialFingerprints":{"codehealthFindingId/v1":"d37d05f57159151ec8f69a7783c4c089cb15883ff200341b7c62fa29d42f417e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): use better example with line-splitter once that one is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/codec.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"76e2179e79796067bdcdbc60833fad670d4d93874c1d4416ff664270f1577127"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): @Deprecated(\u0022Use ByteConversionSink instead\u0022) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/byte_conversion.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab1b1a943e6bdde4353df6db90314cdacd127e9337e38f0fd72227baf585a90a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Use asUtf16Sink when it becomes available. It \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/convert/ascii.dart"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee18339263290bf6301e0a6f4bf9f4c87e0b6200d933f83b1cc5c1b0254beb27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Deprecate and move functionality to File class or similar. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ed4da157b495e728bbb55ea3e5f42c9f99ce90aba246be97b226ecd00544fc6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Optimize to avoid throwing-and-recatching. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"236956f9e2b5d59f5b67132f636c1f0a07cd8617b8e2c338ccca6105b2bff3ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Have a validator that is not also parsing into bytes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":1541}}}],"partialFingerprints":{"codehealthFindingId/v1":"130fc958ea66c96785f86e897beee31b3547df482abbde9db8cce8e627e3650d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dart-lang/language#440): Remove when promotion works."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":1952}}}],"partialFingerprints":{"codehealthFindingId/v1":"f710da08c10129ffce0b886973c325cd49c6024be6e41f7abf21e4498810e7f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(dart-lang/language#440): Remove when promotion works."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":1975}}}],"partialFingerprints":{"codehealthFindingId/v1":"e77bf93844d03bc5f72df013ba79bf405dcfdd7b832dfaff49c022508b4f8a62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Should we normalize IPv6 addresses according to RFC 5952? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2408}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bb825a5e960429ed299d7324d2a2ab02688f27c69d6ae5308afad46db654ab7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): skip if too short to be a valid IPv6 address? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2437}}}],"partialFingerprints":{"codehealthFindingId/v1":"f172220802bb59af4f302597d1ba249aef86f004f69227409f53761ffc0ed59e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Remove when Never-returning functions are recognized as throwing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/uri.dart"},"region":{"startLine":2932}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e73ddd4fed26703bad91c0bb7450d43e52e673aff15e84cf3573c0ce155258a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): document better. (See EcmaScript for description). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/string.dart"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"2438b4886a95dba74e3c408cd2fd890e82a35e97d4f3702f2eea2369e4e62109"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): document better. (See EcmaScript for description). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/string.dart"},"region":{"startLine":741}}}],"partialFingerprints":{"codehealthFindingId/v1":"802a9df73b3caac9cd692ee6bacc449912a520975a8b406277a38af3b0aeb4e4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated(\u0022Use literal \u003CE\u003E{} instead\u0022) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/set.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"991f0791b7187896e099bd8af46682cca576ec22bea1027f5eb1efa4ae2bdee2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Optimize to detect format and result type in one check. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/num.dart"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"602b70d744d17f8c9d87bd3b91550d35f08ac83d39cebc5d835476a8ba3dc6ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated(\u0022Use literal \u003CK, V\u003E{} instead\u0022) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/map.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d2333f5ad55a262daec69479f9386c3cb27be64ce5973c444e5f9cd3561a5bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Remove when we can promote \u0060this\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/iterable.dart"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"024301a3ec99ebaecd2de602b6fd16ef076056f799f40acd061fac4ca2fae73d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(30743): Should be removed, and division by zero should just throw an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/exceptions.dart"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eb7c5008a31823b67b5901ca817b2d11955df386e85b3b5df054bf1f4bbb294"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): This constructor should be called only with string values. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/errors.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e7b97213f169bc351b9f774dcbb133be735de23c86912294ba472cec0eaf024"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Optimize to avoid throwing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/core/date_time.dart"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8e86059164df6c1cfd4f16896e16fe8dff8ef668df625318a3109830085fa7d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: This typedef is not used. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/developer/timeline.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc768a91c6be83b4af833d80255d851c5d07c8c2b531849f399b4bc5a9233f69"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/44395): Add implicit await to Dart implementation."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/ffi/native_finalizer.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"e76d9ff00b23c75e4e4374c675284ef1da1d15ee8e553f2b908d87825e81aca0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - figure out if we need to do any validation here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/css_class_set.dart"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3423192421b1c690f10543580375fea249922c7517b0846ac4bdbd00f34df70"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO - see comment above about validation. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/css_class_set.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3b8815ef2a05e95ec1322a888c8f40f6e80e6b3bed2b11951176f1d65fdc14c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Do this without reading the classes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/css_class_set.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb8dce618bb1ecbf8c29354c5d9a9ac1bb9d02bf6d201b3c911cb2726ba1a9cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra).  Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions_dart2js.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"114020a9b90a78e40a64754534b771c30d3330c90ec7e44bbef14957dc888cbc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add Date, RegExp. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions_dart2js.dart"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cb64fa292994a8516ffe49cc16805bd5a1c4f6c8ca4200c120a8eca32586b51"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Replace slots with identity hash table. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"3db5cffde2a2d815df98025c04ac7c798712d083e611685d7c7435438c934fb3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Replace slots with identity hash table. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"245e7c58d5365efe538033586c80a00f27a00bad2986a58a552caa4180cf3330"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"6be64b686665e1992b04f1c4bd97edac77d5461a5320c5f736607a90c0bee35c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a8e5de2b66fb13add6857468d4fb7bd2d08093b48673d916d5e8e8595a38622"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The JavaScript objects suitable for direct cloning by the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a2272df9126fc199f3d96627a5ed027e479d9006f05f85960b10ee913aa6b11"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Firefox: How to convert _TypedImageData on the other end? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"474f1be2370c3f15b51accfb72998aa4dedf75bf37f61034078f774f9370ddf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Consider inlining this so we don\u0027t allocate a closure. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"fec01b690957274ec0f884a3c4898a7548fbd870389773c9793b1bf99e338adb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): If mustCopy is false, swizzle the prototype for one of a Map \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"8b5d1db1d9911f0a124aa86f480f97840efc2a680297598940bbfddc2b0b3597"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Remove this when all the ImageData returning APIs have been \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/html/html_common/conversions.dart"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"36aa55094e98b503cbbc7f990f758a0193e3380069819e58de619a6a3a445fdf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(lrn): Consider specializing this code per platform, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"a53e596e81fd70e281bc80c3bb0b8a67ca9fc0791e1555897bca6d479a1ffef5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// TODO(40810) - Remove uses of this function when Dart has full null safety. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":866}}}],"partialFingerprints":{"codehealthFindingId/v1":"c78284f5da176e21cfc0837e894a0c6b88f406bbb5e7738bed11e645cd7773ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated(\u0022Will be removed in a future release\u0022) \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/internal.dart"},"region":{"startLine":1055}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab8bdfee0df9f4c8255b3a783a47a3bb6e7046875753fde9db24d0f27c595d77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Optimize repeated \u0060addByte\u0060 calls. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/internal/bytes_builder.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6ca766c6e52c2ec36d94a8a620ae6bd936e48de4e173c7833eff8835f624a3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): provide more efficient conversions when the input is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/string_transformer.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"b74d8f0d55f8b8df12d7b55ac7eb769a78e436bc778a67af63b4be660b5e8dea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): provide more efficient conversions when the input is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/string_transformer.dart"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"034fb4c449ee7e48b14533c28e939e2ef1be9312d5e3ebda16f56f58486cdc68"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ajohnsen): Do something here? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/secure_socket.dart"},"region":{"startLine":1060}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c49eeddf705ef5ecd9702d288490953cc4657e194d8ffc8b9be97a143e707aa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ager): The only reason for this class is that we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/process.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"c405998a59aaf9238d6cb1f48264e6ed9f61d7b23e82a7017aef48bfee0b58fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): [_environment()] emits Iterable\u003Cdynamic\u003E which is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/platform_impl.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"48c2ea0197ec8b8eb9ad20a7b78dbbf6bf10b78d98341b72f3a96f92ccae1e6a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): refactor into io_resource_info.dart \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/network_profiling.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a09555233df710f9a9d7a1c6efafadbee10a0bfd16eed8b0f29e36ca8104b42"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(zichangguo): This version number represents the version of service \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/network_profiling.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a619b5f25c4a4cc9ae61c8ae473704a82b242d7b842c70d9c8e8b7fbcc8d946"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Replace with null-aware elements. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/network_profiling.dart"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4ee38bb12a5ede5f5220957a234300a84ac74d969b034a952be2700631e2c5a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): handle overrides \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/link.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"62e873e7808b31a32eae9a1535549c336431ff29c4ddafdd95ccdfb4d54cac7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(12414): Replace with atomic update, where supported by platform. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/link.dart"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"e32c4cd5e534539775128f184f334330b7c6e35ecf440813291a1c94855b59a1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(12414): Replace with atomic update, where supported by platform. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/link.dart"},"region":{"startLine":289}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5023bc6fb4a2bc1818b234ef4e50c0b11efd20907bb99f234167adf10fedcf9"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): find a way to do this using the raw path. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file_system_entity.dart"},"region":{"startLine":472}}}],"partialFingerprints":{"codehealthFindingId/v1":"24d8f59c38195bb3d9ebef5713bfbc6f95268fd3530e287e9e73b86a256803e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): find a way to do this with raw paths. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file_system_entity.dart"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"192107cd957c10d262e1194a3abdb945745c38b2d166c64486541188f0d51c8f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): find a way to do this with raw paths. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file_system_entity.dart"},"region":{"startLine":914}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3d4081e88649d1e411f966c62342dd06493eb3b33b978257543aadf93f98e01"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ricow): We probably need to set these in some initialization code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file_impl.dart"},"region":{"startLine":830}}}],"partialFingerprints":{"codehealthFindingId/v1":"373647c4ec83c3949f4c4bb08a67ce51c3f93482e53c605244657cd1f175452e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): Handle overrides. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/file.dart"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f9901651bf7b9c4f467db2a12c8986f9565f78675a7bd77f40fe2172568dea7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): Handle overrides. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/directory.dart"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c4b2538cee636a2c88ab1ac61b813657a01e6e3008e001084dde6a095b6d05"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): here we\u0027re using \u0060path\u0060 directly, which might cause \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/directory_impl.dart"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"f303a9a9a607f3394def5e3bf95a1e2b36357d08eb81dd5a08573d8b74408b1d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): here we\u0027re using \u0060path\u0060 directly, which might cause \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/directory_impl.dart"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"f6ea05db9020e8bfb5b6199b92083fd592bf84ce3fcf3f295ef4b0f7960f30f8"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): here we\u0027re using \u0060path\u0060 directly, which might cause issues \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/directory_impl.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b0dd7763edfb2685d76f4516fb60df7ca86136857ed41618dbc4cb729ccb921"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): here we\u0027re using \u0060path\u0060 directly, which might cause issues \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/directory_impl.dart"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"def10d188a65c3fb267c006b87a6e1a85c73a85bef35b93135eaa6957470a4dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Which stream? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/data_transformer.dart"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"8261f912c6caa257222c8198a1b0583ae96ad5de359ad75dcaeb48d24d1c6038"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kevmoo): not sure why this isn\u0027t a try/finally \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/io/data_transformer.dart"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"6da7d3481a14c32c6050ee0cc8cb470adbb85d92d8624fec6fbdee2a9672a4e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(44659): Change parameter type to \u0060void Function(Never)\u0060 to only \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/isolate/isolate.dart"},"region":{"startLine":1017}}}],"partialFingerprints":{"codehealthFindingId/v1":"36259b5e45f153e1d3202254a09ccbfa443a642ac23cc3ce89df247ba3b694fd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Move this member to \u0060JSObject\u0060 once we can patch extension type \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"09e87f121763a88ba2a82b7eee17d9d8a92227bc64a7700994a4102b674db572"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): See if this can be made \u0060const\u0060 so it can be used in similar \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":840}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3fbfa2b4a1f1b67928e08be2fd4f37b42d531e74a38392464927e2f8b43888b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Mark this as deprecated. There are no performance costs from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":994}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2a26661beaa5a97e36dedc2f2edfe808f5b12f4dca9925e4687d7ce8380e5f9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Investigate what it takes to allow users to distinguish between \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":1014}}}],"partialFingerprints":{"codehealthFindingId/v1":"7db1c3ffb5ffb4fe36bcfebb8a49edda7c00952ffa09284977d717e13d1b152b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We likely need stronger tests for this method to ensure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":1099}}}],"partialFingerprints":{"codehealthFindingId/v1":"429cdce2eb9e3caab5d248bb33f432c62ff91e0279990669a2b0a4978e81fb54"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We likely need stronger tests for this method to ensure \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"3da7f70efc87a390a39d8e98cae4dec7d27ba8ca1801cbc92fc5a8ca88dbed12"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We may want to provide a syntax for users to avoid \u0060.call\u0060 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"d32c9a059950fa4bc8b22dd6f89d32521bd016803042c875ffd444055a939fae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Move some of these to the associated extension type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":1234}}}],"partialFingerprints":{"codehealthFindingId/v1":"3975cc08043dc8f15e1c18802c5001e0fd7dd791e3625163d68d8382a74e41e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Add more as needed. For now, we just expose the ones needed to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":2464}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f650105813dcada3bc34ed734fef119391987a932108f0c7f978b93283aacea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This should return \u0060num\u0060 or \u0060double\u0060 instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":2516}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ba3226ddcbc791b7db20e301792600356633a4ffc9addb242325848ad10afa9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Expose this method when we handle conformance checking for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop/js_interop.dart"},"region":{"startLine":2569}}}],"partialFingerprints":{"codehealthFindingId/v1":"02f968d8ca9a3c4e0deac224d3125ac50bd713e4b80cbce4039f424bfb1297e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): The type bound should extend \u0060JSObject\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/js_interop_unsafe/js_interop_unsafe.dart"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"da65251d6025b94a9b2306dd6a0fb399ec41a83681ad1fa5a8207835934e83f7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated( \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/math/rectangle.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe175e86a6bd299d1f65fd7a53733a8749fd9373e98c8cb4244085457956cabd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated( \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/math/rectangle.dart"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"26d2306402688674837fcd64e6f92ff65dfac9230b38478df01d5516c19f28c4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: @Deprecated( \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/math/point.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee9000137e0a29d21be78145af5bd6ab96b2734f44a8f9e2d5c29cdc0a72c07"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Remove stuff about scope and private members. [fieldName] is a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/mirrors/mirrors.dart"},"region":{"startLine":452}}}],"partialFingerprints":{"codehealthFindingId/v1":"215df317c0e9ae6e081c6966c866a20aab8deb688b9aa12e3d102e0e0b427881"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Is this a bug? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/uri_test.dart"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"442a4467f4cf6bdde5f509a08d7499eccae9f8f83c9e494307e31af551787c52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Check that this is the desired behavior for JS \u003E\u003E\u003E. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/unsigned_shift_test.dart"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c3d70aaee595cc2bdd577f36953be86cd97b8c5cef0be347e29a53519543c7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add Never with NNBD. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/type_tostring_test.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e56140bcc6199de9a5b01ef504d3ea936756b26a97440f164095a28537a0293"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Add nullable types with NNBD. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/type_tostring_test.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"02fdb7eee9b5aa939f599ed33123101b46040805a2a47019c2c2e78b2def2675"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): in strong mode, this function must return a string. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/string_replace_test.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe3a857ad95fb2f7ef1695038f9e8c5c71ae848a45cb2160288351fa2edc559c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srdjan): Move StringBuffer to visible names. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/string_buffer_test.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f131a67f9d858ef3dad274c5de6f71605c671ab736c320c71e5e7caf54078fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(11551): Remove guard when dart2js makes identical(NaN, NaN) true. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/map_test.dart"},"region":{"startLine":644}}}],"partialFingerprints":{"codehealthFindingId/v1":"d31b1920581a7ed31ea800d88a3182ad50b5779cdf48b69c1ecc54c8a01fac22"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this check is specific to implementation details of DDC\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/map_set_undefined_test.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"15f8cccd1408be41d70838545eaf30ea9c8a5ec28cac044301c398ae81877930"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(42496): Use a nullable list because insert() is implemented in terms \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/list_test.dart"},"region":{"startLine":564}}}],"partialFingerprints":{"codehealthFindingId/v1":"818bfe041fab2ba8828574ed9c50d7a06f721d5dca54e212624d89908798328b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(42496): Use a nullable list because insert() is implemented in terms \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/list_concurrent_modify_test.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"c86e4e7b7f0338f6e50c1aeb34eca2b119059424a1f9f51b0ef91f1f1a800198"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): test scalar lists. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/iterable_join_test.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5feb786ea61a397a24b73894440ad86d577173ca9ac1bcd1938c0f890f19518"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: all this test does now is verify that lookup takes a non-T \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/hash_set_type_check_test.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1b2599cee703f1c050b5b6c67335f4670757627ea91ca31432b88e9c258bf7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(41308): Use \u0060is StackOverflowError\u0060 once DDC converts overflow errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/error_stack_trace2_test.dart"},"region":{"startLine":20}}}],"partialFingerprints":{"codehealthFindingId/v1":"a903835c2b77bf80fea12d3a145d909014ec0a2f003f52313d907fd5af75db72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): Clean up the DateTime API that deals with strings. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/date_time_test.dart"},"region":{"startLine":986}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef661d17ce76476795f38fcde84ab6170f5b4e31d229ea779ca175c9472cb9d3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(37442): Find far-away dates with milliseconds-since-epoch values that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/date_time_far_away_dates_test.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"20ea4c567c04b4c5c1a162ac5530bba4411c02f0b23da4b300680f5c14e0fc3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Determine correct behavior for mixing ints and floats. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/core_runtime_types_test.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"229f22c7346a805ddaaab042b31e33bdcb1687e7763024299dd0c020d37a0520"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Fill out full set of string methods. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/core_runtime_types_test.dart"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"487bd4731776436ba8274896b9f2f9590b98b97cfcf441890c3c3d7c3b7bcd8c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): Fill out full set of list methods. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/core_runtime_types_test.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"3193e16438008a1c30c2e86bccdfd19faddd55cff9f030fe6e2ae9ab288abe10"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jjb): seed random number generator when API allows it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/collection_to_string_test.dart"},"region":{"startLine":16}}}],"partialFingerprints":{"codehealthFindingId/v1":"98c4d8e3408b388a98e8cb5b81d40240d91ee3adf79db17869d6b5c972aa2944"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(50437): A number of test cases in this group currently fail on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/corelib/regexp/named_captures_test.dart"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"92e8c3edd5fcc6e872e0c975ff35e793ea11845e42c78d80417900278bc3261c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(52190): Improve the NSM errors to make them more helpful. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/dartdevc/no_such_method_errors_test.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"712926b2ee144cc5557c193cd016b90da1690b5d61cfa3ace579e351c5c5a63c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(49628): These should actually throw NoSuchMethodError with a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/dartdevc/no_such_method_errors_test.dart"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcda9cacf99dfa959d7112f862bbdbe95403b733b902613b36d4e028723f70bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(60654): Improve error message to include the actual name of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/dartdevc/no_such_method_errors_test.dart"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"7defd91974212cb57bac3fb2a1e951efacf70eff2e2e28fd1e404157ff9e938d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(60654): Improve error message to include the actual name of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/dartdevc/no_such_method_errors_test.dart"},"region":{"startLine":357}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ce0b6e6607c47d3124392d6a2e83a6c5944b3ea33da585399c77bac9797b3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(60654): Improve error message to include the actual name of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/dartdevc/no_such_method_errors_test.dart"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"531b0ad847cb6fcce2582a3ad22cef09b10b92a7e962218d0585acb5fdad9df4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(60654): Improve error message to include the actual name of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/dartdevc/no_such_method_errors_test.dart"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"88166cd4fe4d801944482274d74656af742f72d450253b29de238405fed4703f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We have to construct a \u0060Library\u0060 manually here, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/dartdevc/debugger/debugger_test.dart"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b7470505e0e7850f53cdaefcf830760a70545c1bde61f1144daa45920bff5b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this includes a timeStamp, so it varies each run. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/dartdevc/debugger/debugger_test.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"93109da156e947dc6c6c052e11009c1bed4f86795e10ccaf8fe0201b370ed37e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/51557): Decide if the mixins"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/dartdevc/mixin/mixin_declaration_application_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"49aa95401da73daf10eb875b00198133b66cc916b5d57420835acd8268ab9f03"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/51557): Decide if the mixins"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nonfunction_type_aliases/usage_object_legacy_error_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ce72ac9f3b6a9efe5479d1b85dd3ea27072a857c2a65fd9cd9c3c270c05507"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/51557): Decide if the mixins"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/null/inherit_static_errors_legacy_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"ece8f0344f44b97f3a3d4b817bc72329c2e05fd78609e3c57bde72ddfe5e6e49"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/51557): Decide if the mixins"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/collection/linked_list_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ec5e5c10b0ec40f28bffff6260404fc0736bef225dab76e7d508641ae61badd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/51557): Decide if the mixins"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/typed_data/restricted_types_error_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"0925df636f812bfdfb228df7a9bc616090d9326cda21e9ffe8479ba6419853d9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(37295): Merge this file with regress_37511_test.dart when callback \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/vmspecific_regress_37511_callbacks_test.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b69469a4ac5223ca6348ad914b233e71da7aad484c1b29e67c0f7334cc67d79"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/49518): Uncomment the lines below when the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/vmspecific_handle_test.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"84c4f8682aa4d05cdbea39ca13f53976672e3714ae967de20b0d914b8e606c3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/49518): Uncomment the lines below when the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/vmspecific_ffi_native_handles_test.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"a628430c2c8794b690f8a7877b2d2fa0cc7a96f36c38758e4eda45655b5ca624"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/49518): Uncomment the lines below when the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/vmspecific_ffi_native_handles_test.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"a121db6b1007d3316453e5ffc9507b7c1b61242878a00e10ba79e48229748dc5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/49518): Uncomment the lines below when the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/vmspecific_ffi_native_handles_test.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"4eeb9a3305b7bbd7f32bb9dc25a2e6a1f13fe7e9ad61567deae98c1a2e2abe77"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/49518): Uncomment the lines below when the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/vmspecific_ffi_native_handles_test.dart"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e6b6a44315a0f63ce1c816319f6fc2fc1a2b6791b10953920367691c8c0d976"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/44593): This should be a compile-time error in CFE."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/static_checks/vmspecific_static_checks_test.dart"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e1aeaf4ee4b4033246941355e080276d58db04c725231077928303116e67d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/44594): Should this be an error or not?"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/static_checks/vmspecific_static_checks_test.dart"},"region":{"startLine":585}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc46e4fc199f092303f6122de581ff9052f86795f08ee1f059701216aa1c46dd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/36780): Improve error messages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/ffi/static_checks/vmspecific_static_checks_test.dart"},"region":{"startLine":1065}}}],"partialFingerprints":{"codehealthFindingId/v1":"c923f69c73d10e92328a51e2550fa620182422ffd0414b998cb8b974168ce7a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): This test should be renamed since now it\u0027s just about \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/abstract/beats_arguments_test.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee0818c7a5aee20f80782bd0d17f593c06e611fb245cba580d86c6e73b4c32f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/56314): Remove following line when fixed."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/argument/strangely_named_arguments_test.dart"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd48465451d32e388e53e726c9537ffae98ad5b2aa38a6a3a91191779d464f0d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Test cases where the first argument to assert() is a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/assert/with_message_test.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c0a8b38e72fac7cb65a8b777ae5283528e51e26a423f746c20fe21fd723f1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Unify with assert_with_message_test.dart. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/assert/message_test.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"aecc43956c04800546b8b8e95c7ba0dcf5823b1ea3d0d95be15ce4ae1aeac771"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): restore this when we fix \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/async/await_test.dart"},"region":{"startLine":1339}}}],"partialFingerprints":{"codehealthFindingId/v1":"70e3366ec0042d4c267239729f1899c829cba76dc641b25f906b8ab484d89c02"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigurdm): These tests are too dependent on scheduling, and buffering \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/async_star/throw_in_catch_test.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"846d6b52c36cf7b325cc304f75519be997d18d1c558bc7887169b8e6d9001b8e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): added workaround for: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/async_star/cancel_while_paused_at_yield_test.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c18c2968fb157c80029b72ba53447ffd3dd33ea4083a3bb03b0958b5242ba3a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(terry): Should check: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/const/map_test.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"9592ba378102f5988c716aaeb135b0cb136427ce2ea7a4370bada3f189418e46"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Move back from constructor12_strong_test.dart after ending \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/constructor/constructor12_test.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d10353011e69ee0596a321a7747dd79cb55f03077eb89f4906d70031101a588"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nshahan) Merge back into constructor12_test.dart along with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/constructor/constructor12_lib.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"3deef5a8f6a294b8df44b99456fcea7fcb3c8b47892dc663efc39b65dc7c0c2e"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: /// Hacky way of testing the inferred generic type arguments of [object]. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/control_flow_collections/utils.dart"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb5a28aeb149510888cf1d2662b022998830c3313e31d25bc66db908a86b433"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Do something less horribly brittle. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/control_flow_collections/utils.dart"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"982d91a28229f594d7f95a68496ee2b288958938794c7d10c4142d9bcbdec4cd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): these *should* be cast failures, but DDC is currently \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/covariant_override/runtime_check_test.dart"},"region":{"startLine":26}}}],"partialFingerprints":{"codehealthFindingId/v1":"65f386a2eae009c169bbec2ba5eecedf79ca03f635c2eed67c43435e210d95d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/42224): Reconsider this different behavior."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/double/identical_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52297888db9017a20534f330c9bb067313b67ce045cf2352a28e176f30dbfe0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Update and enable when \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/extension_methods/static_extension_silly_types_test.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"f86062020e07d590cbc7f6b8289aa752797b44bcaea579fe285cd4a9cb8e2112"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Type \u0060Never\u0060 when it\u0027s added. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/extension_methods/static_extension_silly_types_test.dart"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcb58d3ee33f95f9b25df177aa9bb17076b266b7de3916b2b4862130e12c3b0b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: enable \u0060\u003E\u003E\u003E\u0060 when it has been implemented. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/extension_methods/static_extension_operators_test.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e255ef54974eff1472f9da4bce4595da6d2b600f0ae3ec59d746881aa0dc09e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jimhug): This return null shouldn\u0027t be necessary. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/function/function_test.dart"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b38f36823b927f9421ec987dce0765f3e2738e36c5a7dd1493511d34b98bf1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(32483): dartdevk sometimes defaults type to \u0027Object\u0027 when \u0027dynamic\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/function/call_generic_test.dart"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd17cae72c71cbff5c40a5f4eead64ad1a02defc17779003c4368c3eecfa282d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(31581): dart2js needs instantiate-to-bound to generic \u0027dynamic\u0027 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/function/call_generic_test.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"faa7791989bc88ba5d1278a76d63a04253987ae579c9aee5fe39c2e2c9e592fc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Apply of instantiations \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/function/apply_generic_test.dart"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"547bf1d5038527a01f48e1bdb91b4a4a771885c4c60e63a884b8b9a11c83645a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): changed this test to avoid shadowing a field with a getter, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/identifier/naming3_test.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"83cfda60ba2ad4d3de298195a6b44eb2f55f31127f2fba1c981def8e89b0d4f1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): enable after fixing b/4604295 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/is/instanceof_test.dart"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"622492ba3823dd252c52a860089af4d7fcc3ce7298bcdcfd7cb4f6e3069bc0c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): according to the spec, this does not appear to be a valid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/mixin/factory_constructor_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa806bd3170922aba727e883b3d4b24e8b217f360baa3883efce43730f3705a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): according to the spec, this does not appear to be a valid \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/mixin_legacy/factory_constructor_test.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"22ba29853b084b482b9ae4242c4c6f0d27d7a18a94f32ed87d671fa608b2ab94"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"1662ddb923a8fa69e8c51872d9a5670b6b14c4def865781000244083a6ed496b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa8b3bbc10958ed17704924ae0c174a44f81f881c67f48814f0682eaf10f4536"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"515a574913074035d7479e3540ea3b86244bfc1f4a435830dd484dbaf1aed394"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"d15b33ca84e875c3cee95ee4838e9d654f3aeda528d144fa572c98c68fdc8ab5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4902989e28ea1f325a186d5a0c8054d841db5e3baf4aabb20ee3ea0983f8bea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"8307a9b6ce725f3a65c05d2c2867da9d7831c80ce290f9aea7e1c6d741ade596"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab73cb83a94637ad5f982a895da29d092671aab01b51c2a0042e92953e581013"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cb2820e365cf3b427b52c2874bbccc780216020ecc5ac1800fa8af028a0d1ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f7c9255b14b5cebf3fafc8bdaaf780fb3fff10bceeff272facbd59d58b523e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"01faec0f75223b83ad67a025d660ecd76fb80c4f307ce9ef6280be210032e662"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc7ca14cac0143967285b2eddd0f709f02562869893d35192bfcdab01b051db6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"280e52efeab2c24aad9cb00c9fc782fa3fc50c92fc85d6da1f5f19388b27b709"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"b816511a34cdbfad469f4eb8c5e8d7ca7fdc897a1602b677401c702bdf01eae5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"beb92e64d2cf132545427ce56740ba41cfab65ae9fbb622b10a0683886ea510f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"dac64ca59234458bdde2ad20cdd4ef48b4172b5145cadda742cd59cdfdbf2563"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":298}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c2ff74b54599df7798c3c109a03aeb8729302a30627b6e03173a076fec03107"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":304}}}],"partialFingerprints":{"codehealthFindingId/v1":"6dba495200d4dc6e82b9e65e77200c229040bba2eacecbba1d29c7b8ae56e894"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9f4acba6e103416a2ab8dad85cfcd4df081581410520d6f70e205877f176935"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fb0159818e1157aaab7330360d876d500ae7c9987bf6d0c703fdc08545d2dea"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":337}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a36b5f4355760be7b81490906a7f882500075b4a62214fb38f8f981753a5583"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b74958a95f180efb2b14b14e5d2efeb2289b6fc62e811afcaae014086c9cd9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bd9fe014b5a15d0cb59e705f4f3b68a3101cafc1fe526aad8a0b19b1c205e4c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":356}}}],"partialFingerprints":{"codehealthFindingId/v1":"4afc6230fbaea5471e33d03b629f18a0a0c8fa15474bf6a15eecfbb044ba3b95"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":363}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e37c735cbb7cc7edd9ffb2eb175640b7f007af0111cb279ee2a72aa07765fab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"2df697e3583477e1bee31805062ea41008098f301a523654d95ce6807e7c5d92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e81d26dfdcf58fe6b2de019e3b37b43436ad9a5492649b4dc5bf5643db4c0cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":487}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b08fbc697d0186231f9a544a31b9b60a346d3feae8e56af51953cd6e23230cb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":494}}}],"partialFingerprints":{"codehealthFindingId/v1":"c37d37f14f7a58ce89a28bc7b73231a3912d165af66087eaa806bc472bb39b25"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb07285259f3d10bbbe23ff48d9c7c50ef17e06c16bdd0876b15bac2452741bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":507}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ca4c28a2a384cc0fd71caa061aa49b66e8a6ed2f767ff40a96181e0c659981"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"49ab8d4a150991256b8167831fd7c77375fec57aa46c4e9d750d96ff83803365"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"77d8c88a91a43aa2631fed710a24ea41cd55bab9ab9d360b000033d7ddf6d704"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":539}}}],"partialFingerprints":{"codehealthFindingId/v1":"f648d287d19564ce7f68ec911c10f3ee92efa27b8dc8dcbb207240677bb6c868"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":546}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f47ad3f835527db3abc04ecc6f729f0185ed5dddf59083e3ec1e2c4566107af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"50db612db39b1d4092f91efde1793bb12e6a0b2f4e0a1c1933885d7d8cc376ae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":559}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f919bcf4c1fcd2c27edac8da2459b6a69e94f45a6b55458b35dabfec9d9fc9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ab5ba753aa47b458ed01bdbb9d1b8d363996d7e2174be91930fd73867472c91"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":678}}}],"partialFingerprints":{"codehealthFindingId/v1":"db9e83ded505befb99f8cab603bc4389a5507fab3e5199ffe846f3ba0d66cd82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":684}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba42dd408de3760cf99738419dbb4ca3e5d6d90c3003645c22a1a0a123c43fed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"2584bbe1aa0be7e91b6639aa26612e8bd1d1cf1817e3920daa8569d6f574df8a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"26134f645a81cbe979e361480bc5f790ad06a72564898963a203fd6208eee978"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":704}}}],"partialFingerprints":{"codehealthFindingId/v1":"7507c6cad5d56eba7354b07f77d807e7c0a3dab9cfb366fee2640b8982175bbc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":717}}}],"partialFingerprints":{"codehealthFindingId/v1":"80eab4d9c06814fb0318fadc73c4e33b8c029f4736d62764465ecc98b95df063"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2688f4a92ae4c9259810751a8e3b4167f5f73dd502741aa23fa5ee4e4dc865b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2c9685c675cb785057fa84239a22a79d744a9678ce8e0c09611141399c415a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":743}}}],"partialFingerprints":{"codehealthFindingId/v1":"486a573c8f34dd6c5f54a27ee4334df3982ae61404add4af860200f6e8a23c2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":749}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8956d971a3ca6c0bbc503c38ab4d04ae94b31f419aa600a7a5e0a7a0377adb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/local_boolean_test.dart"},"region":{"startLine":756}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0b5418c327bb0aad1755f72c4c7caf08df04c1109b6e663594890c375f20e6e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/boolean_parameter_test.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"252ee4937e647a64fe24be3f62a633fef6b2b674a704b1728a94095f1595a6ee"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/boolean_parameter_test.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d0c25a3886632388e42df4a7b02309c208efc49c5f2117af793ce5ea3ad911c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/boolean_parameter_test.dart"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"9dd1efed6433fa8382877de138c4a7d961f6c67739cf95d87589e35467e4987b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/boolean_parameter_test.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ae451a62e3bf3ab35b6fbbd388e25144d7ec14246c49ed4270b522042738be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/boolean_parameter_test.dart"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"632624f5cfe1e12c20300b386dd9a94cf1549eec7f2d22f6758611a5c3dcbe6d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/boolean_parameter_test.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"a809794dd06cd20f301a8bd431d14c265d4b07fc1c63dc17a159bf7a8726a194"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/boolean_parameter_test.dart"},"region":{"startLine":105}}}],"partialFingerprints":{"codehealthFindingId/v1":"3aa48164ff88678808297bd96fed21fb3649209b50b366795f39852e957ae096"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // so we don\u0027t promote.  TODO(paulberry): should we? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/flow_analysis/boolean_parameter_test.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"32352ebfe32d3091fd480db94f6d31f98d5588028c0c9edd7d633e4b374ac634"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(mfairhurst) add cases with type parameter types \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/resolution/question_question_lub_test.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"937e4b2993d72bd8d1b7530fd6a878fda38628c52348775d00524fdb007fc4b3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(45942): This may be the wrong location, but until the linked issue is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/nnbd/static_errors/local_function_inference_test.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe5aec356ba15bfda0638f9efeb30979a7b8608ce27e07913a8e27df6df9eb38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): allows either type because of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/no_such_method/mock_test.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"89574216bab6e9833894565393d77178b095b1c4a1b701deda4cba845b55aaa9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(lrn): Change Expect.fail to return Never. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/null_aware/null_shortening_test.dart"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9b7260c7bad43a7394b25f1c4e5d860dff62c4ed2c34ef031340c10e83d6aae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): Add test cases that can be run on the web and the VM. Something like: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/number/separators_test.dart"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"f08ab1863b868aab95392bf618683ebf0776411631ec4ac60671e870941e55c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srawlins): The text of the expectations below is expected to change, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/number/separators_error_no_experiment_test.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"be615116f70e8947faadb904ccbe74f0004f7f05d0080463c413abbb64b46509"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srdjan): Clarify behaviour of greater/less comparisons \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/operator/comparison_test.dart"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"8637ac4f13891e408837fdb452ca52e6aade7ca5f9308294d9682b8233389b90"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asiva): Should we try to interpret 1 above as an int? In order to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/parameter/parameter1_test.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"5027d8c53818a4c7e6c2108f587a4d44a61ccd9447fbe24babeaa0f23a73c484"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Should the real exhaustiveness handle this? The \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/patterns/exhaustiveness/fallback_error_test.dart"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7cf8e6d53755a1f153ae8bf7a217f3da8db776bef61531697d77ced97081694"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(paulberry): investigate why CFE doesn\u0027t produce the expected errors \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/records/type_inference_error_test.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9f6d9d91a79a72ba096a9a2c9a48cb18e5503b214d49d340f3803c739aaea35"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): The above specification will probably change to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/redirecting/factory_infinite_steps_test.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"0718163dce6c651ebd9afced6d93c38508f1848d984246caec1b3c84d8e82f3f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment repeated across 16 files: The identical TodoComment appears in 16 files (16 occurrences) \u2014 almost certainly one boilerplate line from a single migration or decision, not 16 independent debts. Fix the systemic cause once rather than file-by-file. Text: \u0022// TODO(51557): Decide if the mixins being applied in this test should be\u0022. Source code is not a task system: track the cleanup where tasks live. (Every occurrence still counts toward the score and metrics.)"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/regress/regress34488_runtime_test.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"be85cc0549862aa779c9da8cb0f8e503efd7c449c7f22be9186c8ef3713ecafc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): DDC throws an nSM if the argument types mismatch, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/regress/regress12284_test.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"784ef94c709bf0c65fcaf16a9e729a18a61ee9360c53daeef8e470de98251764"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(karlklose): Please remove the return when dart2js can handle \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/return/skip_expression_test.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee4e2d46df8fb6a9e2931596d274e6b57fd0514496972a529da1c44a15dcb230"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Using a multitest instead of making this a static error test \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/script/script2_test.dart"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab37d619c158ee03339261af64fb84704aa285263eb438209f14b908f24d6b4d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(asiva): Turn these on once we have error handling. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/setter/setter1_test.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9cb4979a3c8e95d7bfe74303dc409dd296d5374b0768a9d57907a08bfd11e66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is a copy of the language test of the same name, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/sync_star/yieldstar_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"f51a4a58886e1eae35ad93dc0c38165fec34410107597a1a44a089ceef2bd6bf"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): this is a copy of the language test of the same name, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/sync_star/yield_test.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"912717a51f85d907dc25453c3f4a02a48831a94064e2cad495dc112d88b1f0a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jmesserly): added cast here to work around: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/sync_star/yieldstar_test.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"3164fe3bd9ba7138ecb3af4dd03b35ec5b49a44256c6742a7ddd5bd4c4ea8948"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigurdm): Check up on the spec here. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/sync_star/yield_test.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ffbef41e092822c597558ef6fbfd187c29162728f4ec5e6be7278160d18c84e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jgw): Better tests once all the exception semantics are worked out. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/syntax/statement_test.dart"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"e98da6eeb49df5e15b6f3e6613f9cd09718aa81ac44de0c328637202989e9fec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): This test has a lot of overlap with some other language \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/type_object/literal_type_literal_test.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3619105ff809e88e016e39db4b786a79c238b1cff515f4acc058d484f8f44db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Should it be a compile-time error to create an instance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/type_variable/bounds4_test.dart"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcdb52b87ec27f17e9f9a98cd0b6fe189df5ef5e9765a83faad71c17ebaf5331"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Should it be a compile-time error to create an instance \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/type_variable/bounds4_runtime_test.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"f774c8a19d2fbf7bfea7976f0e0f741f21fbb67a03e46f9416fb7a802a7efaf4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jlcontreras): this is a temp file for the valueClass experiment \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/value_class/value_class_support_lib.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"d860704df0e649185672c525717c1e0bef458ceff494e09c4684351405fc3d8b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kallentu): Update this once the behaviour of super._ is finalized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/language/wildcard_variables/multiple/local_declaration_function_parameter_test.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"20b2f9e453bd796b3bf34d8f41ff53edc7cfcf6ad12a1bdba40fa19fcef1ab55"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: find name of default transformer \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/async/stream_transformation_broadcast_test.dart"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e6b8557ea563aeae34cbce819ee58f636e346eecb81359a5f98a37c87d7cb3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): this test originally changed the stacktrace. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/async/stream_controller_test.dart"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c61a00e9db3d7098fa6a16b507cb7abdfc1a9b2d371717bbe9896a1d4a56107"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): this error originally changed the stack trace. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/async/stream_controller_test.dart"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"2212d84c353ffb51026b070bed67ed0124abdc2a5a8f54c8179d9caed8a8e406"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(bkonyi): This test should be moved to compiler/dart2js. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/async/dart2js_uncaught_error_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b5f6c89aa6138f4e1bede74911267c432fd716715771d0c4f4f74fd77e1234b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): If we need to use this function frequently, make a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/xhr_cross_origin_test.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ad0693dcc59068e937715ad849c5f145278738d5def349d02a7661500b31247"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(antonm): one can create a view on top of those \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/utils.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"d06f5c0fb37c1f388034b7da9de57bd209df8409e19a2e715996dbc8a6767391"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): Issue 23144 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/svgelement_test.dart"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a6febb8c4a9b27ecca75f391a831d0f028f5302d37e221068fc3aa01425076e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61043): Support this in the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/shared_array_buffer_test.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f3b721db39eb4b040400ed1103109291561b7d32d344c4fd3da33fc9e3c2ca5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61043): Support this in the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/jsify_dartify_test.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"a20441a93d1bd79a80bf862076e11bab7ed9bedbd6af4922514491473c86788b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61043): Support this in the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_types_test.dart"},"region":{"startLine":730}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f7c11012f20d307a2fa3bb2799a6f9e954eca3d10c5d4680da25a51c0b0e1b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/61043): Support this in the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_typed_array_test.dart"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"23834d8ecc314020d9bf46787fedd2681ba51e27fe1f18c59b8bb6633668cd23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(samhop): test that \u003Ccontent\u003E and \u003Ccontent select=\u0022foo\u0022\u003E and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/shadow_dom_test.dart"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9bee94f8f46a3ecaafc6cab24ee50cd6a214d4556b1de08789b4a97347da404"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Update this test when you have actual toString methods \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/node_test.dart"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7b30a6c9294b05814677461c8db4a77ab5cb9d11ab886b149de7583488d095a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(antonm): accessing ports is not supported yet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/messageevent_test.dart"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f3db4571df1a03423f0f932a60052e74fadf04a64ce02cea5151f503597a88b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): Actually exercise this, right now the tests are trivial. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/mediasource_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"93ec5f62feff7f1af7d870375a465a3137048352a9cb79577430c40958d10497"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): Revisit this now that checked mode is gone in 2.0. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_typed_interop_type_test.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"abf2ff2bd41778d18a8258feb8045f6c0491e43ab6ffed191b1f8fb8e13107c3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29419): add back this line once the appropriate metadata is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_typed_interop_test.dart"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f747334a07ae2ad60b7e789e36eaf406adacfe4e74cc2ae134ff59f24d180f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(29419): add back this line once the appropriate metadata is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_typed_interop_test.dart"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d348b8b4684883c2efa126a3a25ffaec8030e67512a02bd9b85f7a36bb9ef0e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(41375): This should be a static error. It\u0027s invalid to have a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_typed_interop_default_arg_static_test.dart"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"16427a7c1ebc84f8956dd77ce7cbf186e08e738db965fd622ba9564cd9a65b72"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(41375): Remove this once the above is resolved. This is temporary \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_typed_interop_default_arg_static_test.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bbc9770f7299a01b5cbb73b60c09508d835172445cd83e4723945ce03c307c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(justinfagnani): old tests duplicate checks above, remove \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_identity_test.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"801023d8305655b245433b49934fde49edc6b00bf8e3fc60007c29fd8ae4e3e9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): make this test pass. Currently some type information \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_dart_js_test.dart"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"cca91e30f98bb5589f2a44d49525095c943e1922d535efc9ac009cfe01fb512e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(justinfagnani): make this work in IE9 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_browser_test.dart"},"region":{"startLine":22}}}],"partialFingerprints":{"codehealthFindingId/v1":"45395a33c7739e73eaf3cd0633ad45cba048d6cd24e50b0af7b6bb5f2553f9da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): add a test that distinguishes reduce from reduceRight. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_array_test.dart"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e5f7d95ccdbe7896541fb2a3a7e5b86b08c4edf15c0fbdf9859900bf352f99b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): add a test that distinguishes reduce from reduceRight. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_array_test.dart"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"69dfc74c5c8d168bc116a7e7ac31e2ce4cce41c9cdd9e8970f8d13babcba4c62"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): commented out until https://github.com/dart-lang/sdk/issues/26128"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/js_array_test.dart"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9c4af32c2bf8ac058ee92cefe3f5cbbfb4c4e4008fb98f0ca8852266c8597b6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(b/5286633): Interface injection type check workaround. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/instance_of_test.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1af03c9411f25da82e456393f47d2e04175da01a073c8198f82e6b8c4d745b6"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: Ensure this is an SpanElement when we next update \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/instance_of_test.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"4af88a875b6e6164acde160f5811d69bb70edffdf30b3b10d6e63d6ac2943334"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: we need some massaging to dart:html to enable HTMLOptionsCollection.add \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/htmloptionscollection_test.dart"},"region":{"startLine":11}}}],"partialFingerprints":{"codehealthFindingId/v1":"061eadd87c335e58cbb561e20db8245d45e1134da713ac710a3cf72c18d2793d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Issue 4832. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/form_element_test.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"30acf26766e8fb854dea8bd81eb25eee06935250b785f9f40f4dd4bdc82f6bd7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): This is a bad test. Revisit when we have tests that can run \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/form_data_test.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5a3adb3c7fe5f3e3dca93b08a1d2a2b71c06734ef4a5b91e810acbbb25d03c6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): The target does not seem to get correctly set. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/event_test.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"83f11aeee76f243548690cff3819ff86160ee539a7efc6754a5279d7efea8f97"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): Can\u0027t pass window on Dartium. Add view: window \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/event_test.dart"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc70c66978ffbee9cfe48863b7dc4a9199dad6f329f6b27131c7d84c251bc248"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): these checks throw UnimplementedErrors in dartium. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/documentfragment_test.dart"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac71a57233b244118051dddec8964c26c4b48c894345fdba3393a74ba424522a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(nweiz): enable this once XML is ported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/documentfragment_test.dart"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"12d0691ecde13a5330b416a9c1cd0584d22824da63db5947951b8ce764020d91"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: nifty way crashes, do it boring way. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/document_test.dart"},"region":{"startLine":24}}}],"partialFingerprints":{"codehealthFindingId/v1":"eaf5f7a31a8fde60740621ee7d81d66eb0731ef4611400b405f90df5265e258f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: nifty way crashes, do it boring way. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/document_test.dart"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a6feb269389f974e1f2894fb34a9af9d463b2036a427424d977d1eec7d92274"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Rename this to wrapper_caching_test or similar.  It\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/dart_object_local_storage_test.dart"},"region":{"startLine":9}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3cb55d8163bcfea7f3cdb51e9ee87684c88186633b239c3a1aeaf0d8a601c0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //TODO(gram) The next test should be written as: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/cross_frame_test.dart"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"66c7dd5742f690c19c80af1280d4ce8bb47ea44cfc3f526c107ef1cfb90ffa13"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(gram) Similar to the above, the next test should be: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/cross_frame_test.dart"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"adddcd89763d2c36d1f205e147df7deb2293c50150edafc8fe09548d2c48c07f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Why does this fail on Dartium? There are two types with the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/canvas_pixel_array_type_alias_test.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"0db63212ffd9faaf3e438db777598041e723afb383754fd1dea15f038d19f907"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(9322): This test times out. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/audiocontext_test.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c684f02fad7f1c07c5a3da743bc808a4965c59ec5f6e3ce4301de369ca996a4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(antonm): in Dartium ArgumentError should be thrown too. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/canvasrendering/pixel_manipulation_test.dart"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7f0d3cc19273706884779bc7d82efa2e494d6aa0d23069e0b05c83dbbe53dec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(amouravski): Better fallback? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/canvasrendering/draw_image_video_element_test.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"84139e8649372d15e30d45e6a96a422ab23ff53e51c3d92fa4327ae6d6717783"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(amouravski): Better fallback? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/canvasrendering/draw_image_video_element_test.dart"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"795e8bf12f03623fcc4bee903abb1c45f6fea627051e520ade3d7b895e5c02db"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(amouravski): Better fallback? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/html/canvasrendering/draw_image_video_element_test.dart"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"67d03a5be3324bc53b5ae166d74ac1f7fd13e78f65194b849c053be677b9a206"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sigmund): use expectAsync when it is OK to use it within an isolate \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/isolate/unresolved_ports_test.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"b26cc1fec15d310318a5793015a2adff1c1aefd90e396007ad2e8bcb879e37b2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Send an exception back. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/isolate/mint_maker_test.dart"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"047033874f68e656ed17dc7d6502dfeaf0862ada3a9980ac148ebec1034544bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Throw an exception if the source purse doesn\u0027t hold \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/isolate/mint_maker_test.dart"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5263e56f1bcc4f0875701f0d4f54faa05f4ab76c3699c11f2ed829766b00201"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ngeoffray): Implement this. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/isolate/mandel_isolate_test.dart"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fa7cfd7f058f67f6a79bad8c3cad979c6d665691b19582efe8e7143ad913bae"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Delete this test after we remove this conversion. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/jsify_dartify_test.dart"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"41df4de79955dc35633e3fbb7bf115cbfdb63275cb272a5802b96915a6637a7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Split this test into multiple tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_types_test.dart"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"d56faeeb563c2115a279b7d4c76bac78625bcc5f3168ea055dc065f78cd3445d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Remove the \u0060isJSBackend\u0060 checks when \u0060JSNull\u0060 and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_types_test.dart"},"region":{"startLine":979}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce40e91b3065f8682f30500c36290a5d0f8e35b5afd9d5ecfbabd5018926f2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54214): This type error is not caught in the JS compilers correctly. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_types_test.dart"},"region":{"startLine":1067}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf2d9171b4e5fe5f03bc47ebc77fe493ee2b30c71dc57d2c28e74e37664403ad"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //     // TODO(54179): This should be a \u0060jsNum.toDart\u0060 call, but currently we try \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_types_test.dart"},"region":{"startLine":1072}}}],"partialFingerprints":{"codehealthFindingId/v1":"66d91dcd565e1ba438ab35355ef3dcd018502f3cfe7f20b7877aca0de83d8fa6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54214): These type errors are not caught in the JS compilers \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_types_test.dart"},"region":{"startLine":1189}}}],"partialFingerprints":{"codehealthFindingId/v1":"3485ec7d123040fdc2f55491ede0bda2727d257a9b09082956201967f7ea5c7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: //     // TODO(54179): This should be a \u0060jsBool.toDart\u0060 call, but currently we \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_types_test.dart"},"region":{"startLine":1197}}}],"partialFingerprints":{"codehealthFindingId/v1":"b31f14269b72103f6b97059426d6e7285090321946becdbfcbb8730a53568839"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): On dart2wasm, this is a \u0060RuntimeError: illegal cast\u0060 because \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_function_conversions_test.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"76fb7867db71a06b3636ebdc0d8bb44f10838733861604b22dcd8182dd741105"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54179): Better way of writing this is to cast to JSNumber and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_function_conversions_test.dart"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e357e9a3e956f9f1096a7bddfce2f7b62647a818f41ae90afa4fdd831f1a52"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54179): Better way of writing this is to cast to JSNumber and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_function_conversions_test.dart"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"24ff7b3e69aefbcf284945c96d55e208c2f7903d0963e9eb12e7ce5df4cbafa3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(54179): Better way of writing this is to cast to JSNumber and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_function_conversions_test.dart"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f314f962d5175a09883ff498020b7e0334cff9be69cfb938c8e6fd58eae9e2d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): It\u0027d be nice if we can test that passing a null value for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_function_conversions_test.dart"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8acf7883c8ab360526bbf78597387e1e9cb867e119c1685cd3de843d0601c27"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(55881): dart2wasm\u0027s type conversions are based on the static type, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_function_arity_test.dart"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6468bb4759dba433ccdfe45cdbfac688cf89ecf58ead21fe1f8f3ac58a7d39"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(55884): DDC lowers function with defaults to use the JS default \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_function_arity_test.dart"},"region":{"startLine":395}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b06f8a6cdd2b9efb2310aeefe60e34f0d8e6c97fccb0cdb074f5212c8cae0a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Test the remaining JS Array methods. While we cover the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/js_array_proxy_or_ref_test.dart"},"region":{"startLine":160}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a0b6108af3a781f6636d2f247d6c1df1cdea2e13916621ce9d4f0ffdb73aa32"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This only tests classes and top-levels, but not members inside \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/extension_type/incorrect_js_annotation_static_test.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba3a214af6b3bff6568789f8745285a094c4ea99c4c7f6b64e7cf3cf8bf4a7cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): There\u0027s a decent amount of code duplication in this test. We \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js/static_interop_test/extension_type/external_static_member_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"fcf968decf4d67c3df8162a366b91816c97e90642d9456b564856204c057fd1a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This helper is no longer in dart:js_interop_unsafe. Move this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js_interop_unsafe/basic_test.dart"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c9a8da9b412e589897a74bc0e648cfd470083cd097d1466fdae971042d014f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This helper is no longer in dart:js_interop_unsafe. Move this \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js_interop_unsafe/basic_test.dart"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"d102427dd02463e15268db9014481e4f72e33ce0a7c9e7da5ae8841f81273712"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(joshualitt): Test for \u0060undefined\u0060 when we it can flow into \u0060JSAny?\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/js_interop_unsafe/basic_test.dart"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"5684d62a9a24e202cdb9a1376690a129ec52f40b4be820597ced411c4008035d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(rnystrom): This looks like a VM-specific test. Move out of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/math/call_cmath_box_failure_path_test.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ba4e145ddd4cc22f56a8dc1da766416e69fa64142afac203716e96a50d776a6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(6490): dart2js always returns false for hasDefaultValue. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/stringify.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"0882ca4c417c2a3d8cdcdf252a77f9e9f06ae75657dbfd404f80f40554a88daa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Move to writeVariableOn. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/stringify.dart"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e0950ae6e1927ffdb6590fba9a65a28a124f2579543639c5958c4618a4eb34f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Test this when dart2js handles parameterized types. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/return_type_test.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"71bc03774e9b521caa7d0e74feb73e39e75282ca65c06494a787a68d3e7c3314"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(6490): Currently only supported by the VM. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/parameter_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"16c77ee533b114d809a985c77025fbfc9988d3fd7169953478cfb25f8e153361"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(6490): Currently only supported by the VM. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/parameter_test.dart"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"a226131a4abfed4577600f97b3cad3859692d8be51ca724aa4a913d79c936c00"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): use void when dart2js reifies that type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/operator_test.dart"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6a39cb9968d31bff5192f8993d1af469b014c109042c40f69bd47ba7e2d837f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Shouldn\u0027t have to sort. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/mixin_members_test.dart"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"61fe4958d1c739803d778113b754211ed1b9a9e77715e1a2d0ac007f0fe78302"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Shouldn\u0027t have to sort. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/mixin_members_test.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"e51fe5af2ab5625ff77a3a3b754824b40fa4b2ab81909c9f07711845d5fc0dca"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Shouldn\u0027t have to sort. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/mixin_members_test.dart"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"60be79cee2a391d491c9fbf9a60db4f6e1e9c916cf8009a96eed2c4cb610b1ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): When both implementations agree, remove the multi-test parts. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/mixin_application_test.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf658284d6e1c0291db43db2ca3218be5c18c6bc4750a49114b002abfc97250"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Test optional parameters (named or not). \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/mirrors_test.dart"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"10a8687ab82794f9232be2ae89f9a044b59a2f1e7ff644e730d29db676710235"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Merge with \u0060immutable_collections_test.dart\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/mirrors_reader.dart"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"236739365bd8d3a43d6b3a11f0ffc07cd166704761533c8d43d58c080ab778b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(ahe): Test local functions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/metadata_test.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"712a0cedebdfd4a243c53cff8cc7c82b9e98307809916f2054f8a2865a1dc019"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/48365): Support FFI in simulators."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/invocation_fuzz_test.dart"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce6ebb5d3f79485b49165c26f3d88a88565021e1294965ddb1bdff560f86469b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(floitsch): use correct fail \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/mirrors/intercepted_object_test.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cd4422d6f66c49d7a98bdb8a68263c87c5b8f2ec9e58f8ed328e347caaf1a9e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Come pure null-safety, this can only be \u0060TypeError\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/typed_data/simd_type_null_params_test.dart"},"region":{"startLine":13}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9107c36bac2ba8a0c7a235935bfe67f3d50654d975eb227a7f10229ee1ed1f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(eernst): Come pure null-safety, it can only be \u0060TypeError\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/typed_data/int32x4_test.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"26a7e2b9c3adff9bc5012eb104d542eb0a3f5c1854015d9f4957eb4e97935a1c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Maybe move to \u0060int32x4_arithmetic_test.dart\u0060. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/lib/typed_data/int32x4_test.dart"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"d22d5f0e59c9500a3513b62aa36bac223cbdb5f976e8596ef009967622978fe4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: remove once bug 2264 fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/int_array_load_elimination_test.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e86ea91c3bc92f8258e2acbecbac8b5952697fbcad4e303f7a18e3077343a9c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Add client context argument to WebSocket.connect \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/web_socket_compression_test.dart"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"5158e1a8ff0a18a83bb39d2304702b807ca19200ff8974b0a8a279d22eea8b53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Make WebSocket.connect() take an optional context: parameter. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/web_socket_compression_test.dart"},"region":{"startLine":463}}}],"partialFingerprints":{"codehealthFindingId/v1":"27cdd109649af88e671d74b3eab7da0d95e1f593ca9b68fe1424722779a5339a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(http://dartbug.com/61028): Once this is addressed we may be"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/unix_socket_test.dart"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd230e0abcae733760a00b318e442f7174ea823499f0066fbc6966bb95d721b7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Enable the test with all argument combinations: \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/socket_upgrade_to_secure_test.dart"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9dd0909aa613fa98ea93aa669aff3347ac60d751a3c489678602281df4ac79c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/60246): ensure that the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/socket_connect_timeout_test.dart"},"region":{"startLine":19}}}],"partialFingerprints":{"codehealthFindingId/v1":"10e376afed6cf699985ab10de8f73edf595e636231db865465a99e125ad346c1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://github.com/dart-lang/sdk/issues/60246): ensure that the"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/secure_socket_test.dart"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"aacfd8d7fcb231328e5b3aa56d4d2915afc3127d4383103a85d14021010b7294"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): When null context is supported, disallow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/secure_server_socket_test.dart"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"568dbb56b22a1601d84e0704fa02ba47bd9bee62d1f2a750fd374142ab1a2d66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): When null context is supported, disallow \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/secure_server_socket_test.dart"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf1571486bca79ad647cf024f60c5364697f07d71b83cf154da7214b47d90bd4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Add testPauseSocket from raw_socket_test.dart. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/secure_server_closing_test.dart"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"d18a87924fc11a8b404c30d9203d6271fae636e16438119ce5c6f9943817e37c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Add testPauseSocket from raw_socket_test.dart. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/raw_secure_server_closing_test.dart"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"61f6f011c7a5b13363a25e5c364c55f0c6707769341e7d288ce4fefc0807703a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/secure_server_closing_test.dart"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a29ccaeac18cfb7fe4e7af2f6aea1004851f850e04adccb4d210749bcf3f89d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Add testCancelResubscribeSocket from raw_socket_test.dart. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/raw_secure_server_closing_test.dart"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e87b18b0c8e3b19f77ef5635bb4a9e95936a2fc0a6d326a1578d63bd8715e71"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(whesse): Shutdown(SEND) not supported on secure sockets. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/raw_secure_server_socket_test.dart"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"033836df2f9cfd6f3c7f1843e2297bf202ff0644c298449c8e7c4d76fff600e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(30306): Reenable for Linux \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/raw_datagram_socket_test.dart"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"50b5b86199cc4f1a2419db004546447c2983b69e59f73a7d467a37f0a934e599"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): reenable when rawPath is exposed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_link_test.dart"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"84612ee78cea837ddba2b4a9fafa354c31b4b789e7aae8c3eab91f3b028b4827"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): reenable when rawPath is exposed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_link_test.dart"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"c02f29d0be828387895851691a41a33cfe1c39ba55a65dc55b496d9759d7006f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): reenable when rawPath is exposed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_link_test.dart"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"91b11cff96447121873d1a93bb4bb9faebe9ac85c287b0d87dbee711a98cbb2f"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): reenable when rawPath is exposed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_link_test.dart"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa30b02bb8c13cfa1e59573d30d11e17b6fa15792d958ae9ed1c7f33970095ed"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): reenable when rawPath is exposed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_file_test.dart"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a276f2fda3a4026179925179c775ba3698b71398ac9b8564b9a1b596089ee0c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): reenable when rawPath is exposed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_file_test.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff536dd59265dfd8677ae925f6551c2f6994e9d6111135a3428e07f600941264"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): reenable when rawPath is exposed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_directory_test.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8b6ad36fd5db212ebc08e0452cfd5b18087f960cb75184838209dc4799c1314"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): reenable when rawPath is exposed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_directory_test.dart"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"2959df00b948662594b23c5f886ffe485d49a6ebbda67f24699baf925baf035d"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): this isn\u0022t true on some versions of MacOS. Why? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_file_test.dart"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"af0e5b3b8a9c465c213c355dbf660bf44c6365090d2676036b5457faa277beaf"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME(bkonyi): this isn\u0022t true on some versions of MacOS. Why? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/non_utf8_file_test.dart"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"7863536aafe788c280be390fe69453befc9bce563294571f32885687ac91fdf0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(https://dartbug.com/26237): Enable support for additional platforms."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/named_pipe_script_test.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"49041c1e41920a0cfb1097757c69ec90de82d97d79f36eaba87b35ab499f6799"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sgjesse): Make this test work with \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/http_shutdown_test.dart"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d37ac2f012e8b406d4fc4fc7a115d5ef493d7d8dfa78ed0a4e122ee79ecedd3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(7157): Merge this test into directory_test.dart testListNonExistent() \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/standalone/io/directory_list_nonexistent_test.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b7ad00d1a2ea988e1ddb5271bbd53886b3319f19c2e26c01ab301f12774aeb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Share this test with ddc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/non_jsinterop_test.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"08310bd901edcc4472580c6fd5029f09688a711c03be3c7be34a70cdce841187"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(johnniwinther): Share this test with ddc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/jsinterop_test.dart"},"region":{"startLine":8}}}],"partialFingerprints":{"codehealthFindingId/v1":"e53fb926a1ab96169c15f2d6fb26d88a3afbeaa8638e412c9a04ebe0b34575a5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(kasperl): Make sure this does not get inlined. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/interface_type_optimization_test.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"768f906ac3ab97efbdedb561e9eaa8cb256f923a1d6ddb3167d8e4c028a86a76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(35084): An \u0027any\u0027 type would make JS-interop easier to use. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/dart2js/runtime_type_3_test.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"546b487c2156cb8febd32131d3a57ed0b6352fdff3e7d15322553acf32d0571e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Modify this once interop has random hash codes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/internal/object_members_test.dart"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9f40c264bb7ee5235f317bda285fb625d5d52c6ce6253fd13e7522acd418d18"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): We should add tests for subtyping involving generics in each \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/internal/javascriptobject_extensions_test.dart"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eaec0da212c2867d6f47bf45f74d700a4b06482c7764ab8c04a366b4c523885"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add call: rti.testingAddRules(universe, ???); \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/internal/rti/simple_test.dart"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"93c8272aa3f2e5df86f9079f54af7d6f3a4292bbd280c2edc9cb34caf89f346d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Fix compiler assert. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/subclassing_super_field_2_test.dart"},"region":{"startLine":23}}}],"partialFingerprints":{"codehealthFindingId/v1":"d706ad9e9dc4f53e4505112f57e8a9a2f7183eb00e814fed32cd89a6b8acd157"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): The constructor returned by findConstructorForNativeSubclassType \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/subclassing_constructor_1_test.dart"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"5187ef25d159d42adbb653f4eb8e3550bd2f311f6c346ac9c2706013d298a84d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add a case where the parameters have default values.  Wait until \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/native_call_arity3_frog_test.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a0be00a712e959336813bc736d6d4249533bf35fe92411d9836f2d13bd4878b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Add a case where the parameters have default values.  Wait until \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/native_call_arity1_frog_test.dart"},"region":{"startLine":25}}}],"partialFingerprints":{"codehealthFindingId/v1":"63482085b9398578c55295ed50c254b0ae7156f97386fdf06f36d1b7967dd796"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): This should throw in dart2js without the \u0060confuse\u0060, but it \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/static_interop_erasure/type_test.dart"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"e312fa3dc41c8ff54c34e2fb05d36ae3268031b5bc5ac874b6852fbd0c8032e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Same comment as above. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/static_interop_erasure/type_test.dart"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"19de22161194935a6cf974765401c7d9633353c51da9fbf84bfb92f3b4583a76"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46456): The runtime check using \u0060confuse\u0060 does not fail, whereas the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/static_interop_erasure/type_test.dart"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"f126fd5d1557dd5ea5275bb1879622365cdc920f3b63f942e2ad1233f1180d8d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46456): The runtime check using \u0060confuse\u0060 does not fail, whereas the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/static_interop_erasure/type_test.dart"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e82081f92e7fc19ee8fe7721be4d579a3df5e687ac730712b34ef3bf986bafb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46456): The runtime check using \u0060confuse\u0060 does not fail, whereas the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/static_interop_erasure/type_test.dart"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b93a20aa301bf713fc067e15a191ecf8038a05f77a4a16459f9f144643af716"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(46456): The runtime check using \u0060confuse\u0060 does not fail, whereas the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/native/static_interop_erasure/type_test.dart"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd366fcbdd1027ffea86920a5fd583713e52968e699ea56cb458581033cdd4ac"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(40175): Update this test if the access is changed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/regress/issue/40152a_test.dart"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"e228454ac1c9094bc88f9dd66b026f167fead17ee02d517d4080f0a6028c317d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(33316): Remove. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/regress/issue/33296_test.dart"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d818d7619a1ff2f10c865e6a87f1b2d4196abc2a271ede47de5a89614f20a9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(33316): Remove. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/regress/issue/33296_test.dart"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"085e52b90012a8dda06c1dbd349924a4c1cd26ff934ff734da7b7f20b41167bb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Break this test up into multiple tests, delete redundant tests, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tests/web/wasm/static_interop_test.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"23d390095183c9b78e951c95f7ddf09572d0bb0988ab65575d6658732b5cc477"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jcollins-g): switch to version numbers when github has its tags synced \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/write_dartdoc_options_file.py"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd46bf498128265b6373cd3386c9364991e683d352ee93ed848b510de4239ae3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(https://github.com/dart-lang/sdk/issues/51865): Don\u0027t ignore errors."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"94872f090e1a509af2986430e20c203ef0a78016437295009a5bc45d68befc86"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(https://github.com/dart-lang/sdk/issues/51865): Don\u0027t ignore errors."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":454}}}],"partialFingerprints":{"codehealthFindingId/v1":"01a877510b5dd3c4d068bc5b94f3cbd84fad9b0df648f0ccbbbeb7f16c909873"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(https://github.com/dart-lang/sdk/issues/51865): Don\u0027t ignore errors."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"a699da8f6cb1782590f4ab268fdc30ff06473ddfadee3c3ecaee4896b2fa8871"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(https://github.com/dart-lang/sdk/issues/51865): Don\u0027t ignore errors."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":484}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfca2e6a08d81548fb98be0a36e63f97e0ffd6625ef8f7874b65069ae7b84df3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(42528): Can we remove this? It\u0027s basically just an alias for Exception. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"97aa48c098ed8df72552e4a876c629378f4ed8dfb1c866548cd8c2f2f1e507c7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # todo(athom): move the logic to decide where to copy core dumps into the recipes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":708}}}],"partialFingerprints":{"codehealthFindingId/v1":"edaf4941e4b39ac0d385bd82310ebd6b07c024c7e8ffd73d9e88d8b42118a3f6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Figure out why windows coredump generation does not work. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/utils.py"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"c707fa8f842dc6614eb33ef30ad1e49f38445c140b36381e5177a2e58a33c013"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srawlins): Check how to run bash scripts on Windows, or convert the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/test_devtools.py"},"region":{"startLine":21}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd9878d68f1170a9dccdbf567dc53f47e94b4b91c4980244a31f3d4cd7ed775e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srawlins): Enable Windows testing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/test_devtools.py"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"4654a919ece4722a854bfd11b935d422a26c00571470f4c09fbe5168dc792cb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srawlins): Enable devtools_extensions tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/test_devtools.py"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a128c54045bb9ccb87b5f2edff8d5470c06a9f33452501043bf7550dabb0389"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srawlins): Enable devtools_extensions integration tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/test_devtools.py"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"852aa1a220f6cfd897ab02f9ff69f2bc7db27959d59d6f9dda42584c2a72426d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srawlins): Enable benchmark_size tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/test_devtools.py"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"f45430f3dfaf829df9114b79a89ddb752605c5fe859585a2f0d0ef43ca9a621a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srawlins): Enable devtools_app integration tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/test_devtools.py"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"93bb9c02b8e6e86be1b7bbc609a9ced440e3b14cf917c89567738646730506ff"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srawlins): Enable benchmark_performance tests. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/test_devtools.py"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c26e98d7f52035e4d58e75d3674f1d9792d48a392f81e1d5c3de314cd25c941"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(24086): Add result of KillDart into status once pub hang is fixed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/task_kill.py"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"465e733d5929a14561db884b332a7aa4b54c6f7a91847a8c9ad698d9f7727849"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jmesserly): this code puts things in the pub cache. Useful for testing \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/publish_pkg.py"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"7554162a430de7a55772772772c896bd08a8247c39e181dc1507f4ded4a2a8ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(infra): Re-enable --check. Many targets fail to use \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/gn.py"},"region":{"startLine":640}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a6c94135f72e2be5e6a9061bf27eab04cd2a84b88ec21450055e62173492a5e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(dacoharkes): Fetch the paths from that file. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/generate_idefiles.py"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9904656b8a65afa049a441a63d48cec8739ba1d11c942ed0df3105490702f38"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(https://github.com/dart-lang/sdk/issues/64027): Figure out someething better."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/build_devtools.py"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf0e3aede4a522f5ae6b253af9edd55d15fe8d1c0eb35677d7547c7f28f3f4d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(karlklose): also search for inactive failures? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/bots/update_blamelists.dart"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"71bd7307c89fafecf5b93c1a6ba29e56c520afafccd357fee185fbb4753256b4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(karlklose): add index to check for blamelist_start_index \u003C ? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/bots/update_blamelists.dart"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc2ee513da872e8cbe6c5f3644911a82d4c19a671cb3584fbd279938e2733c3b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(antonm): fix option name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/dom.py"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbcdc6abf829b83ff73d28dff23b42b0bb2b0a9f18281c561d45b7a36306031e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): This should be recoverable from IDL, but we appear to not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":18}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e28cf9c2a8611c1b868c866f0a1b41877dcd0ef7376c82530cd6007b557e3d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jacobr) handle promise consistently in dart2js and dartium. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aef2d8d0b4a85f79f67550f8802ec23b8d53cb7e7b52890dc0236e5c26710a7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # MutationObserver has custom _create.  TODO(terry): Consider table but this is only one. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8ccf8f84b477a375ce35039b7b122168d1e67c240e9bd5d526396758b34de5e"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: # FIXME: We need this to access the WrapperTypeInfo. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"956872efa783b0bf86c13d6193fcf362b5a059eb4ff7b9c91d9597fcea8a0d66"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(antonm): solve in principled way. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"60614ddb746d812a8c6096ea1f11d16739f8f4a400d33c97210caeb2c362d8c9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Hack to map any operations marked as private to not \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":835}}}],"partialFingerprints":{"codehealthFindingId/v1":"044536e8925f39cc5b2f1fb2450db14a493f357e8bdd4d8c390dfb67d3d967ed"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: # FIXME: this should be configurable. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemnative.py"},"region":{"startLine":1186}}}],"partialFingerprints":{"codehealthFindingId/v1":"c15460d25b32c2d43d54f9fd5900424d9166585008169d6ad4729877eafb1ca0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): maybe remove all the argument complexity and use cascades. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":159}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d26a46da832341b126cc7f3e5500b60c16682dabf99beb9b666abeb7620994d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Handle multiple and named constructors. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":447}}}],"partialFingerprints":{"codehealthFindingId/v1":"c146320d5adf2008c5ef21606a9963762133b597607a064d08b6d9d550091bf3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(antonm): consider removing it later. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":680}}}],"partialFingerprints":{"codehealthFindingId/v1":"da9bc3f244a7b74773078ad90ad97a1fb20efc0482d9b1ab33232a13d9f5e2e7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): There are no mutable maplikes yet. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1314}}}],"partialFingerprints":{"codehealthFindingId/v1":"428df9a22b0427e90c96763e276fb5785575404674582bdb704710b62108d6b5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(antonm): add types to parameters. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1401}}}],"partialFingerprints":{"codehealthFindingId/v1":"17190702ee46dff1add6382460dbf81f0055a95ca3eb5b76f5e4b658f5c9f257"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): _FindShadowedAttribute does not take into account the html \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1529}}}],"partialFingerprints":{"codehealthFindingId/v1":"f06cf76acad0b3744d9f7712601f4a51a1d22f7707aa0458a428f2ab94adcc7a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srujzs): Determine if logic behind shadowing is still true here \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1533}}}],"partialFingerprints":{"codehealthFindingId/v1":"8450560b72cf192104e510b667cdbed89a184b4aa4d891c91557b66df32f58da"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(alanknight): Fix this more generally. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1576}}}],"partialFingerprints":{"codehealthFindingId/v1":"0935e0c269301e97ee7ebd8bd9f303250d9c8605d0dffd0bf425bf63de5c3692"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srujzs): Should the logic for types and doubles from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"a045dc1d6cc5f640caa4f6585775ac4f42f7441012eb1a90a6abab4f54dbfdb1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Use metadata to provide native name. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1805}}}],"partialFingerprints":{"codehealthFindingId/v1":"0376ebe489eb0c85cfbf3f62bcec21a7d7bcab0f5a2cc0501c5ce64ac6342349"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Work around bug in dart2js compiler e.g., \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":1859}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9300f1d4216de9002932def2465c3627b1ebec065f0529dfdf04e38cc847f2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): If the native method has zero type checks, we can \u0027inline\u0027 is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/systemhtml.py"},"region":{"startLine":2059}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f493f877038d39f72cb20ef32300607cd924706d6788599569620ead7212fba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srujzs): add more if needed \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/mdnreader.py"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0ee899e29adfc1a927d1b148abb8251c4231514c8fee8d2b6321ba9845fa8e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srujzs): Parse this list to determine compatibility. Will \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/mdnreader.py"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1611cd6b19b330bded6e2895664bc963b53eef2f1ee26ffb971782a7472a8d0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srujzs): Determine if this is too conservative. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/mdnreader.py"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"c599ea16dac3a81d277e74f787df63d5e67581cc4218efcafc5c18b39dcf0aa1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(antonm): emit values as well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlrenderer.py"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"db5110794ac29fd02f0264923aa891f8c586707e670826d74adc822fe191bba8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Seems bogus to check for so many things probably better to just \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":229}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a2e254b9d4ef0dac7f2854ad62f143917f985f0c1a061f0d7f06cc98987ebb5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Ignore annotation used for database cache. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"091d7c5a3df38418dd9d43950335e9f2ed737f9b44951cb6f42df1056c32bbcc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Need to handle more than one implements. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd5060365826f02602b0cca49243d6f716404977cc9c22055c9c41f07279084"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Same handling for implementsStatements as in IDLFile? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":558}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1e7afae95ade4d43245bdeb45ca80828b87d6a79bba56c54afcfcb270ad835b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Handle constructors... \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e3d5ad61a4688527517cf4f906ffc65ca385b40c6aac345112a8c2a2ad274c0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: # FIXME: use regexp search instead \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":675}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f1e973b33c1a3f7a5db428603c274918a178f9e0ea80b872d1be5aba6869b4a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Remove array_modifiers id has [] appended, keep for old \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":689}}}],"partialFingerprints":{"codehealthFindingId/v1":"4bc71879871f7351152b19579799da8b704be727e0f3e81b2915145700a24909"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): For union types use any otherwise type is unionType is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"eefb07df0df6a6f44d89dc47c95e94b27efe1975c99ec6568e74ddf5bf0d4699"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): For union types use any otherwise type is unionType is \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4092a0ab370524d4a1283129d3255712323f16187dbaf5b3001a49152a66c92"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): For now don\u0027t handle unrestricted types see \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":716}}}],"partialFingerprints":{"codehealthFindingId/v1":"b91d0e4ee13adaa1f3cf2864b00ace86eb5044e7d9b053c24103973d61038119"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Handled USVString as a DOMString. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c71fb06cd2c469cab054998ef55001814dcae7982fb15335986d086f6a0bf2c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry); WindowTimers setInterval/setTimeout overloads with a \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f8b4df23b3ea210e50ec0a2d2d1b0c451bc569f5ad70da08ec6448cbd5bffd1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Any union type e.g. \u0027type1 or type2 or type2\u0027, \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":737}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a1f0bcfb0853512762ec3e0f4c37645e7fdf34e9dbc0f6af900dd0fdfa4f6fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Need to handle emitting of enums for dart:html \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":775}}}],"partialFingerprints":{"codehealthFindingId/v1":"00d2774296094ee8e29e60160119957d74c50bd7a2f77c3f00f1d166ac00b83c"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Can eliminate Suppressed when we\u0027re only using blink parser. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":967}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bd422752e3b99d863780cb21c6d9d4d44951f1e7fcda51f6124e7da94bed966"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Can eliminate Suppressed when we\u0027re only using blink parser. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":1022}}}],"partialFingerprints":{"codehealthFindingId/v1":"abee64b752c9e91ea8161667b72428f380cb6dd4f3bac6632923db83475f32f0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): Recover this from the type instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/idlnode.py"},"region":{"startLine":1149}}}],"partialFingerprints":{"codehealthFindingId/v1":"58e96fee459803fab1bdbceb4e91fbb5040ea85edff6858144c22f541f4aa502"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Need to remove when ACX Clipboard is renamed to AcxClipboard. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":35}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0680414396d54cd5d69f6f1e87ed13c7a2845a938635250be92382aeadc4c19"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Symbol conflicts with Angular: dartbug.com/20937 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e1aaaa3e35d289872207d297c887cf86de32dbf4eb1eafc5cc5b12ad36dedab"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Symbol conflicts with Angular: dartbug.com/20937 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"a76ce97495b457666e4e03bee4cec1b75908f9653907dd08034e3a48efd7c229"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): These have been converted from int to double in Chrome 36. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"f788c3a57639715cd74096e850e95dc3a242adb0ddcf49fea0d9616d9a331a7b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(leafp): These have been converted from int to double in Chrome 37. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd08830d5a210c49569e6cce7598460932622100d877a4c64aaeaf1aef22170d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(tll): These have been converted from int to double in Chrome 39 for \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":549}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec4f68a9e7bb1e4eb0221767dfd2bc3cd13b4920639fd1883ba5a62a18cbf1d2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jacobr): cleanup and augment this list. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":693}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d9ad8a5e94653293add9a5fa14410439f0726c5abbc17b8e41812eedddcad37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): Use deprecated IDL annotation \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":699}}}],"partialFingerprints":{"codehealthFindingId/v1":"176825d321944fc9be2f3d1217cc9474c69bb1c9a6dc34204afbff488212157d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): All offset* attributes are in both HTMLElement and Element \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":819}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe6e05a73465998938918fabe9f35136a5bb03f7fa0e0cfd81c9bda6e0ccdbe1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jacobr): should these be removed? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmlrenamer.py"},"region":{"startLine":1002}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7cdfa43f5568a3dbc07cab1e5d9ce7e91564824c02d6d04a276034fc54d56f3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Hack window has 2 overloaded getter one returns Window and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":329}}}],"partialFingerprints":{"codehealthFindingId/v1":"eeb63661ac13bfe6d40c4514a9e1483a775607f5f7bfce940fb92a25a32b8f0a"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: # FIXME: When we pass in operations[0] below, we\u0027re assuming all \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"3de57b825148332f9c2cba6415b2ecbe66ea79e9afd1b4926070ce4989a73ed0"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: # FIXME: item should be renamed to operator[], not removed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"20d6b0ae8d5df09a5a616e83d349c8d5d32321fbbbcfc3faf3154f8049685abe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Optimize the dispatch to avoid repeated checks. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b8583c0075c5f51fafc3ac5442846a1f2f3be7fedace80bbcb3a942e2dc3e37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Include all implemented interfaces, including other Lists. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":516}}}],"partialFingerprints":{"codehealthFindingId/v1":"8775a3efe2efc494079df97870d7959529ac54266e351178677b176c98fba264"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: # Hack to ignore the constructor used by JavaScript. \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"3527156fca4ea7302c358500b1d311fbed34b8e30773b7b5a78be5a2187f88d5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(antonm): use common dispatcher generation for this case as well. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":588}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c096b777319e22f0b8f74309c1772c7055bfc18026e67fbd84c507a962d13a2"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: # HACK(terry): Element is not abstract for Dartium so isContentEditable \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":838}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1057251590bb0225ac210fdb85ff09d2ed3f81fd88ff706193a52118333fb99"}},{"ruleId":"D17","level":"warning","message":{"text":"HackComment: # HACK(terry): Element is not abstract for Dartium so click \u2014 a workaround marked in source: record what it is compensating for and what would allow its removal (the upstream fix, the API it is waiting on, the invariant it restores), so the next reader can judge whether it is still needed rather than rediscovering why it is there."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":865}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9bf8b7f318362916666697906a7966c01da897469313a1fad83a93240372742"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Use separate mixins for mutable implementations of List\u003CT\u003E. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":880}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab0d55a2640b1d7445d0da39774f574fd217baa0af382833d954214c2ce3e95b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Use separate mixins for typed array implementations of List\u003CT\u003E. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/htmldartgenerator.py"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"95eb2edff312ca9e00010d5aacb8b52973b17b6414ccedd4d69199b753a3eae9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(srujzs): Determine if this should really be turning false instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":491}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae4757353e2c7e5a1eca4ca7b1352d26fbae3038acd89c112d800649fcca648c"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: # FIXME: Optional constructors arguments should not be treated \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd350842f43dda1a98270941bdcd8f390535148ee5b6d96acefd4bd536eab6a5"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: # FIXME(leafp) We may wish to eliminate this special treatment of optional \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"32885b4021a2719d36c3b3ca9b30fa1e4d9fed27c60a329681210f771467371e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: widen. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c6f3e94385d30ba9282031db5739b723defcc7058f24b21ea9865ff8e7d6f0f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): This may have to change for dart2js for code shaking the \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cb77fe13c6ba3a5891ba88e774f8a65219a6236b939c7f872ecdf5bd2646548"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Kind of hacky but handles all the cases we care about \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"403ab14375f6f6bc7b1eb8229f6eda44de882624cd0acacf1d8d2ab525525098"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(antonm): temporary ugly hack. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":964}}}],"partialFingerprints":{"codehealthFindingId/v1":"dddad6cecd37068de13db83d51472d76d4065636db509bf22c77c689198dd808"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(alanknight): This generates two variations for dart2js, because of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":1119}}}],"partialFingerprints":{"codehealthFindingId/v1":"a63aa3b1f46b558e3aa4aafd25098700fd338f995816485c50b1c8b771a18915"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): Why does this need special casing? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":1263}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c6db993b3f6e6fdec65fd1f520b07687757006010852fad4881c484040612d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(podivilov): only primitive and collection types should override \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":1317}}}],"partialFingerprints":{"codehealthFindingId/v1":"25977a46c40e14076dc8818adefd7482965f73a05c0b4af722b63ccf6d7d5187"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(antonm): if there are more instances of the case \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":1497}}}],"partialFingerprints":{"codehealthFindingId/v1":"67105cf670ab6ae36b253f09a99f07ed775b824bd049fa71035d0946b26bebb7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): This won\u0027t actually work until we convert the Map to \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":1723}}}],"partialFingerprints":{"codehealthFindingId/v1":"c735b22e49e9670b682b62d36411505f6e69dd6d50aa491bd398ff3f4974a6ba"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Come up with some meaningful name so that where this appears in \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":1737}}}],"partialFingerprints":{"codehealthFindingId/v1":"99b492c40d3bc7742501757575ee05efc1c51c3052f28f1ad428903fcf47350b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Consider automating this mechanism to map the conversion from FrozenArray\u003Cxxx\u003E \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":1803}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d955f30d6ffc2675fdd3314fe98c102e4eac220723b15f95aba1ba7d77579bc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): Generalize this code. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":2103}}}],"partialFingerprints":{"codehealthFindingId/v1":"76a10ec17d2347b2cd06c5ea2b5cc088791fe9f20beb945dc97dd6195d73f6c5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Cleanup up list of list, etc. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":2132}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac0c1e683775c8329c38228b33a2b69438783956724a68e06cea917202b2465b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jacobr): remove these obsolete methods as we don\u0027t actually \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generator.py"},"region":{"startLine":2198}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd27cb1f86da0898bcc8c8541a3a300bf193abc275a69737ceb5295258f793e3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(jacobr): consider implementing these methods as well as they show \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/generate_blink_file.py"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2f1ff88ee1996f997ec8b48eef2547e46e27573e8b7bf2962ab45f41cf3b9e6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): Move this to a README. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/fremontcutbuilder.py"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"565d6c55b5cae951d4cbae73084d90821dc3b67b5aedf52e31eb7e5750fa1a82"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): Reconcile what is exposed here and inside WebKit code \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/fremontcutbuilder.py"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dfbe6801a3e1ca97f34ca1c918a861e415e1f354b22bdfa80b994bcca98c692"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): What else should we define as on when processing IDL? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/fremontcutbuilder.py"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"be1412eefb0e6af64ce174ace98cb2187844336ab58beef98f6e86d599038a3d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Integrate this into the htmlrenamer\u0027s \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/fremontcutbuilder.py"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d2f97a1dea5a5dd697abb715c4d121f666a171978caee783039677070c5c55b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Cache the parsing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/emitter.py"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7a3748789ec48f86016df4ac19dcef18507d71f829e96b118b124e3a04788f4"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): More space efficient to do direct lookup. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/emitter.py"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2265cf0336c94be08d25baab77de58b5077e352952071ecb4580e7a55e0e44d"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): A deferred lookup will be useful when we add expansions that \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/emitter.py"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"155835346655bf25c3b7b5f226aa421fd89a06e465329778168a1ad34c192d48"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Consider using the generator to do the work today we\u0027re \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"627f5e7ca9fb47b7c02e788a44ea9f79b6857fb2be6403c7b7b9ce5ebd5427fe"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Consider keeping richer type information (e.g., \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac5e8b81da63d4f3a8cde3e72afb5ad43e01b2ef9fa7b59358b566b072ee26de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO: Decide which attributes are uninteresting. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":219}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1c9f8f2cc8225d07a050e7c57da58545aedd972b4c179aead11480e9730d713"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): strip_ext_attributes on an idl_file does nothing. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":650}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b33224f4a65bf78a81a81a9776b679a6d14a2f967dbda44df9d83a925538cf7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Hack to remember all typedef unions they\u0027re mapped to any \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":683}}}],"partialFingerprints":{"codehealthFindingId/v1":"2babe1e1a94ca70b4d1767cdbeecda68d11f38adc81ecf5d3f2d1b405e5b24e2"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(antonm): Ideally we\u0027d like to have pristine copy of WebKit IDLs and fetch \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/databasebuilder.py"},"region":{"startLine":808}}}],"partialFingerprints":{"codehealthFindingId/v1":"75dbac371572cfb00a358d18ee5c9f2056875625def3233572e447dc744d2350"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Hack to remember all typedef unions. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/database.py"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dfcf83e576f3c358ba0648a85d287134b196e2813df10caafc99343a9794de3"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: # FIXME: Speed this up by multi-threading. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/database.py"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd88e54e54886bc1d8d13ab2fe103b89bd5239e140f09afc5bcf298094826c53"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Verify and remove Null. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartmetadata.py"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"21ff5dca2d0def212a8d17e5b07069e1ae2dd3a7b55520693611dd34c24c9067"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Investigate how ExtendableMessageEvent.data is different from \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartmetadata.py"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"b170cb3d7db9b8fd8b899d1af67b1ecae5eeed6ded141b1c51604f498294a7fa"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): We could determine the following by parsing the compound IDL \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartmetadata.py"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"600d90f60f0882bf5ddce0e19dc1390ceea407bacee97ff1061119db28f9a3fb"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(alanknight): This works on Firefox 33 behind a flag and in Safari \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartmetadata.py"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"b34ffadbb71971ef670f137ed7d696b6004f8868f3d8667f3208b60547e11cb9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(blois): minimize noise and enable by default. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartmetadata.py"},"region":{"startLine":694}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e2592a979c18580373db75afd46d5cc6f3332cc01ecc328a21979ae5641e666"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(blois): should add an annotation for the comment, but keeping out \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartmetadata.py"},"region":{"startLine":918}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b8ebd8a24bb9570baafc55ba5e7541fc7b912f469018dd1f4df2f4683c3d7e0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): make th \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartgenerator_test.py"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"991d4d0165282be2730de5978d0507719eeaaf1084b0d9af38dbbeaf08b155de"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Why is this broken? Output contains qualified type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartgenerator_test.py"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"092b38e8a391e1f92663e5c6db68fbb2e4118ea9fd1f164879c3198e6d241d67"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(sra): Why is this broken? Output contains qualified type. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartgenerator_test.py"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"952e7cda24f03450e0b340ed9bca36cbc8a7b9cdf6cba6f2124e1bf2bfa78952"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): Re-enable when package / namespaces are enabled. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartgenerator_test.py"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"c087deb8015aea5fa4fddf6b3786819c506f9238eb9f7ddbe030d2d7b95ce1af"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(vsm): Re-enable when core collections are supported. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartgenerator_test.py"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"408515dd9e6be4d34a4bdd52af18080439b7c8bbb8f650e100cdbb32dbab84f8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(terry): Hack to remove 3rd arguments in setInterval/setTimeout. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/dartgenerator.py"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"44c4c6e67ac3912912de2aa423476cd1aca09d5b4bddee0c232c0b5d4ca99fe9"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(efortuna): Pull from DEPS so that we have latest css *in sync* with our \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/css_code_generator.py"},"region":{"startLine":12}}}],"partialFingerprints":{"codehealthFindingId/v1":"75672cd68f9fb7006f42971e5f14b5dff5ec6b79bfe11ca421c35790509c1920"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: # TODO(efortuna): do we also want CSSPropertyNames.in? \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060# REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/css_code_generator.py"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e1b855cd4b6d7395a4c9fe0166430e6c8bd7b7719fb7f3bb371d591eeca4452"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(srujzs): Remove this if we decide to deprecate these classes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/scripts/web_library_bindings_emitter.dart"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0fdeea1678688c6184f0693997eb76440db0a47916e2f616b856a9157dea1cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(antonm): treat exceptions properly in bindings and \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1e54b1076535b78c1f48289a9869b80a05834c97915f3128c0fe948a4a6bf10"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: [possible optimization]: do not copy the array if Dart_IsArray is fine w/ it. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae3ab43cc7a9d5b15e939a75413cc0354ca1bc8e89a202d23a6ee54aa0734d60"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Make this API compatible with spawnUri.  It should also \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ac4e851db1125872c75d796e6868c1e8d2e338c2541e9f4f88252ca1a463e84"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): IS THIS RIGHT? I worry we have broken conversion from Promise to Future. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"cdb134825f134294122e5670d87a99e2a23e08bcac187f21b727807f55fcb843"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): consider moving them to a separate library. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"985fc0ad124a0f166c9019471dbf068dc506f3be1d983ab4572d4ea953e01c31"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: use a real Dart tokenizer. The following regular expressions \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":486}}}],"partialFingerprints":{"codehealthFindingId/v1":"c96222eec8099f3a9c648a0f50dee9db4be6368186cdd2e0e13d9ce1fcbf127f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): remove the parentheses around the expression once \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"52e09afd1b4e48f86988e5aee8f423a8e31baaa3c29ceca70b3ceaa504abd985"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): maybe we should require quotes. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":572}}}],"partialFingerprints":{"codehealthFindingId/v1":"226db2f59593cf637c248bfeb03e1285a35f060a7244eae6e011ad489363c5d7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): generate more concise function descriptions instead of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":762}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7103dc88b33897b51961cc2170911f28a32ddfd78e8b7132b3a7ea0bb64d1ac"}},{"ruleId":"D17","level":"warning","message":{"text":"FixmeComment: // FIXME: add copy method. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1044}}}],"partialFingerprints":{"codehealthFindingId/v1":"6024226e23e1f54fee150b3e371f515aed69a48d55b38e74b7c4321e20c2f633"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1126}}}],"partialFingerprints":{"codehealthFindingId/v1":"c91c5486267fe0a21b9ffda417dbaf5c76ee25bcd5490bd0699612d146aeec88"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1129}}}],"partialFingerprints":{"codehealthFindingId/v1":"235850393144ce581e5304bf9f69b4be80d9ce3ad1b3c867ac0bb72a5150c88e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1134}}}],"partialFingerprints":{"codehealthFindingId/v1":"91bbfe72b608600b7f15c3c658f8d1fd4e020375c23820e253aaa3a47b17d06a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1139}}}],"partialFingerprints":{"codehealthFindingId/v1":"61b95b89d3ab8fc0be933dddec760b650b6bc410e85d48b305a63b99642f465b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1142}}}],"partialFingerprints":{"codehealthFindingId/v1":"9350320334b67c2b620e13bc9eef282e4dcbab1ccb960fd85fe2b9e13e92b71b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1147}}}],"partialFingerprints":{"codehealthFindingId/v1":"de993bc61fcee704ef2128bace63b9293c25842ab3ff8cce75b55dfb97125dc0"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"890f95cb274eb0220db9b032bb8c23de1186b0b56b711c16fd8dac56969c9f43"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3d1b931149eda0a1037aa963d158a1e0a6a4795330d38629e6d14d77afca6a8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e493ae98d9fcf70fa382273b76eaa84b4615807b79e54ec6c765b4e9a1bf962"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bb1517bc44ded0ab0ef1c21c89d66720510c3ba7fa65dfdb71f887575208d47"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0b19307a4f392582513aae791c8062307ac78342f6e881637ca2137f71c799e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): Remove this method. dartbug.com/16814 \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"32641c52790f02bf0fa771c1e1569fae07c07c56bd40cca1e34656aa6ab8926f"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Remove DOM isolate code once we have Dartium isolates \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1184}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ee15f7826b7ff15bc80dc1e129b27e17a051e214a9042fda547cff0a4a949ec"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: SendPort.hashCode is ugly way to access port id. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1196}}}],"partialFingerprints":{"codehealthFindingId/v1":"81a74286a10c585a9ac87dee239c4f86e2614a72ff16dc34d213c26c58aa4a2a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(antonm): we need somehow identify those isolates. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/native_DOMImplementation.dart"},"region":{"startLine":1259}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a5f337fe59b3353da4502824f7212b7355884a465e39145219139ae0b1f71b8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: make sure. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_TypedArrayFactoryProvider.dart"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"98afe80e287f015f2a7942dc443960d79b04a88053fcc90522825f6c563512ed"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(efortuna): If KeyEvent is sufficiently successful that we want to make \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_KeyEvent.dart"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ea7d7a144066c6cc88cfb75f2e2999602f3aab3bbd00870ff5d0056c6aa0674"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Unify with Dartium version. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f7eb2dffdd57ef5c12e34e6f8fe8084fa08dfd624ba28d17d76d5266d6e29be"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Add frames to navigate subframes.  See 2312. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"762ddac7230552df9b18e48c60545446f97dedf824f89e24ca9bb9ab99f0fee6"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Cache or implement equality. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"351abe6ddb7b4de482bc88c9598f4deb240d53e7bd0cfe380af349e29d1d23cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Cache or implement equality. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"25cf223e5a0cd8cf2cd57a444ad8422203fd2a3b1341772b9fef550a5c4c438e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(vsm): Cache or implement equality. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_DOMImplementation.dart"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d69d04c8c197173881ee117a2818ed70b1853bbc8ac9b2f7bd258d41ca5f2b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sra): Perhaps we should store the DomTokenList instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/dart2js_CssClassSet.dart"},"region":{"startLine":14}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2e44520b83a60a59e1a23cab0d5fd02466c1afac3fc004753bf5557018443a3"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(alanknight): This is a workaround because on Firefox \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/Validators.dart"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4b33bf5fed04ff8a4b5ef7ba57ace83d33118253a297e4273140a6158def12a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(blois): Need to be able to get all attributes, irrespective of \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/Validators.dart"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"765936405b100353b791136e85bc3aecc736569023b8bb9ccc29d43ea7a13ae8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(9757): Inlining should be smart and inline only when inlining would \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/EventStreamProvider.dart"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"64fb47c69f4838cfa00c529f36e82401912f011bce876afdc36c9b18607c0a41"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO (efortuna): Remove this when Issue 12218 is addressed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/EventStreamProvider.dart"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a10911b8a020c79057d747cca0e8812c2fd06a9e094fb295ad976e28b22c86a"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(jacobr): these methods are duplicated from _RectangleBase in dart:math \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/CssRectangle.dart"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6a4faf9f0bb98bdbba51ef82823ddd0c2994e1bed79afdd545029ee6cfa914e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: generate a lazy collection instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/AttributeMap.dart"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed800a7f1c7b393f0f475d2d83b4f7f559f54a8b1b4e6ca00e3aaa3918a3c0d1"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: generate a lazy collection instead. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/AttributeMap.dart"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"9af06526c9367aa122dabdd6f396ebff97feed7fc42a0f79774b0402a1c7d19e"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Use lazy iterator when it is available on Map. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/AttributeMap.dart"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d7c8cd21669643a8cd983b6071e0e0624e4217df04510fc1234b089add5458b"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO: Use lazy iterator when it is available on Map. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/AttributeMap.dart"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"64bdd9a065ae7c2e3b0c4d5399cb2ea745f36b9ea63eda9eb34ed927b27d37e8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab): Try and detect whether the argument is already serialized. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/utils.dart"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"919d97469bd0741fa0e34e34628c9d0872f3677c603c4870322a95b0f6ff0ba8"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab): Wrap these generic Lists somehow. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/utils.dart"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"59126c30a6e1653cbc08061f5099cbb37adc0a1b494e50d1b54d4caffd1de247"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab): Wrap these generic Lists somehow. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/utils.dart"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb9cb1ea0b4984004a67a841cd4b22bda207f30eb9e7e3e4e457897dcb81a748"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab, sra): Detect whether this is the current window, or an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/app_window.dart"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"41f77a736b0376e84d28c410cc5489bbacd483ff61724460b00545a5d9d516bd"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab, sra): Detect whether this is the current window, or an \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/custom_dart/app_window.AppWindow.contentWindow.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f4628d0b4bc0bff1c99a4067b17ddf26a275b3a28fb396e14af0adb645cdc7"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab, kalman): Fix IDL parser to read function return values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/app_window.dart"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff322d1945efdbbffe28aed4552fbede55a3250b3de813fb72c657209ebc2d37"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab, kalman): Fix IDL parser to read function return values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/app_window.dart"},"region":{"startLine":503}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f03b19be93a49a9927ec02fb2fde78b9fa454d33d22e23f81228d7440f8a044"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab, kalman): Fix IDL parser to read function return values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/custom_dart/app_window.current.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"01fab070a0097c9ac80403e97aa31274a668832dbfa1a0c0e5f8698def71c709"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab, kalman): Fix IDL parser to read function return values \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/custom_dart/app_window.AppWindow.getBounds.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac971df2a408f3d0a250286f19b4cd3993f2acd597192ff7c08c8928a64e31cc"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: /// being implemented on Ash. TODO(stevenjb): Investigate implementing this on \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/app_window.dart"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3dcd864519e80c48cba86f53282be8b2080e67dab88f99e7f7f6c85256217e5"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab): This override is no longer needed once prefixes are removed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/app_window.dart"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a4202f6b7762c0f89920d4bceede99be5cd869c7896cb924990f1aee2c0ce23"}},{"ruleId":"D17","level":"warning","message":{"text":"TodoComment: // TODO(sashab): This override is no longer needed once prefixes are removed. \u2014 source code is not a task system: move the work to your tracker and leave a reference instead (e.g. \u0060// REF: #123\u0060), so the task is planned where tasks live and the ticket links back to the code."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dom/src/_chrome/custom_dart/app_window.create.dart"},"region":{"startLine":5}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf0ffae7a8966dc3fd555af56811a7edd56e0d85c1a30abaa56d99a84b3bf4be"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: no installation or build instructions: The Dart SDK build guide is present but not a standalone install/installation document; users must visit dart.dev to learn how to get and set up Dart. Add an Install/Setup section covering cloning the repo, running \u0027dart pub get\u0027, and setting environment variables."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fa6bfcd5c6ae231d1b8ee99bced50b832d1f61cde9da6cbb533467b879a57db"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: no usage examples: The Using Dart section links to dart.dev but does not give a concrete runnable example of how to run the docs site. Add an \u0027How to Run This Documentation Site\u0027 snippet showing the exact command that starts the web server."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1355eb4e127a4bc9236772ce1c46f09510aa9286e7a06d1e47f308229df19049"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: no architecture or design documentation: The Dart SDK is documented in a README but no architecture or design document exists among the 168 architecture/Docs markdown files. Create an Architecture/Design doc covering target-platform selection, the native compiler pipeline, and how the VM embedder interacts with kernel snapshots."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"086460f2da112d94904fac5439f54a7780bc7778ff9375a067e428a1cc9a8a4c"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: no installation or build instructions: There are no installation/build/run commands for a reader who lands on this page. Add an Install section covering how to get the VM, build from source (dart pub get and dart pub run), and run a simple test."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/docs/README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8009cb964970c5e6800b662584df9e4757aff4554d5ec44ca9e992cd2b2b91c"}},{"ruleId":"D19","level":"note","message":{"text":"Documentation: no usage examples: There are no usage examples for any of the packages described. Add Usage sections for each package showing how to import, initialize, and call its API with code samples."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/docs/README.md"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6386654771485c24b0940cb687afa9486f0271a14bbf9de2cfbac14058e64323"}},{"ruleId":"D20","level":"note","message":{"text":"No ADRs found: No ADRs found. No recognised ADR directory (\u0060docs/adr/\u0060, \u0060docs/decisions/\u0060, \u0060adr/\u0060, \u0060docs/rfcs/\u0060, an \u0060ADR0001/\u0060 folder, or their siblings) exists anywhere in this tree. What was searched, so you can tell an empty log from a search that missed one: every directory under the tree (build output, dependencies and VCS metadata excepted), for a document that is either any non-index page inside a recognised ADR directory, whatever its name and however deeply nested (\u0060docs/adr/use-postgres.md\u0060, \u0060docs/adr/2024/0001-x.md\u0060); or a file anywhere whose name is ADR-shaped (\u00600001-use-postgres.md\u0060, \u0060adr-012-caching.md\u0060); or, when neither turned anything up, a document carrying the decision-record signature (an \u0022Architecture Decision Record\u0022 heading, or Status / Context / Decision / Consequences as section headings). A decision log that clears none of these \u2014 unnumbered files outside any recognised directory, without those headings \u2014 is not seen by this check and this row is then wrong. If that is your case, say so rather than renaming anything; otherwise, consider recording architectural decisions in \u0060docs/adr/\u0060."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d2bea044ff79d7d275f5a91a6e2f548586178eaf480274c33960ad020c854631"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d5b8f11381d61a58459ffc7c595fd52d09c03c711894a63a9578043d2338412b"},"taxa":[{"id":"CWE-829","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"295d1b407cf19214f6a79b573f00b2ec533b965239c05e5bb8d5fcc68f4fc45c"},"taxa":[{"id":"CWE-95","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4b627fcbfbe6437cb34ebb94edd0d2319031555163ddcf556363eb231cc62593"},"taxa":[{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"af524c00795d019dd1013dd478faf01895f16b63f2f38e0c3446f0d9cbabb146"},"taxa":[{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"0a96088846d96bbfd6443091225af36fc72c1ba4402c8436d8ab169a7c7a9054"},"taxa":[{"id":"CWE-345","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"79a9de0f5e6d35aaf571e242bdce420d889e04eac77153e0aba46243ced9d613"},"taxa":[{"id":"CWE-345","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"91f0e791e3ae8bca610e49d141a577c5be81a3ce6b0ee949757ab2ddae2d49c9"},"taxa":[{"id":"CWE-345","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c69a5d057ec36759ef5c6287d3e97f15a598df0f403e03648327706355ff5c98"},"taxa":[{"id":"CWE-345","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d9a90a3eae685d4b3ea64ebdad923734950ee57c603abb042f70caf6985f25fc"},"taxa":[{"id":"CWE-561","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"d1d713b158d60bd08210e7d89f57292fbfff01cff0f2febd3244fa92571c80ba"},"taxa":[{"id":"CWE-561","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"59604490e45e78f29a9d9ebea88c790b9b45f247527107e3da1a321fe9ba7428"},"taxa":[{"id":"CWE-319","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"2ae81b424eb5ac22bec2f4da20489137b8cb03150a5dacf2fd42548cac6e730d"},"taxa":[{"id":"CWE-561","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"ca893631cbdf0b632a6580887d6b9113075c310175a7e0e0e7087a2eeb7fff42"},"taxa":[{"id":"CWE-290","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"e68d9e2d00c9b47c945dac43258c1a38346312df3a9ecdb9b2b5ebfe9770cff1"},"taxa":[{"id":"CWE-290","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"deafb7e1d5e4cb754164098dfdd63881e8996432f7a522ac13eef1ffd3c7da0d"},"taxa":[{"id":"CWE-290","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c593d4dbd23724f337bfb8d2c1653812f143ae255bd9b59d4b3e9c37779fa6f4"}},{"ruleId":"AC2","level":"error","message":{"text":"\u003Ctextarea\u003E without a programmatic label: This control has no associated label. Add a \u003Clabel for\u003E / wrapping \u003Clabel\u003E / aria-label / aria-labelledby so assistive tech can name it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/benchmark_visualiser.html"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5e687c07b3b701c483587fbcbf3d0b937aaa617a7802ab8c127d07a5ed1b4b4"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/benchmark_visualiser.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"81e911ef7d20fc55ab1520ab45ea3fe70ea35e2b4d9411908bebd28c4038f959"}},{"ruleId":"AC3","level":"error","message":{"text":"Document without a \u003Ctitle\u003E: A page with no \u003Ctitle\u003E gives no name in the tab, history or screen-reader page list. Add a descriptive \u003Ctitle\u003E in \u003Chead\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/benchmark_visualiser.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"88f59177955b8e0c678dd1029dfa0c8dd9ea83c4800a0dee72888d439f306695"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/benchmark_visualiser.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1912a5eaba2b1984f0268bc15401dd733d8e6c9c225dffab9fb4689a2929d8b"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/index.html"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"c90e9356360796a0943f6cefe747fcfd1e1cdb4803b68185f4f641cf635afb37"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/index.html"},"region":{"startLine":6}}}],"partialFingerprints":{"codehealthFindingId/v1":"efcc3db2d82403b24e3bfc82b33ddf9f998e84cff133232fe8abd18f5efaf4ff"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/wiki/templates/page.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c27a9105cea6c41a342e21da14945af06de0a72b67713c5181b7bc5994573c9"}},{"ruleId":"AC3","level":"error","message":{"text":"\u003Chtml\u003E without a lang: The page declares no language, so assistive tech can\u0027t pick the right pronunciation. Add lang (e.g. lang=\u0022en\u0022)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dart2js/sourceMapViewer/web/display.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9ae78b59e755edaf60fd7473ddd0b785a95eb7632db2de75b5c1376fe1a7109"}},{"ruleId":"AC3","level":"warning","message":{"text":"Page without a main landmark: No \u003Cmain\u003E (or role=\u0022main\u0022) means no \u0022skip to content\u0022 target and a weaker landmark map. Wrap the primary content in \u003Cmain\u003E."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dart2js/sourceMapViewer/web/display.html"},"region":{"startLine":2}}}],"partialFingerprints":{"codehealthFindingId/v1":"68aff4b592b926b6173423a09ad76f96d2b52d1c62c8e0c23d1c98c5c8c03dde"}},{"ruleId":"AC3","level":"warning","message":{"text":"Data table has no header cells: A \u003Ctable\u003E with data cells but no \u003Cth\u003E gives assistive technology no way to associate cells with their headers. Mark the header row/column cells as \u003Cth\u003E (with a scope)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dart2js/sourceMapViewer/web/display.html"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b42a80205bac3ab26e1ea6edfe71f233e1154a82f0ab9684ef0535c13c92c1b"}},{"ruleId":"AC5","level":"error","message":{"text":"aria-hidden on a focusable element: aria-hidden=\u0022true\u0022 hides the element from assistive tech but leaves it keyboard-focusable \u2014 a confusing dead stop. Remove aria-hidden or make the element non-focusable."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/bots/dartdoc_footer.html"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"059c9cfa1b4d0f07ff1b03aaf535b63d8c303188b82463e1f3caa029a3d71a6b"}},{"ruleId":"AC6","level":"warning","message":{"text":"Low contrast colour pair in CSS (1.3:1): \u0060span.marker\u0060 sets color: green on background-color: red \u2014 1.3:1, below the 4.5:1 WCAG AA minimum for normal text. Darken or lighten one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"tools/dart2js/sourceMapViewer/web/display.html"},"region":{"startLine":7}}}],"partialFingerprints":{"codehealthFindingId/v1":"f83ea7a2007bff17feb9039fb2cfcdc02d40105d9c0736c40381f501706b5878"}},{"ruleId":"AC6","level":"warning","message":{"text":"Low contrast colour pair in CSS (3.9:1): \u0060nav.nav-bar \u003E ul\u0060 sets color: white on background-color: #0489c3 \u2014 3.9:1, below the 4.5:1 WCAG AA minimum for normal text. Darken or lighten one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/lib/src/elements/css/shared.css"},"region":{"startLine":2049}}}],"partialFingerprints":{"codehealthFindingId/v1":"020d67d2bd45221e8802dcebb19a374a59a39feb783841bcea66ce8e9f3b9f4b"}},{"ruleId":"AC7","level":"warning","message":{"text":"Accessibility enforcement below the top rung: No accessibility enforcement found \u2014 no accessibility linting at author time and no automated accessibility check in tests or CI. Add your UI toolkit\u0027s own accessibility assertion to the test suite (Flutter \u0060meetsGuideline\u0060, Espresso \u0060AccessibilityChecks\u0060, XCTest \u0060performAccessibilityAudit\u0060), then gate that test in the pipeline. What was searched, so you can tell an absence from a miss: the 13 markup file(s) this pass actually assessed, the linter configuration checked in beside them, and this repository\u0027s test and CI files \u2014 matched by name against the accessibility checkers this dimension carries. An audit run outside the repository, a hosted scanner, or a check whose name is not one of those, is not seen here."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d46019b86eff5ddad9db289e6802ac158899e980df54c34f67722442787ead62"}},{"ruleId":"DM6","level":"error","message":{"text":"Domain fused to persistence infrastructure: DefinedTable: \u0060DefinedTable\u0060 is a domain concept fused to persistence ON ITS OWN DECLARATION (the drift \u0060Table\u0060/\u0060@DataClassName\u0060/\u0060@DriftDatabase\u0060 mapping) with no separate pure-domain layer \u2014 the domain entity IS the ORM row (active-record), and it carries domain behaviour on the persistence type. A schema/persistence change ripples straight into the domain. Keep the ORM/table mapping on a boundary data-model \u002B a mapper, and the domain entity framework-free (map row\u2194domain through a repository)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/table.dart"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"1345b8285b9ed70b3baede97fb6119f52ac5971ae5cd594234e2e1db0b6513a3"}},{"ruleId":"DM6","level":"error","message":{"text":"Domain fused to persistence infrastructure: ImportedTable: \u0060ImportedTable\u0060 is a domain concept fused to persistence ON ITS OWN DECLARATION (the drift \u0060Table\u0060/\u0060@DataClassName\u0060/\u0060@DriftDatabase\u0060 mapping) with no separate pure-domain layer \u2014 the domain entity IS the ORM row (active-record), and it carries domain behaviour on the persistence type. A schema/persistence change ripples straight into the domain. Keep the ORM/table mapping on a boundary data-model \u002B a mapper, and the domain entity framework-free (map row\u2194domain through a repository)."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/wasm_builder/lib/src/ir/table.dart"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"babe5f1268b27faa06b91c703db6b159fe2248857204e5e924836d78f834273e"}},{"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":"note","message":{"text":"CI build step not evidenced: A CI pipeline exists but no build step was matched \u2014 changes may merge without the build ever running. A build step may be invoked directly as a command, or declared as a task that a runner named in the pipeline resolves."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"251015acef1a259fcc13b7c60660cc8917ccb3ae8056cb5165ae03312dd586e8"}},{"ruleId":"P3","level":"warning","message":{"text":"SAST runs, but gates no merge: \u0060scorecards-analysis.yml\u0060 run(s) a static-analysis scan, but no workflow that runs one is triggered by a pull request (or a merge queue, or an unfiltered push) \u2014 the scan fires on a schedule or a manual dispatch only. A vulnerable change therefore merges clean and is reported on the next scheduled run, by which time it is on the default branch and the only remedy is a follow-up fix. Add the pull-request trigger to the workflow that runs the scan so the finding arrives before the merge rather than after it."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"73211886541038635ced0208da9cedd27ed1caa9132fd6aa5e44d2976a4de6d6"}},{"ruleId":"R1","level":"warning","message":{"text":"Type Safety: 0 typed \u00B7 20 plain JS \u2014 the untyped files are pkg/compiler/tool/used_names/used_names.js, pkg/dartpad_worker/lib/src/asset/sandbox.js, pkg/dartpad_worker/lib/src/asset/sandbox_flutter_patch.js, pkg/dartpad_worker/lib/src/asset/worker.js, pkg/dev_compiler/lib/js/common/run.js, pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js (\u002B14 more)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"d00ee7953f55325a823d27e5db9657c80ca9b9861c0c0abf8fe487cd3fa586d3"}},{"ruleId":"R10","level":"warning","message":{"text":"Wholesale file copy (189 identical lines \u00D7 3 files): sdk/lib/_internal/js_dev_runtime/private/preambles/d8.js:10 \u00B7 sdk/lib/_internal/js_runtime/lib/preambles/d8.js:10 \u00B7 sdk/lib/_internal/js_runtime/lib/preambles/jsshell.js:7 \u2014 these 3 files are line-for-line copies of one another \u2014 189 lines are identical, in the same order, in every one of them \u2014 so this is one fact about the file set, not a block to extract. An edit made to one file and not the others changes behaviour silently, which is the failure a wholesale copy guarantees. Pick one file as the single source and derive the others from it (re-export it, spread it into the local overrides each variant genuinely needs, or generate the copies at build time) \u2014 the few lines that differ between the files are exactly the part each variant should still own. Check first whether the copies are deliberately standalone deliverables (a translation file seeded from its sibling and waiting to be translated); where they are, the duplication is the design, and the honest move is to mark the seeded file as untranslated rather than to let it pass as done."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/preambles/d8.js"},"region":{"startLine":10}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e0a9f5df91efd8c22cf0d53a27bb38bee9aee941dac39edaa2385a8de6086a3"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (36 matched lines \u00D7 2 locations): pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:387 \u00B7 pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:572 \u2014 the two spans are one implementation copied and then locally edited \u2014 324 tokens are still identical, in the same order in both spans, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":387}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f6fadcc935717b5d259004ed82fc437720b8f1fa135b564e0700917bd1faed4"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2 locations): pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js:1705 \u00B7 pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js:1736 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":1705}}}],"partialFingerprints":{"codehealthFindingId/v1":"90a020959a446bf7b9e4dd3a2da4de268eaae1b89dfb03f4f71067403c0739e4"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2 locations): pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:443 \u00B7 pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:609 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"b21af88b101672b08d4ace14fa193a9b791ce0422ff6ce5392979896c1a4af18"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2 locations): pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:884 \u00B7 pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:919 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":884}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bc14a6087e876844e0d305b0ba634aae49593f94ab0e92348993aa72f57bb37"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block with local edits (16 matched lines \u00D7 2 locations): pkg/dartpad_worker/lib/src/asset/sandbox.js:388 \u00B7 pkg/dartpad_worker/lib/src/asset/sandbox.js:428 \u2014 the two spans are one implementation copied and then locally edited \u2014 82 tokens are still identical, in the same order in both spans, with only local edits between them. The copies have already begun to drift, which is this row\u0027s finding: an edit made to one and not the other changes behaviour silently. Diff the two spans first to learn what genuinely differs, then extract the shared core into one module both sites use, passing the differences in as parameters \u2014 or, if one copy exists only because the other could not be imported from its context, make one of them the single source the other is generated or re-exported from. If one copy is no longer reachable, delete it rather than letting it shadow the live one."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/asset/sandbox.js"},"region":{"startLine":388}}}],"partialFingerprints":{"codehealthFindingId/v1":"724d83c624494c1924225c0f478ed5bd998930cefec7d3fbd940d1c626afe872"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2 locations): pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:500 \u00B7 pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:633 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"28771bb6800901ca99da414e659a71c7472744b6a33756120926438ff8ed76a4"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:1768 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:1813 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1768}}}],"partialFingerprints":{"codehealthFindingId/v1":"df4859f9a0e5ce1c858c5169dcaea1b0dfccc822ab1ce3b70b752c62e8cbbd44"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2 locations): pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js:879 \u00B7 pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js:1246 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":879}}}],"partialFingerprints":{"codehealthFindingId/v1":"6837a0e28de1888010f8b9075b3021621b14d9c79239760cdee8093df6831185"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:1446 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:1943 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1446}}}],"partialFingerprints":{"codehealthFindingId/v1":"742c77f5e815abcb08bee8c53af77b2831a573b4456dbf3ab4cd60acb15cf53f"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2 locations): pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:868 \u00B7 pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:902 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":868}}}],"partialFingerprints":{"codehealthFindingId/v1":"3af02e3d97256bdcab721c1162140ef8f6f1e52188ffa2a2547139b009d632e7"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:32 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:46 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4b50aa7dffbb15a32083f52cf1ad26f17e363451abbcf27ad092c1e21d0aa34"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:1078 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:1091 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1078}}}],"partialFingerprints":{"codehealthFindingId/v1":"e71d797f125d34c89a120eaa7e04830f227d417124018b7220a1cff53486d654"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2 locations): pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:521 \u00B7 pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js:650 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4ee8a371e23722ff1bf6e9f8b7539de21301858ee69fe6435a67e9f22aa445f"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2 locations): pkg/observatory/web/timeline.js:711 \u00B7 pkg/observatory/web/timeline.js:750 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/observatory/web/timeline.js"},"region":{"startLine":711}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bd2c2b1345f6352cb85ffa2b35f7654a5fe111bda3e6515c31e322eb6f4bfc"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:144 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:299 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"6112608414f30a61cc9e86647316606ab036cab0cecc0a2fec4b5d24a425f33e"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3 locations): runtime/tools/graphexplorer/graphexplorer.js:1682 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:1695 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:1709 \u2014 all 3 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1682}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0b8376583fced626dc05f2c94617769136fe836eb92aba39f2898a599817398"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 6 locations): runtime/tools/graphexplorer/graphexplorer.js:326 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:378 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:573 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:699 \u00B7 \u002B2 more site(s) not listed \u2014 all 6 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c804165cb7737d38c6d0daf009a45d9ff20e6de805414223effb521ca70e903"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:341 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:359 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b57682d9d1603a4014265ef7e44ccc3c34d7ea7e0e9ed3badb933e77518887d"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:392 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:796 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"419014b2ea212268d4535f9020feb6873f52e577e05b09123babe72f5aba311a"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3 locations): pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js:405 \u00B7 pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js:879 \u00B7 pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js:1246 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":405}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fd1087c140be755a12a47613123cec7ab1919f91b9f143d1bd9932e943181c0"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:1212 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:1224 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1212}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0af79e8ad543235a956b496eedee7d61a7786f7ed3b527a15bc3329291e7955"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:70 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:202 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eee1fe63e4c8d7127ab3bb2d2e37e4727c5794b8a7fc7be8f45dd683de2bc35"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:981 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:994 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":981}}}],"partialFingerprints":{"codehealthFindingId/v1":"862adb6a6e2a21b7337c08c2709aa2f170f41bc9d335410c5ad1d18f2320db92"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:1878 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:1887 \u2014 all 2 copies are in the same file, and the CITED SPAN is not a self-contained block \u2014 it runs from inside one construct into the next (the tail of a branch plus the head of the following one, a run of switch arms, the end of a declaration plus the list that follows it) rather than covering a whole unit. So do not lift these lines literally: no call can be substituted for a half-open construct. Extract the enclosing repeated UNIT instead \u2014 the whole function, component or branch these lines sit in \u2014 and where the repetition IS the construct (a run of switch arms, a stack of near-identical declarations) replace it with one table or registry looked up by key rather than a helper each arm calls. The copies still drift apart the first time only one of them is edited, which is why this is reported."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1878}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e5b57dcfa9f7c8fe894efa8ddb00a03487c90fbb3c1273ce3e881c16214d414"}},{"ruleId":"R10","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2 locations): runtime/tools/graphexplorer/graphexplorer.js:1797 \u00B7 runtime/tools/graphexplorer/graphexplorer.js:1805 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1797}}}],"partialFingerprints":{"codehealthFindingId/v1":"40ca297d421159baf4df42ecc9ff20fd10a19730130c9f2f6072dcd99d1107f7"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function loadDartHeapSnapshot (cyclomatic 21, cognitive 23): loadDartHeapSnapshot has cyclomatic complexity 21 and cognitive complexity 23; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5b28487211454061dd3cf18d896c4b69fdf05eb4a446c823daa0585c68b72a7"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function rewriteEdgesForOwners (cyclomatic 19, cognitive 29): rewriteEdgesForOwners has cyclomatic complexity 19 and cognitive complexity 29; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b54748beafc2fcb7bd594128f43bc4a7f3f1ea1b330ebf8d48820c50cc2bc3a"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function onRcpMessage (cyclomatic 18, cognitive 27): onRcpMessage has cyclomatic complexity 18 and cognitive complexity 27; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/asset/sandbox.js"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bdd815b2215476992c6d4856755e43e3415f8e9ae5993ae0d03c617d2d7a448"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function createTreemapTile (cyclomatic 17, cognitive 34): createTreemapTile has cyclomatic complexity 17 and cognitive complexity 34; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":1279}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8e3590564ae3cef5dc3257d38de08f6c083d44ae26afd378fa80d372453b66f"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function _clone (cyclomatic 17, cognitive 28): _clone has cyclomatic complexity 17 and cognitive complexity 28; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"d464d80891b249b8753df4c613764e5fae5f46d9272c22830e49a88e1353948c"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function hotRestart (cyclomatic 17, cognitive 22): hotRestart has cyclomatic complexity 17 and cognitive complexity 22; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"517f3d8b1a8f4a433c943580740464b2a0021f0f4338c666595b2a64e34fdcaa"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function _showInfoBox (cyclomatic 16, cognitive 29): _showInfoBox has cyclomatic complexity 16 and cognitive complexity 29; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba50ea1928cf6ae47e259d569313eaf88d0175e8d17ad75355ace4f09ef1dc98"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function start (cyclomatic 15, cognitive 26): start has cyclomatic complexity 15 and cognitive complexity 26; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e7030be1e7b48b4a8e132c434a870df5b761087c76838fc03f95e71033d9a0c"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function load (cyclomatic 12, cognitive 14): load has cyclomatic complexity 12 and cognitive complexity 14; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"61f4ab1c86b3b9982da5a53dca025fc75b1c8c80bc927bd86e96a531e47d9556"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function computeDominators (cyclomatic 11, cognitive 23): computeDominators has cyclomatic complexity 11 and cognitive complexity 23; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":576}}}],"partialFingerprints":{"codehealthFindingId/v1":"08bcaf577468ca3c8e69a4ea7fa57ffbe0f3c41e1c26454a91629cf9289c5f96"}},{"ruleId":"R2","level":"warning","message":{"text":"Complex function computeOwnedSizes (cyclomatic 11, cognitive 20): computeOwnedSizes has cyclomatic complexity 11 and cognitive complexity 20; this row is raised above a cyclomatic bar of 10. The two numbers answer different questions and the gap between them is what decides whether to act: cyclomatic counts the independent arms through the body, cognitive counts what it costs to hold them in your head, so nesting and mixed boolean chains raise it while a flat run of independent arms does not. Cognitive is at or above cyclomatic here, so the branching is nested or entangled rather than laid out side by side \u2014 extracting each decision into its own named function is the change that pays. Measured by this repository\u0027s own parse of the file, so a body assembled at runtime, or generated, is counted as written rather than as it executes."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"runtime/tools/graphexplorer/graphexplorer.js"},"region":{"startLine":702}}}],"partialFingerprints":{"codehealthFindingId/v1":"423786b4298a15120180959eb93269b099f712288e1df69f678e5ebf2908d8d1"}},{"ruleId":"R3","level":"warning","message":{"text":"Large Files: 5 file(s) over 400 lines (counted as significant lines \u2014 blank lines excluded \u2014 over production source only, tests excluded), largest first: pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js (2137), runtime/tools/graphexplorer/graphexplorer.js (1749), pkg/vm_snapshot_analysis/lib/src/assets/D3SymbolTreeMap.js (887), pkg/observatory/web/timeline.js (783), pkg/dartpad_worker/lib/src/asset/sandbox.js (439)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"cecee31b569df4f07e06db732f1ca037af27b5afef9023da51f9673d931a142f"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~2336 LoC): no import path from any entry point (8 application, 0 tooling, 4 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/ddc/ddc_module_loader.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bc286ee3df027c5924577a869091ffa82fff9181cc7c511a28b5d17346c5534"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~502 LoC): no import path from any entry point (8 application, 0 tooling, 4 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/asset/sandbox.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"702341d362a841ac4572af72ba09551d5fd164fb8f85976b2bee1913e5ee486b"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~349 LoC): no import path from any entry point (8 application, 0 tooling, 4 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/preambles/d8.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"65d7543459022c0bd7514c3908beeeabc3179998ba69b24332c653d9d3cd7125"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~108 LoC): no import path from any entry point (8 application, 0 tooling, 4 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/sourcemap_testing/lib/src/js/inspector.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a8549b3e08e81119e208596d98ede4ab2e7799172b858b7a8f5562dab7bca45"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~62 LoC): no import path from any entry point (8 application, 0 tooling, 4 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/asset/sandbox_flutter_patch.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc3d5d7bbcbf8a2aac129e54aa775d8808615e34122d5372fcb43ed1691bd543"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~29 LoC): no import path from any entry point (8 application, 0 tooling, 4 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dartpad_worker/lib/src/asset/worker.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a20d9d8e0b0cb23bde756ce1a73eb22826dc7ca03a586894e736828cb4610adf"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~22 LoC): no import path from any entry point (8 application, 0 tooling, 4 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/dev_compiler/lib/js/common/run.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"917c074950f3270f306990fd3b6af66e2a29de7fde324bc33425ab761da27c9c"}},{"ruleId":"R7","level":"warning","message":{"text":"Dead file (~19 LoC): no import path from any entry point (8 application, 0 tooling, 4 test roots considered), and no other file in the scanned tree imports it \u2014 nothing in-repo names this module at all, which is the strongest form of this claim the import graph can make"},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"sdk/lib/_internal/js_dev_runtime/private/preambles/jsshell.js"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b337463261ac943fb693daef283d5a4a2662dc6bc34cc3f33f72d9b5cffb20b"}},{"ruleId":"S1","level":"warning","message":{"text":"Third-party script without Subresource Integrity: \u0060https://www.gstatic.com/charts/loader.js\u0060 is executed by this page with no Subresource Integrity. Whoever can answer that request \u2014 the CDN, anyone who compromises it, anyone on the network path \u2014 runs arbitrary script in this page\u0027s origin, with its session. The URL also names no version, so it resolves to whatever that origin serves at fetch time \u2014 the executed bytes can change with nobody touching this repository. 3 such include(s) across the repository\u0027s markup."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/tool/benchmark_visualiser.html"},"region":{"startLine":4}}}],"partialFingerprints":{"codehealthFindingId/v1":"167605edda07fec266d894f57992a97858b01613444a1160be55a077868202ab"}},{"ruleId":"X9","level":"note","message":{"text":"Subsumed condition operand: \u0060message.startsWith(\u0022error in strong mode\u0022)\u0060 can never decide this \u0060||\u0060 \u2014 every value satisfying \u0060message.startsWith(\u0022error in strong mode\u0022)\u0060 also satisfies \u0060message.startsWith(\u0022error in \u0022)\u0060, so the \u0060||\u0060 chain is already decided by the latter. The expression is equivalent to the chain without it, which means it is wider than it reads. Delete the dead operand, or narrow the surviving one if IT is the accident."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"pkg/front_end/test/utils/kernel_chain.dart"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"75a3cba9ca42913d5eb9a5db4b6c4ab79bf64b55764234cce626435d25e56a18"}}],"taxonomies":[{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d","organization":"MITRE","informationUri":"https://cwe.mitre.org/","isComprehensive":false,"shortDescription":{"text":"The MITRE Common Weakness Enumeration (CWE)."},"taxa":[{"id":"CWE-1059","guid":"a2381a08-60f6-9554-a8b8-f3018cfaaca5","name":"Insufficient Technical Documentation","shortDescription":{"text":"Insufficient Technical Documentation"},"helpUri":"https://cwe.mitre.org/data/definitions/1059.html"},{"id":"CWE-1357","guid":"e4d2e772-757e-0a5c-bd7d-77052949d866","name":"Reliance on Insufficiently Trustworthy Component","shortDescription":{"text":"Reliance on Insufficiently Trustworthy Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1357.html"},{"id":"CWE-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-290","guid":"379b1e66-a292-7b59-aa1e-a5bb4a6a99e9","name":"CWE-290","shortDescription":{"text":"CWE-290"},"helpUri":"https://cwe.mitre.org/data/definitions/290.html"},{"id":"CWE-319","guid":"7af97476-9f0d-4458-9163-3d2043918a1a","name":"CWE-319","shortDescription":{"text":"CWE-319"},"helpUri":"https://cwe.mitre.org/data/definitions/319.html"},{"id":"CWE-345","guid":"d80d4b65-bbbe-b65d-958e-7ac466af18f9","name":"CWE-345","shortDescription":{"text":"CWE-345"},"helpUri":"https://cwe.mitre.org/data/definitions/345.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-561","guid":"522a7ba7-45e9-ab53-9088-45d86e04b53a","name":"CWE-561","shortDescription":{"text":"CWE-561"},"helpUri":"https://cwe.mitre.org/data/definitions/561.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-829","guid":"13c33925-97fb-5a5e-b40c-56d328b8a4d7","name":"CWE-829","shortDescription":{"text":"CWE-829"},"helpUri":"https://cwe.mitre.org/data/definitions/829.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"},{"id":"CWE-95","guid":"400bba4e-483c-5c50-a695-114fa9168003","name":"CWE-95","shortDescription":{"text":"CWE-95"},"helpUri":"https://cwe.mitre.org/data/definitions/95.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":16,"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."]}]}